if (PORT_Memcmp(digest->data, cx->digest, digest->len)) {
if (PORT_Memcmp(digest->data, cx->u.rsadigest, digest->len)) {
VFY_VerifyDigest(SECItem *digest, SECKEYPublicKey *key, SECItem *sig,		 SECOidTag algid, void *wincx){    SECStatus rv;    VFYContext *cx;    SECItem dsasig;#ifdef NSS_ENABLE_ECC    SECItem ecdsasig;#endif /* NSS_ENABLE_ECC */    rv = SECFailure;    cx = VFY_CreateContext(key, sig, algid, wincx);    if (cx != NULL) {	switch (key->keyType) {	case rsaKey:	    if (PORT_Memcmp(digest->data, cx->digest, digest->len)) {		PORT_SetError(SEC_ERROR_BAD_SIGNATURE);	    } else {		rv = SECSuccess;	    }	    break;	case fortezzaKey:	case dsaKey:	    dsasig.data = &cx->digest[0];	    dsasig.len = DSA_SIGNATURE_LEN; /* magic size of dsa signature */	    if (PK11_Verify(cx->key, &dsasig, digest, cx->wincx) != SECSuccess) {		PORT_SetError(SEC_ERROR_BAD_SIGNATURE);	    } else {		rv = SECSuccess;	    }	    break;#ifdef NSS_ENABLE_ECC	case ecKey:	    ecdsasig.data = &cx->ecdsadigest[0];	    ecdsasig.len = SECKEY_PublicKeyStrength(cx->key) * 2;	    if (PK11_Verify(cx->key, &ecdsasig, digest, cx->wincx) 		!= SECSuccess) {	        PORT_SetError(SEC_ERROR_BAD_SIGNATURE);	    } else {		rv = SECSuccess;	    }	    break;#endif /* NSS_ENABLE_ECC */	default:	    break;	}	VFY_DestroyContext(cx, PR_TRUE);    }    return rv;}