0

我必须在 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。”

4

1 回答 1

0

对于 HMAC,您需要使用以下之一:

  • 通用密钥 ( CKK_GENERIC_SECRET)

  • 指定 HMAC-SHA256 密钥 ( CKK_SHA256_HMAC)

CKK_AES不能使用AES 密钥 ( ) -- 引用PKCS#11 标准中的HMAC 机制部分:

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

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

祝你的项目好运!

于 2021-02-07T22:26:19.850 回答