使用javacardx.security.derivation的Javacard密钥派生(hmac)

使用javacardx.security.derivation的Javacard密钥派生(hmac),java,hmac,javacard,hkdf,Java,Hmac,Javacard,Hkdf,我试图弄清楚javacard派生函数是如何工作的,我必须承认我对如何设置这些函数一无所知 我认为可以使用派生函数派生密钥,使用ALG_KDF_HKDF我可以指定所需的基于HMAC的密钥派生。然而,我不明白我该如何设置秘密和盐。KDFHmacSpec接口仅指定getter。它没有指定如何设置值。到目前为止,我还不知道如何设置这些 我想使用它根据一个秘密和一些随机的公共值生成XOR密钥(最好是指定长度的) 这是针对javacard 3+。我能想到的一件事是它确实是一个接口。可以在自己定义的类中实现的

我试图弄清楚javacard派生函数是如何工作的,我必须承认我对如何设置这些函数一无所知

我认为可以使用派生函数派生密钥,使用ALG_KDF_HKDF我可以指定所需的基于HMAC的密钥派生。然而,我不明白我该如何设置秘密和盐。KDFHmacSpec接口仅指定getter。它没有指定如何设置值。到目前为止,我还不知道如何设置这些

我想使用它根据一个秘密和一些随机的公共值生成XOR密钥(最好是指定长度的)


这是针对javacard 3+。

我能想到的一件事是它确实是一个
接口。可以在自己定义的类中实现的接口

这有一个缺点,即您可能必须将salt之类的数组(在密钥派生函数中并不经常使用salt)复制到临时内存数组中

其优点是,如果不需要更改其他键派生参数,则它们可以只是类定义的一部分


我建议您为HKDF函数创建一个可重用的可变类。

请注意,这是3.1规范的一部分。Java卡必须支持3.1或更高版本,并为可用的功能提供算法实现。因此,请检查兼容产品和/或规格表的可用性。你试过我的建议了吗?有更新吗?这可能对其他人非常有用,但目前我无法验证我的答案是否正确。如果你用不同的方法解决了这个问题,那么请发布一个答案,并很高兴对答案进行投票。