コード例 #1
0
ファイル: hwf_obj.c プロジェクト: apprisi/illumos-gate
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));
}
コード例 #2
0
ファイル: dp_obj.c プロジェクト: tuchscherer/opencryptoki
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 );


}
コード例 #3
0
ファイル: tpm_util.c プロジェクト: hcl2014/opencryptoki
/* 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;
}
コード例 #4
0
ファイル: hwf_obj.c プロジェクト: apprisi/illumos-gate
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));
}
コード例 #5
0
ファイル: hwf_obj.c プロジェクト: hcl2014/opencryptoki
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 );
}
コード例 #6
0
ファイル: dp_obj.c プロジェクト: tuchscherer/opencryptoki
// 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 );
}