我想使用javacard.security.Signature类中的ALG_HMAC_SHA1方法。但是我的javacard框架版本是2.2.1,所以Signature类在这个版本中不包括这个方法。包括2.2.2之后的方法。是否可以在不升级框架版本的情况下使用这种方法?
您可以始终使用在2.2.2框架中为常量ALG_HMAC_SHA1
(=(byte)24
)找到的值,并将其传递给Signature.getInstance()
方法。因此,使用值不是问题。但是,要在其上运行小程序的智能卡硬件需要支持此算法,以便您能够使用。
因此,如果您的智能卡硬件支持JC 2.2.1,则使用值ALG_HMAC_SHA1
调用getInstance()
方法通常会导致CryptoException
,原因(CryptoException.NO_SUCH_ALGORITHM
)表示不支持该算法,JC 2.2.1不支持任何HMAC算法)。直接使用公共常量可能会导致上传或安装失败。
这里需要明确的是,我并不是说为不同的框架版本编译可能会突然解决你的问题。我建议您可以而不是简单地升级卡上可用的功能。
HMAC算法不是什么大不了的。只要你的卡支持SHA-1,你就可以自己简单地实现算法。详细信息请参见RFC2104,测试向量请参见RFC2202。
BTW:你不能"升级框架版本";JavaCard的操作系统和JavaCard框架通常是不可变的(存储在ROM中)。你只能买一张不同的卡。。。