1# crypto_mac.h 2 3<!--Kit: Crypto Architecture Kit--> 4<!--Subsystem: Security--> 5<!--Owner: @zxz--3--> 6<!--Designer: @lanming--> 7<!--Tester: @PAFT--> 8<!--Adviser: @zengyawen--> 9 10## 概述 11 12定义MAC接口。 13 14**引用文件:** <CryptoArchitectureKit/crypto_mac.h> 15 16**库:** libohcrypto.so 17 18**系统能力:** SystemCapability.Security.CryptoFramework 19 20**起始版本:** 20 21 22**相关模块:** [CryptoMacApi](capi-cryptomacapi.md) 23 24## 汇总 25 26### 结构体 27 28| 名称 | typedef关键字 | 描述 | 29| -- | -- | -- | 30| [OH_CryptoMac](capi-cryptomacapi-oh-cryptomac.md) | OH_CryptoMac | 定义MAC结构。 | 31 32### 枚举 33 34| 名称 | typedef关键字 | 描述 | 35| -- | -- | -- | 36| [CryptoMac_ParamType](#cryptomac_paramtype) | CryptoMac_ParamType | 定义MAC算法参数类型。 | 37 38### 函数 39 40| 名称 | 描述 | 41| -- | -- | 42| [OH_Crypto_ErrCode OH_CryptoMac_Create(const char *algoName, OH_CryptoMac **ctx)](#oh_cryptomac_create) | 根据给定的算法名称创建MAC实例。 | 43| [OH_Crypto_ErrCode OH_CryptoMac_SetParam(OH_CryptoMac *ctx, CryptoMac_ParamType type, const Crypto_DataBlob *value)](#oh_cryptomac_setparam) | 设置MAC参数。 | 44| [OH_Crypto_ErrCode OH_CryptoMac_Init(OH_CryptoMac *ctx, const OH_CryptoSymKey *key)](#oh_cryptomac_init) | 使用对称密钥初始化MAC实例。 | 45| [OH_Crypto_ErrCode OH_CryptoMac_Update(OH_CryptoMac *ctx, const Crypto_DataBlob *in)](#oh_cryptomac_update) | 更新MAC实例。 | 46| [OH_Crypto_ErrCode OH_CryptoMac_Final(OH_CryptoMac *ctx, Crypto_DataBlob *out)](#oh_cryptomac_final) | 完成MAC操作。 | 47| [OH_Crypto_ErrCode OH_CryptoMac_GetLength(OH_CryptoMac *ctx, uint32_t *length)](#oh_cryptomac_getlength) | 获取MAC长度。 | 48| [void OH_CryptoMac_Destroy(OH_CryptoMac *ctx)](#oh_cryptomac_destroy) | 销毁MAC实例。 | 49 50## 枚举类型说明 51 52### CryptoMac_ParamType 53 54``` 55enum CryptoMac_ParamType 56``` 57 58**描述** 59 60定义MAC算法参数类型。 61 62**起始版本:** 20 63 64| 枚举项 | 描述 | 65| -- | -- | 66| CRYPTO_MAC_DIGEST_NAME_STR = 0 | HMAC消息认证码使用的摘要函数的算法名称,例如SHA256。 | 67| CRYPTO_MAC_CIPHER_NAME_STR = 1 | CMAC消息认证码使用的对称加密算法名称,例如AES256。 | 68 69 70## 函数说明 71 72### OH_CryptoMac_Create() 73 74``` 75OH_Crypto_ErrCode OH_CryptoMac_Create(const char *algoName, OH_CryptoMac **ctx) 76``` 77 78**描述** 79 80根据给定的算法名称创建MAC实例。 81 82**起始版本:** 20 83 84 85**参数:** 86 87| 参数项 | 描述 | 88| -- | -- | 89| const char *algoName | 用于生成MAC实例的算法名称。<br> 例如"HMAC"、"CMAC"。 | 90| [OH_CryptoMac](capi-cryptomacapi-oh-cryptomac.md) **ctx | MAC实例。 | 91 92**返回:** 93 94| 类型 | 说明 | 95| -- | -- | 96| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERATION_ERROR:调用三方算法库API出错。 | 97 98### OH_CryptoMac_SetParam() 99 100``` 101OH_Crypto_ErrCode OH_CryptoMac_SetParam(OH_CryptoMac *ctx, CryptoMac_ParamType type, const Crypto_DataBlob *value) 102``` 103 104**描述** 105 106设置MAC参数。 107 108**起始版本:** 20 109 110 111**参数:** 112 113| 参数项 | 描述 | 114| -- | -- | 115| [OH_CryptoMac](capi-cryptomacapi-oh-cryptomac.md) *ctx | MAC实例。 | 116| [CryptoMac_ParamType](#cryptomac_paramtype) type | MAC参数类型。 | 117| [const Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *value | MAC参数。 | 118 119**返回:** 120 121| 类型 | 说明 | 122| -- | -- | 123| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERATION_ERROR:调用三方算法库API出错。 | 124 125### OH_CryptoMac_Init() 126 127``` 128OH_Crypto_ErrCode OH_CryptoMac_Init(OH_CryptoMac *ctx, const OH_CryptoSymKey *key) 129``` 130 131**描述** 132 133使用对称密钥初始化MAC实例。 134 135**起始版本:** 20 136 137 138**参数:** 139 140| 参数项 | 描述 | 141| -- | -- | 142| [OH_CryptoMac](capi-cryptomacapi-oh-cryptomac.md) *ctx | MAC实例。 | 143| [const OH_CryptoSymKey](capi-cryptosymkeyapi-oh-cryptosymkey.md) *key | 对称密钥。 | 144 145**返回:** 146 147| 类型 | 说明 | 148| -- | -- | 149| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERATION_ERROR:调用三方算法库API出错。 | 150 151**参考:** 152 153[OH_CryptoMac_Update](#oh_cryptomac_update) 154 155[OH_CryptoMac_Final](#oh_cryptomac_final) 156 157 158### OH_CryptoMac_Update() 159 160``` 161OH_Crypto_ErrCode OH_CryptoMac_Update(OH_CryptoMac *ctx, const Crypto_DataBlob *in) 162``` 163 164**描述** 165 166更新MAC实例。 167 168**起始版本:** 20 169 170 171**参数:** 172 173| 参数项 | 描述 | 174| -- | -- | 175| [OH_CryptoMac](capi-cryptomacapi-oh-cryptomac.md) *ctx | MAC实例。 | 176| [const Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *in | 需要更新的数据。 | 177 178**返回:** 179 180| 类型 | 说明 | 181| -- | -- | 182| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERATION_ERROR:调用三方算法库API出错。 | 183 184**参考:** 185 186[OH_CryptoMac_Init](#oh_cryptomac_init) 187 188[OH_CryptoMac_Final](#oh_cryptomac_final) 189 190 191### OH_CryptoMac_Final() 192 193``` 194OH_Crypto_ErrCode OH_CryptoMac_Final(OH_CryptoMac *ctx, Crypto_DataBlob *out) 195``` 196 197**描述** 198 199完成MAC操作。 200 201**起始版本:** 20 202 203 204**参数:** 205 206| 参数项 | 描述 | 207| -- | -- | 208| [OH_CryptoMac](capi-cryptomacapi-oh-cryptomac.md) *ctx | MAC实例。 | 209| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *out | MAC值。 | 210 211**返回:** 212 213| 类型 | 说明 | 214| -- | -- | 215| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERATION_ERROR:调用三方算法库API出错。 | 216 217**参考:** 218 219[OH_CryptoMac_Init](#oh_cryptomac_init) 220 221[OH_CryptoMac_Update](#oh_cryptomac_update) 222 223 224### OH_CryptoMac_GetLength() 225 226``` 227OH_Crypto_ErrCode OH_CryptoMac_GetLength(OH_CryptoMac *ctx, uint32_t *length) 228``` 229 230**描述** 231 232获取MAC长度。 233 234**起始版本:** 20 235 236 237**参数:** 238 239| 参数项 | 描述 | 240| -- | -- | 241| [OH_CryptoMac](capi-cryptomacapi-oh-cryptomac.md) *ctx | MAC实例。 | 242| uint32_t *length | MAC长度。 | 243 244**返回:** 245 246| 类型 | 说明 | 247| -- | -- | 248| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERATION_ERROR:调用三方算法库API出错。 | 249 250### OH_CryptoMac_Destroy() 251 252``` 253void OH_CryptoMac_Destroy(OH_CryptoMac *ctx) 254``` 255 256**描述** 257 258销毁MAC实例。 259 260**起始版本:** 20 261 262 263**参数:** 264 265| 参数项 | 描述 | 266| -- | -- | 267| [OH_CryptoMac](capi-cryptomacapi-oh-cryptomac.md) *ctx | MAC实例。 | 268 269 270