如何解决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_INVALID”
Utimaco 日志:“机制 CKM_SHA256_HMAC_GENERAL 不适合密钥 t。”
解决方法
对于 HMAC,您需要使用以下之一:
-
通用密钥 (
CKK_GENERIC_SECRET
) -
指定的 HMAC-SHA256 密钥 (
CKK_SHA256_HMAC
)
无法使用 AES 密钥 (CKK_AES
) -- 引用 PKCS#11 标准中的 HMAC mechanisms 部分:
HMAC 密钥应对应于 PKCS11 通用密钥类型或机制特定的密钥类型(参见机制定义)。可以使用 C_CreateObject 或 C_GenerateKey 创建此类用于 HMAC 操作的密钥。
只需将您的 HMAC 密钥生成或导入为 CKK_GENERIC_SECRET
或 CKK_SHA256_HMAC
。
祝你的项目好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。