• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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