SM4-GCM设置AAD
SM4-GCM模式支持设置用户AAD数据,设置方法为:第一次调用Update接口时参数out传NULL,参数in传aad的buffer,以下是代码示例。
EVP_CIPHER_CTX* ectx = EVP_CIPHER_CTX_new();
EVP_EncryptInit_ex(ectx, gcm, g_engine, g_key16, g_iv16);
int len;
// 首次update时 out 传NULL,表示设置aad数据
ASSERT(EVP_EncryptUpdate(ectx, NULL, &len, aad, sizeof(aad)) == 1, "succeed set aad in");// 设置aad
// 第二次正常update
EVP_EncryptUpdate(ectx, ct, &outl, pt, 32);
totl = outl;
// 当已经正常update后,不允许再更新aad数据
ASSERT(EVP_EncryptUpdate(ectx, NULL, &len, aad, sizeof(aad)) == 0, "can't set add in during update");
EVP_EncryptFinal_ex(ectx, ct + totl, &outl);
设置aad数据的行为与OpenSSL原生AES-GCM模式相同。
父主题: 常见问题