我在设置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 = ¶ms;
mechanismAES.ulParameterLen = sizeof(params);
C_EncryptInit(hSession, &mechanismAES, hKey);
答案 0 :(得分:1)
.ulTagBits=0
很可能就是这个问题。标签大小是身份验证标记的大小。如果你把它遗漏,你就不会有经过验证的加密模式。
GCM的有效标记大小为128,120,112,104或96位。某些API可以接受较小的标记大小(例如64位)。但是,强烈建议您保持128位标签大小,因为GCM的安全性很大程度上取决于它。
如果错误没有消失,您可能还需要指定IV len或IV位。