---
title: SM4-GCM设置AAD
description: "SM4-GCM模式支持设置用户AAD数据，设置方法为：第一次调用Update接口时参数out传NULL，参数in传aad的buffer，以下是代码示例。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcctrustzone/cca/devg/Kunpeng_ommercialcryptography_16_0049.html
sourcePath: /source/zh/kunpengcctrustzone/cca/devg/Kunpeng_ommercialcryptography_16_0049.html
indexId: c25029fc9fed5c242e61216ed7130fde62dd7bc6188ee150844eb4fb03ed006681
---
# 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模式相同。
