Параметры механизма AES GCM в C - PullRequest
0 голосов
/ 08 мая 2018

У меня проблема с настройкой параметров механизма 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 голосов
/ 10 мая 2018

.ulTagBits=0 очень вероятно, проблема. Размер тега равен размеру тега аутентификации . У вас не будет аутентифицированного режима шифрования, если вы его опустите.

Допустимые размеры тегов GCM: 128, 120, 112, 104 или 96 бит. Некоторые API могут принимать меньшие размеры тегов, например 64 бита. Однако настоятельно рекомендуется придерживаться 128-битного размера тега, так как от этого сильно зависит безопасность GCM.

Вы также можете указать биты len len или IV, если ошибка не исчезнет.

...