if (!cert || !issuer) {
if (!cert || !issuer) { PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
CERT_CheckCRL(CERTCertificate* cert, CERTCertificate* issuer, SECItem* dp,              int64 t, void* wincx){    PRBool lockedwrite = PR_FALSE;    SECStatus rv = SECSuccess;    CRLDPCache* dpcache = NULL;    if (!cert || !issuer) {        return SECFailure;    }    if (SECSuccess != CERT_CheckCertValidTimes(issuer, t, PR_FALSE)) {        /* we won't be able to check the CRL's signature if the issuer cert           is expired as of the time we are verifying. This may cause a valid           CRL to be cached as bad. short-circuit to avoid this case. */        PORT_SetError(SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE);        return SECFailure;    }    rv = AcquireDPCache(issuer, &issuer->derSubject, dp, t, wincx, &dpcache, &lockedwrite);        if (SECSuccess == rv) {        /* now look up the certificate SN in the DP cache's CRL */        CERTCrlEntry* entry = NULL;        rv = DPCache_Lookup(dpcache, &cert->serialNumber, &entry);        if (SECSuccess == rv && entry) {            /* check the time if we have one */            if (entry->revocationDate.data && entry->revocationDate.len) {                int64 revocationDate = 0;                if (SECSuccess == DER_DecodeTimeChoice(&revocationDate,                                                        &entry->revocationDate)) {                    /* we got a good revocation date, only consider the                       certificate revoked if the time we are inquiring about                       is past the revocation date */                    if (t>=revocationDate) {                        rv = SECFailure;                    }                } else {                    /* invalid revocation date, consider the certificate                       permanently revoked */                    rv = SECFailure;                }            } else {                /* no revocation date, certificate is permanently revoked */                rv = SECFailure;            }            if (SECFailure == rv) {                PORT_SetError(SEC_ERROR_REVOKED_CERTIFICATE);            }        }    }    ReleaseDPCache(dpcache, lockedwrite);    return rv;}