C中的AES GCM机制参数

时间:2018-05-08 18:35:45

标签: aes pkcs#11 aes-gcm

我在设置AES GCM机制的参数时遇到问题。 我收到了以下错误

#define CKR_MECHANISM_PARAM_INVALID           0x00000071UL

我做错了什么?

CK_BYTE iv[12] = { 0 };    
CK_MECHANISM mechanismAES = { CKM_AES_GCM, NULL_PTR, 0 };
CK_GCM_PARAMS params = {
    .pIv=iv,
    .ulIvLen=12,
    .ulIvBits=96,
    .pAAD=NULL,
    .ulAADLen=0,
    .ulTagBits=0
};
mechanismAES.pParameter = &params;
mechanismAES.ulParameterLen = sizeof(params);
C_EncryptInit(hSession, &mechanismAES, hKey);

1 个答案:

答案 0 :(得分:1)

.ulTagBits=0很可能就是这个问题。标签大小是身份验证标记的大小。如果你把它遗漏,你就不会有经过验证的加密模式。

GCM的有效标记大小为128,120,112,104或96位。某些API可以接受较小的标记大小(例如64位)。但是,强烈建议您保持128位标签大小,因为GCM的安全性很大程度上取决于它。

如果错误没有消失,您可能还需要指定IV len或IV位。