# CryptoSymCipherApi ## 概述 为应用提供对称密钥加解密相关接口功能。 **起始版本:** 12 ## 汇总 ### 文件 | 名称 | 描述 | | -------- | -------- | | [crypto_sym_cipher.h](crypto__sym__cipher_8h.md) | 定义对称密钥加解密接口。 | ### 类型定义 | 名称 | 描述 | | -------- | -------- | | typedef struct [OH_CryptoSymCipher](#oh_cryptosymcipher) [OH_CryptoSymCipher](#oh_cryptosymcipher) | 定义对称加解密结构体。 | | typedef struct [OH_CryptoSymCipherParams](#oh_cryptosymcipherparams) [OH_CryptoSymCipherParams](#oh_cryptosymcipherparams) | 定义对称加解密参数结构体。 | ### 枚举 | 名称 | 描述 | | -------- | -------- | | [CryptoSymCipher_ParamsType](#cryptosymcipher_paramstype) {
CRYPTO_IV_DATABLOB = 100,
CRYPTO_AAD_DATABLOB = 101,
CRYPTO_TAG_DATABLOB = 102
} | 定义对称加解密参数类型。 | ### 函数 | 名称 | 描述 | | -------- | -------- | | [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoSymCipherParams_Create](#oh_cryptosymcipherparams_create) ([OH_CryptoSymCipherParams](#oh_cryptosymcipherparams) \*\*params) | 创建对称密钥加解密参数实例。 | | [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoSymCipherParams_SetParam](#oh_cryptosymcipherparams_setparam) ([OH_CryptoSymCipherParams](#oh_cryptosymcipherparams) \*params, [CryptoSymCipher_ParamsType](#cryptosymcipher_paramstype) paramsType, [Crypto_DataBlob](_crypto___data_blob.md) \*value) | 设置对称密钥加解密参数。 | | void [OH_CryptoSymCipherParams_Destroy](#oh_cryptosymcipherparams_destroy) ([OH_CryptoSymCipherParams](#oh_cryptosymcipherparams) \*params) | 销毁对称密钥加解密参数实例。 | | [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoSymCipher_Create](#oh_cryptosymcipher_create) (const char \*algoName, [OH_CryptoSymCipher](#oh_cryptosymcipher) \*\*ctx) | 根据给定的算法名称创建对称密钥加解密实例。 | | [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoSymCipher_Init](#oh_cryptosymcipher_init) ([OH_CryptoSymCipher](#oh_cryptosymcipher) \*ctx, [Crypto_CipherMode](_crypto_common_api.md#crypto_ciphermode) mod, [OH_CryptoSymKey](_crypto_sym_key_api.md#oh_cryptosymkey) \*key, [OH_CryptoSymCipherParams](#oh_cryptosymcipherparams) \*params) | 初始化对称密钥加解密实例。 | | [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoSymCipher_Update](#oh_cryptosymcipher_update) ([OH_CryptoSymCipher](#oh_cryptosymcipher) \*ctx, [Crypto_DataBlob](_crypto___data_blob.md) \*in, [Crypto_DataBlob](_crypto___data_blob.md) \*out) | 更新加密或者解密数据操作。 | | [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoSymCipher_Final](#oh_cryptosymcipher_final) ([OH_CryptoSymCipher](#oh_cryptosymcipher) \*ctx, [Crypto_DataBlob](_crypto___data_blob.md) \*in, [Crypto_DataBlob](_crypto___data_blob.md) \*out) | 输出 加/解密(分组模式产生的)剩余数据,最后结束加密或者解密数据操作 | | const char \* [OH_CryptoSymCipher_GetAlgoName](#oh_cryptosymcipher_getalgoname) ([OH_CryptoSymCipher](#oh_cryptosymcipher) \*ctx) | 获取对称密钥加解密实例的算法名称。 | | void [OH_CryptoSymCipher_Destroy](#oh_cryptosymcipher_destroy) ([OH_CryptoSymCipher](#oh_cryptosymcipher) \*ctx) | 销毁对称密钥加解密实例。 | ## 类型定义说明 ### OH_CryptoSymCipher ``` typedef struct OH_CryptoSymCipherOH_CryptoSymCipher ``` **描述** 定义对称加解密结构体。 **起始版本:** 12 ### OH_CryptoSymCipherParams ``` typedef struct OH_CryptoSymCipherParamsOH_CryptoSymCipherParams ``` **描述** 定义对称加解密参数结构体。 **起始版本:** 12 ## 枚举类型说明 ### CryptoSymCipher_ParamsType ``` enum CryptoSymCipher_ParamsType ``` **描述** 定义对称加解密参数类型。 **起始版本:** 12 | 枚举值 | 描述 | | -------- | -------- | | CRYPTO_IV_DATABLOB | 加解密参数iv。 | | CRYPTO_AAD_DATABLOB | 加解密参数aad。 | | CRYPTO_TAG_DATABLOB | 加解密参数authTag。 | ## 函数说明 ### OH_CryptoSymCipher_Create() ``` OH_Crypto_ErrCode OH_CryptoSymCipher_Create (const char *algoName, OH_CryptoSymCipher **ctx ) ``` **描述** 根据给定的算法名称创建对称密钥加解密实例。 **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | algoName | 用于生成对称密钥加解密实例的算法名称。例如: AES128\|GCM\|PKCS7. | | ctx | 指向对称密钥加解密实例的指针。 | **返回:** [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 0 - 成功。 401 - 参数无效。 801 - 操作不支持。 17620001 - 内存错误。 17630001 - 调用三方算法库API出错。 ### OH_CryptoSymCipher_Destroy() ``` void OH_CryptoSymCipher_Destroy (OH_CryptoSymCipher *ctx) ``` **描述** 销毁对称密钥加解密实例。 **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | ctx | 指向对称密钥加解密实例。 | ### OH_CryptoSymCipher_Final() ``` OH_Crypto_ErrCode OH_CryptoSymCipher_Final (OH_CryptoSymCipher *ctx, Crypto_DataBlob *in, Crypto_DataBlob *out ) ``` **描述** 输出 加/解密(分组模式产生的)剩余数据,最后结束加密或者解密数据操作。 **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | ctx | 指向对称密钥加解密实例。 | | in | 要加密或解密的数据。 | | out | 返回剩余数据的加/解密结果。 | **返回:** [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 0 - 成功。 401 - 参数无效。 801 - 操作不支持。 17620001 - 内存错误。 17630001 - 调用三方算法库API出错。 **参见:** [OH_CryptoSymCipher_Init](#oh_cryptosymcipher_init) [OH_CryptoSymCipher_Update](#oh_cryptosymcipher_update) ### OH_CryptoSymCipher_GetAlgoName() ``` const char* OH_CryptoSymCipher_GetAlgoName (OH_CryptoSymCipher *ctx) ``` **描述** 获取对称密钥加解密实例的算法名称。 **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | ctx | 指向对称密钥加解密实例。 | **返回:** 返回对称加解密算法名称。 ### OH_CryptoSymCipher_Init() ``` OH_Crypto_ErrCode OH_CryptoSymCipher_Init (OH_CryptoSymCipher *ctx, Crypto_CipherMode mod, OH_CryptoSymKey *key, OH_CryptoSymCipherParams *params ) ``` **描述** 初始化对称密钥加解密实例。 **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | ctx | 指向对称密钥加解密实例。 | | mod | 加解密模式。 | | key | 对称密钥。 | | params | 指向对称密钥参数实例。 | **返回:** [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 0 - 成功。 401 - 参数无效。 801 - 操作不支持。 17620001 - 内存错误。 17630001 - 调用三方算法库API出错。 ### OH_CryptoSymCipher_Update() ``` OH_Crypto_ErrCode OH_CryptoSymCipher_Update (OH_CryptoSymCipher *ctx, Crypto_DataBlob *in, Crypto_DataBlob *out ) ``` **描述** 更新加密或者解密数据操作。 **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | ctx | 指向对称密钥加解密实例。 | | in | 加密或者解密的数据。 | | out | 更新的结果。 | **返回:** [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 0 - 成功。 401 - 参数无效。 801 - 操作不支持。 17620001 - 内存错误。 17630001 - 调用三方算法库API出错。 ### OH_CryptoSymCipherParams_Create() ``` OH_Crypto_ErrCode OH_CryptoSymCipherParams_Create (OH_CryptoSymCipherParams **params) ``` **描述** 创建对称密钥加解密参数实例。 **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | params | 指向对称加解密参数实例的指针。 | **返回:** [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 0 - 成功。 401 - 参数无效。 801 - 操作不支持。 17620001 - 内存错误。 17630001 - 调用三方算法库API出错。 ### OH_CryptoSymCipherParams_Destroy() ``` void OH_CryptoSymCipherParams_Destroy (OH_CryptoSymCipherParams *params) ``` **描述** 销毁对称密钥加解密参数实例。 **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | params | 指向对称密钥加解密参数实例。 | ### OH_CryptoSymCipherParams_SetParam() ``` OH_Crypto_ErrCode OH_CryptoSymCipherParams_SetParam (OH_CryptoSymCipherParams *params, CryptoSymCipher_ParamsType paramsType, Crypto_DataBlob *value ) ``` **描述** 设置对称密钥加解密参数。 **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | params | 指向对称密钥加解密参数实例。 | | paramsType | 设置对称密钥加解密参数类型。 | | value | 设置的参数值。 | **返回:** [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 0 - 成功。 401 - 参数无效。 801 - 操作不支持。 17620001 - 内存错误。 17630001 - 调用三方算法库API出错。