在PKCS#11中使用Key对象句柄

时间:2013-12-05 20:59:27

标签: c encryption pkcs#11 hsm

我正在尝试使用供应商提供的PKCS#11功能与HSM进行交互。 我使用下面的一系列函数来生成密钥,加密和解密数据。 以下序列效果很好。

  1. C_Initialize
  2. C_OpenSession
  3. C_Login
  4. C_GenerateKey //3DES KEY
  5. C_EncryptInit
  6. C_Encrypt
  7. C_DecryptInit
  8. C_Decrypt
  9. C_Logout
  10. C_CloseSession
  11. 我的问题:

    1. 使用C_Logout& C_CloseSession有没有办法通过使用相同的登录凭据再次注销和打开会话来再次重用相同的KEY(之前生成的)?

    2. 当我使用C_CreateObject时,是否会创建会话对象并使用C_CloseSession将其销毁?

1 个答案:

答案 0 :(得分:3)

  

问题:使用C_Logout& C_CloseSession是否有一种方法可以通过使用相同的登录凭据再次注销和打开会话来再次重用相同的KEY(之前生成的)?

是的,只需将CKA_TOKEN设置为CK_TRUE并使用CKA_LABEL提供标签即可使用C_FindObjects进行搜索。


  

问题:当我使用C_CreateObject时,是否会创建会话对象并使用C_CloseSession将其销毁?

嗯,是的,根据PKCS#11规范(v2.20,10.4,表21):

  如果object是令牌对象,则

CKA_TOKENCK_TRUE; CK_FALSE如果object是会话   宾语。默认值为CK_FALSE


请注意,您的令牌可能不允许设置所有可能的属性或属性组合,并且可能具有内存和其他限制。