首页 > 解决方案 > PKCS#11 API C_FindObjectsInit 上 CKO_SECRET_KEY AES 密钥段错误

问题描述

我正在使用 PKCS#11 使用 C_GenerateKey 创建一个 AES 256 位密钥。然后我使用 C_FindObjectsxxx 搜索密钥句柄并获取段错误。

这是代码

static int find_object(CK_SESSION_HANDLE sess, CK_OBJECT_CLASS cls, CK_OBJECT_HANDLE_PTR ret, const unsigned char *id, size_t id_len, int obj_index)
{
      CK_ATTRIBUTE attrs[2];
      unsigned int nattrs = 0;
      CK_RV rv;

      attrs[0].type = CKA_CLASS;
      attrs[0].pValue = &cls;
      attrs[0].ulValueLen = sizeof(cls);
      nattrs++;

      rv = pfunc11->C_FindObjectsInit(sess, attrs, nattrs);    --> segfault

……

对 C_GenerateKey 的调用似乎成功,否则将不会调用此代码。

这是对上述代码的调用 -

CK_OBJECT_HANDLE key;
if (find_object(session, CKO_SECRET_KEY, &key, id, sizeof(id), 0))
{
   printf("Key handle found\n");
}

标签: segmentation-faultpkcs#11

解决方案


推荐阅读