static CK_BBOOL builtins_attrmatch ( CK_ATTRIBUTE_PTR a, const NSSItem *b ) { PRBool prb; if( a->ulValueLen != b->size ) { /* match a decoded serial number */ if ((a->type == CKA_SERIAL_NUMBER) && (a->ulValueLen < b->size)) { int len; unsigned char *data; len = builtins_derUnwrapInt(b->data,b->size,&data); if ((len == a->ulValueLen) && nsslibc_memequal(a->pValue, data, len, (PRStatus *)NULL)) { return CK_TRUE; } } return CK_FALSE; } prb = nsslibc_memequal(a->pValue, b->data, b->size, (PRStatus *)NULL); if( PR_TRUE == prb ) { return CK_TRUE; } else { return CK_FALSE; } }
NSS_IMPLEMENT PRBool nssUTF8_Equal(const NSSUTF8 *a, const NSSUTF8 *b, PRStatus *statusOpt) { PRUint32 la, lb; #ifdef NSSDEBUG if (((const NSSUTF8 *)NULL == a) || ((const NSSUTF8 *)NULL == b)) { nss_SetError(NSS_ERROR_INVALID_POINTER); if ((PRStatus *)NULL != statusOpt) { *statusOpt = PR_FAILURE; } return PR_FALSE; } #endif /* NSSDEBUG */ la = nssUTF8_Size(a, statusOpt); if (0 == la) { return PR_FALSE; } lb = nssUTF8_Size(b, statusOpt); if (0 == lb) { return PR_FALSE; } if (la != lb) { return PR_FALSE; } return nsslibc_memequal(a, b, la, statusOpt); }
NSS_IMPLEMENT PRBool nssItem_Equal ( const NSSItem *one, const NSSItem *two, PRStatus *statusOpt ) { if( (PRStatus *)NULL != statusOpt ) { *statusOpt = PR_SUCCESS; } if( ((const NSSItem *)NULL == one) && ((const NSSItem *)NULL == two) ) { return PR_TRUE; } if( ((const NSSItem *)NULL == one) || ((const NSSItem *)NULL == two) ) { return PR_FALSE; } if( one->size != two->size ) { return PR_FALSE; } return nsslibc_memequal(one->data, two->data, one->size, statusOpt); }
static CK_BBOOL ckmk_attrmatch ( CK_ATTRIBUTE_PTR a, ckmkInternalObject *o ) { PRBool prb; const NSSItem *b; CK_RV error; b = nss_ckmk_FetchAttribute(o, a->type, &error); if (b == NULL) { return CK_FALSE; } if( a->ulValueLen != b->size ) { /* match a decoded serial number */ if ((a->type == CKA_SERIAL_NUMBER) && (a->ulValueLen < b->size)) { int len; unsigned char *data; data = nss_ckmk_DERUnwrap(b->data, b->size, &len, NULL); if ((len == a->ulValueLen) && nsslibc_memequal(a->pValue, data, len, (PRStatus *)NULL)) { return CK_TRUE; } } return CK_FALSE; } prb = nsslibc_memequal(a->pValue, b->data, b->size, (PRStatus *)NULL); if( PR_TRUE == prb ) { return CK_TRUE; } else { return CK_FALSE; } }
static CK_BBOOL items_match ( NSSItem *a, CK_VOID_PTR pValue, CK_ULONG ulValueLen ) { if( a->size != ulValueLen ) { return CK_FALSE; } if( PR_TRUE == nsslibc_memequal(a->data, pValue, ulValueLen, (PRStatus *)NULL) ) { return CK_TRUE; } else { return CK_FALSE; } }