CK_RV counter_check_required_attributes(TEMPLATE *tmpl, CK_ULONG mode) { CK_ATTRIBUTE *attr = NULL; CK_BBOOL found; if (mode == MODE_CREATE) { found = template_attribute_find(tmpl, CKA_VALUE, &attr); if (! found) { return (CKR_TEMPLATE_INCOMPLETE); } found = template_attribute_find(tmpl, CKA_HAS_RESET, &attr); if (! found) { return (CKR_TEMPLATE_INCOMPLETE); } found = template_attribute_find(tmpl, CKA_RESET_ON_INIT, &attr); if (! found) { return (CKR_TEMPLATE_INCOMPLETE); } } return (hwf_object_check_required_attributes(tmpl, mode)); }
CK_RV dp_dh_check_required_attributes( TEMPLATE *tmpl, CK_ULONG mode) { CK_ATTRIBUTE *attr = NULL; CK_BBOOL found; if (mode == MODE_CREATE){ found = template_attribute_find( tmpl, CKA_PRIME, &attr ); if (!found) { TRACE_ERROR("%s\n", ock_err(ERR_TEMPLATE_INCOMPLETE)); return CKR_TEMPLATE_INCOMPLETE; } found = template_attribute_find( tmpl, CKA_BASE, &attr ); if (!found) { TRACE_ERROR("%s\n", ock_err(ERR_TEMPLATE_INCOMPLETE)); return CKR_TEMPLATE_INCOMPLETE; } } else if (mode == MODE_KEYGEN) { found = template_attribute_find( tmpl, CKA_PRIME_BITS, &attr ); if (!found) { TRACE_ERROR("%s\n", ock_err(ERR_TEMPLATE_INCOMPLETE)); return CKR_TEMPLATE_INCOMPLETE; } } return dp_object_check_required_attributes( tmpl, mode ); }
/* make sure the public exponent attribute is 65537 */ CK_ULONG util_check_public_exponent(TEMPLATE *tmpl) { CK_BBOOL flag; CK_ATTRIBUTE *publ_exp_attr; CK_BYTE pubexp_bytes[] = { 1, 0, 1 }; CK_ULONG publ_exp, rc = 1; flag = template_attribute_find(tmpl, CKA_PUBLIC_EXPONENT, &publ_exp_attr); if (!flag){ OCK_LOG_DEBUG("Couldn't find public exponent attribute"); return CKR_TEMPLATE_INCOMPLETE; } switch (publ_exp_attr->ulValueLen) { case 3: rc = memcmp(pubexp_bytes, publ_exp_attr->pValue, 3); break; case sizeof(CK_ULONG): publ_exp = *((CK_ULONG *)publ_exp_attr->pValue); if (publ_exp == 65537) rc = 0; break; default: break; } return rc; }
CK_RV hwf_object_check_required_attributes(TEMPLATE *tmpl, CK_ULONG mode) { CK_ATTRIBUTE * attr = NULL; CK_BBOOL found; found = template_attribute_find(tmpl, CKA_HW_FEATURE_TYPE, &attr); if (! found) { if (mode == MODE_CREATE) { return (CKR_TEMPLATE_INCOMPLETE); } } return (template_check_required_base_attributes(tmpl, mode)); }
CK_RV clock_check_required_attributes( TEMPLATE *tmpl, CK_ULONG mode ) { CK_ATTRIBUTE *attr = NULL; CK_BBOOL found; if (mode == MODE_CREATE){ found = template_attribute_find( tmpl, CKA_VALUE, &attr ); if (!found) { OCK_LOG_ERR(ERR_TEMPLATE_INCOMPLETE); return CKR_TEMPLATE_INCOMPLETE; } } return hwf_object_check_required_attributes( tmpl, mode ); }
// dp_object_check_required_attributes() // // Check required common attributes for domain parameter objects // CK_RV dp_object_check_required_attributes( TEMPLATE *tmpl, CK_ULONG mode ) { CK_ATTRIBUTE * attr = NULL; CK_BBOOL found; found = template_attribute_find( tmpl, CKA_KEY_TYPE, &attr ); if (!found) { if (mode == MODE_CREATE){ TRACE_ERROR("%s\n", ock_err(ERR_TEMPLATE_INCOMPLETE)); return CKR_TEMPLATE_INCOMPLETE; } } return template_check_required_base_attributes( tmpl, mode ); }