3

我想使用 javacard.security.Signature 类中的 ALG_HMAC_SHA1 方法。但是我的 javacard 框架版本是 2.2.1,所以 Signature 类不包括这个版本的这个方法。它在2.2.2之后包含了这个方法。是否可以在不升级框架版本的情况下使用此方法?

4

2 回答 2

4

您始终可以只使用在 2.2.2 框架中找到的值作为常量ALG_HMAC_SHA1(= (byte)24) 并将其传递给Signature.getInstance()方法。所以使用不是问题。但是,您要在其上运行小程序的智能卡硬件需要支持此算法才能使您能够使用。

因此,如果您的智能卡硬件支持 JC 2.2.1,则getInstance()使用 的值调用该方法ALG_HMAC_SHA1通常会导致CryptoException带有原因 ( CryptoException.NO_SUCH_ALGORITHM) 指示该算法不受支持且 JC 2.2.1 不支持任何 HMAC 算法)。直接使用公共常量可能会导致上传或安装失败。

在这里要清楚一点,我并不是建议为不同的框架版本编译可能会突然解决您的问题。我宁愿建议您不能简单地升级卡上可用的功能。

于 2013-12-11T16:39:54.263 回答
3

HMAC算法没什么大不了的。只要您的卡支持 SHA-1,您就可以简单地自行实现该算法。有关详细信息,请参阅RFC2104 ,有关测试向量,请参阅RFC2202 。

顺便说一句:您不能“升级框架版本”的 JavaCard - Card OS 和 JavaCard 框架通常是不可更改的(存储在 ROM 中)。只能买不同的卡...

于 2013-12-11T21:35:57.153 回答