如何在Java中使用PKCS#11 CKM_AES_KEY_WRAP机制?
我正在使用一些PKCS#11令牌,它们坚持使用如何在Java中使用PKCS#11 CKM_AES_KEY_WRAP机制?,java,pkcs#11,jce,iaik-jce,sunpkcs11,Java,Pkcs#11,Jce,Iaik Jce,Sunpkcs11,我正在使用一些PKCS#11令牌,它们坚持使用CKM_AES_KEY_WRAP来解开AES加密密钥。在这些令牌上,CKM\u AES\u CBC和好友不支持展开 因此,在这个系统的另一端,我需要使用通过Java访问的PKCS#11令牌包装一个密钥 似乎不支持CKM\u AES\u KEY\u WRAP,据我所知。有人对在Java中实现这一点有什么建议吗?CKM_AES_KEY_WRAP是一种非常简单的机制,因此您不需要PKCS#11包装库来提供漂亮的常量或枚举成员来使用它 只要您的PKCS#11
CKM_AES_KEY_WRAP
来解开AES加密密钥。在这些令牌上,CKM\u AES\u CBC
和好友不支持展开
因此,在这个系统的另一端,我需要使用通过Java访问的PKCS#11令牌包装一个密钥
似乎不支持
CKM\u AES\u KEY\u WRAP
,据我所知。有人对在Java中实现这一点有什么建议吗?CKM_AES_KEY_WRAP
是一种非常简单的机制,因此您不需要PKCS#11包装库来提供漂亮的常量或枚举成员来使用它
只要您的PKCS#11包装器库允许您将包装机制指定为ulong
,并将其参数指定为byte[]
,就可以了。SunPKCS11非常有限,所以我会先尝试使用IAIK
以下代码示例演示了使用.NET包装器的想法:
//获取键的句柄
ObjectHandle wrappingKey=新的ObjectHandle();
ObjectHandle toBeWrappedKey=新的ObjectHandle();
//自己定义机制
ulong CKM_AES_KEY_WRAP=0x00002109;
字节[]CKM_AES_KEY_WRAP_PARAM=新字节[]{0x01、0x02、0x03、0x04、0x05、0x06、0x07、0x08};
机制机制=新机制(CKM_AES_KEY_WRAP,CKM_AES_KEY_WRAP_PARAM);
//包扎
字节[]wrappedKey=session.WrapKey(机制,wrappingKey,toBeWrappedKey);
好主意,我试试看。