我正在尝试使用供应商提供的PKCS#11功能与HSM进行交互。 我使用下面的一系列函数来生成密钥,加密和解密数据。 以下序列效果很好。
C_Initialize
C_OpenSession
C_Login
C_GenerateKey //3DES KEY
C_EncryptInit
C_Encrypt
C_DecryptInit
C_Decrypt
C_Logout
C_CloseSession
我的问题:
使用C_Logout& C_CloseSession有没有办法通过使用相同的登录凭据再次注销和打开会话来再次重用相同的KEY(之前生成的)?
当我使用C_CreateObject时,是否会创建会话对象并使用C_CloseSession将其销毁?
答案 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_TOKEN
为CK_TRUE
;CK_FALSE
如果object是会话 宾语。默认值为CK_FALSE
。
请注意,您的令牌可能不允许设置所有可能的属性或属性组合,并且可能具有内存和其他限制。