Pkcs11Interop (c#) -在Utimaco HSM模拟器上计算HMAC签名



我必须在Utimaco HSM模拟器上使用AES-256密钥生成HMAC(SHA256)签名。我使用pkcs# 11库"Pkcs11Interop"(c#)。我的源代码函数:

public static byte[] GetSignatureHmacSha256(IObjectHandle secretKeyHandle, byte[] message)
{
ICkMacGeneralParams macParams = Settings.Factories.MechanismParamsFactory.CreateCkMacGeneralParams(32);            
IMechanism mechanism = session.Factories.MechanismFactory.Create(CKM.CKM_SHA256_HMAC_GENERAL, macParams);
byte[] signature = session.Sign(mechanism, secretKeyHandle, message);            
return signature;
}

我得到这个错误消息。谁能帮帮我,我哪里做错了?

方法C_SignInit返回ckr_mechanism_invalidate

Utimaco Log:"机制CKM_SHA256_HMAC_GENERAL不适合key t.">

对于HMAC,您需要使用:

  • 通用秘密密钥(CKK_GENERIC_SECRET)

  • 指定HMAC-SHA256密钥(CKK_SHA256_HMAC)

AES密钥(CKK_AES)不能使用——引用pkcs# 11标准中的HMAC机制:

HMAC密钥应对应于PKCS11通用密钥类型或机制特定密钥类型(参见机制定义)。对于HMAC操作,可以使用C_CreateObject或C_GenerateKey创建这样的键。

只需生成或导入您的HMAC密钥为CKK_GENERIC_SECRETCKK_SHA256_HMAC

祝你项目顺利!

最新更新