开发者
资源
文档评分
Findability
Accuracy
Completeness
Readability
在线提单
论坛求助

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模式相同。