1# CryptoSignatureApi
2
3
4## 概述
5
6为应用提供验签接口。
7
8**起始版本:** 12
9
10
11## 汇总
12
13
14### 文件
15
16| 名称 | 描述 |
17| -------- | -------- |
18| [crypto_signature.h](crypto__signature_8h.md) | 定义验签接口。 |
19
20
21### 类型定义
22
23| 名称 | 描述 |
24| -------- | -------- |
25| typedef struct [OH_CryptoVerify](#oh_cryptoverify) [OH_CryptoVerify](#oh_cryptoverify) | 定义验签结构体。 |
26
27
28### 枚举
29
30| 名称 | 描述 |
31| -------- | -------- |
32| [CryptoSignature_ParamType](#cryptosignature_paramtype) {<br/>CRYPTO_PSS_MD_NAME_STR = 100, CRYPTO_PSS_MGF_NAME_STR = 101,<br/>CRYPTO_PSS_MGF1_NAME_STR = 102, CRYPTO_PSS_SALT_LEN_INT = 103,<br/>CRYPTO_PSS_TRAILER_FIELD_INT = 104, CRYPTO_SM2_USER_ID_DATABLOB = 105<br/>} | 定义签名验签参数类型。 |
33
34
35### 函数
36
37| 名称 | 描述 |
38| -------- | -------- |
39| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoVerify_Create](#oh_cryptoverify_create) (const char \*algoName, [OH_CryptoVerify](#oh_cryptoverify) \*\*verify) | 创建验签实例。 |
40| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoVerify_Init](#oh_cryptoverify_init) ([OH_CryptoVerify](#oh_cryptoverify) \*ctx, [OH_CryptoPubKey](_crypto_asym_key_api.md#oh_cryptopubkey) \*pubKey) | 传入公钥初始化验签实例。 |
41| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoVerify_Update](#oh_cryptoverify_update) ([OH_CryptoVerify](#oh_cryptoverify) \*ctx, [Crypto_DataBlob](_crypto___data_blob.md) \*in) | 追加待验签数据。 |
42| bool [OH_CryptoVerify_Final](#oh_cryptoverify_final) ([OH_CryptoVerify](#oh_cryptoverify) \*ctx, [Crypto_DataBlob](_crypto___data_blob.md) \*in, [Crypto_DataBlob](_crypto___data_blob.md) \*signData) | 对数据进行验签。 |
43| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoVerify_Recover](#oh_cryptoverify_recover) ([OH_CryptoVerify](#oh_cryptoverify) \*ctx, [Crypto_DataBlob](_crypto___data_blob.md) \*signData, [Crypto_DataBlob](_crypto___data_blob.md) \*rawSignData) | 对签名数据进行恢复操作。 |
44| const char \* [OH_CryptoVerify_GetAlgoName](#oh_cryptoverify_getalgoname) ([OH_CryptoVerify](#oh_cryptoverify) \*ctx) | 获取验签算法名称。 |
45| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoVerify_SetParam](#oh_cryptoverify_setparam) ([OH_CryptoVerify](#oh_cryptoverify) \*ctx, [CryptoSignature_ParamType](#cryptosignature_paramtype) type, [Crypto_DataBlob](_crypto___data_blob.md) \*value) | 设置验签参数。 |
46| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoVerify_GetParam](#oh_cryptoverify_getparam) ([OH_CryptoVerify](#oh_cryptoverify) \*ctx, [CryptoSignature_ParamType](#cryptosignature_paramtype) type, [Crypto_DataBlob](_crypto___data_blob.md) \*value) | 获取验签参数。 |
47| void [OH_CryptoVerify_Destroy](#oh_cryptoverify_destroy) ([OH_CryptoVerify](#oh_cryptoverify) \*ctx) | 销毁验签实例。 |
48
49
50## 类型定义说明
51
52
53### OH_CryptoVerify
54
55```
56typedef struct OH_CryptoVerifyOH_CryptoVerify
57```
58
59**描述**
60
61定义验签结构体。
62
63**起始版本:** 12
64
65
66## 枚举类型说明
67
68
69### CryptoSignature_ParamType
70
71```
72enum CryptoSignature_ParamType
73```
74
75**描述**
76
77定义签名验签参数类型。
78
79**起始版本:** 12
80
81| 枚举值 | 描述 |
82| -------- | -------- |
83| CRYPTO_PSS_MD_NAME_STR | 表示RSA算法中,使用PSS模式时,消息摘要功能的算法名。 |
84| CRYPTO_PSS_MGF_NAME_STR | 表示RSA算法中,使用PSS模式时,掩码生成算法(目前仅支持MGF1)。 |
85| CRYPTO_PSS_MGF1_NAME_STR | 表示RSA算法中,使用PSS模式时,MGF1掩码生成功能的消息摘要参数。 |
86| CRYPTO_PSS_SALT_LEN_INT | 表示RSA算法中,使用PSS模式时,盐值的长度,长度以字节为单位。 |
87| CRYPTO_PSS_TRAILER_FIELD_INT | 表示RSA算法中,使用PSS模式时,用于编码操作的整数,值为1。 |
88| CRYPTO_SM2_USER_ID_DATABLOB | 表示SM2算法中,用户身份标识字段。 |
89
90
91## 函数说明
92
93
94### OH_CryptoVerify_Create()
95
96```
97OH_Crypto_ErrCode OH_CryptoVerify_Create (const char *algoName, OH_CryptoVerify **verify )
98```
99
100**描述**
101
102创建验签实例。
103
104**起始版本:** 12
105
106**参数:**
107
108| 名称 | 描述 |
109| -------- | -------- |
110| algoName | 用于生成验签实例的算法名称。例如:RSA1024\|PKCS1\|SHA256 |
111| verify | 指向验签实例的指针。 |
112
113**返回:**
114
115[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode):
116
1170 - 成功。
118
119401 - 参数无效。
120
121801 - 操作不支持。
122
12317620001 - 内存错误。
124
12517630001 - 调用三方算法库API出错。
126
127
128### OH_CryptoVerify_Destroy()
129
130```
131void OH_CryptoVerify_Destroy (OH_CryptoVerify *ctx)
132```
133
134**描述**
135
136销毁验签实例。
137
138**起始版本:** 12
139
140**参数:**
141
142| 名称 | 描述 |
143| -------- | -------- |
144| ctx | 指向验签实例。 |
145
146
147### OH_CryptoVerify_Final()
148
149```
150bool OH_CryptoVerify_Final (OH_CryptoVerify *ctx, Crypto_DataBlob *in, Crypto_DataBlob *signData )
151```
152
153**描述**
154
155对数据进行验签。
156
157**起始版本:** 12
158
159**参数:**
160
161| 名称 | 描述 |
162| -------- | -------- |
163| ctx | 指向验签实例。 |
164| in | 传入的数据。 |
165| out | 签名数据。 |
166
167**返回:**
168
169返回bool类型,代表验签是否通过。
170
171**参见:**
172
173[OH_CryptoVerify_Init](#oh_cryptoverify_init)
174
175[OH_CryptoVerify_Update](#oh_cryptoverify_update)
176
177
178### OH_CryptoVerify_GetAlgoName()
179
180```
181const char* OH_CryptoVerify_GetAlgoName (OH_CryptoVerify *ctx)
182```
183
184**描述**
185
186获取验签算法名称。
187
188**起始版本:** 12
189
190**参数:**
191
192| 名称 | 描述 |
193| -------- | -------- |
194| ctx | 指向验签实例。 |
195
196**返回:**
197
198返回验签算法名称。
199
200
201### OH_CryptoVerify_GetParam()
202
203```
204OH_Crypto_ErrCode OH_CryptoVerify_GetParam (OH_CryptoVerify *ctx, CryptoSignature_ParamType type, Crypto_DataBlob *value )
205```
206
207**描述**
208
209获取验签参数。
210
211**起始版本:** 12
212
213**参数:**
214
215| 名称 | 描述 |
216| -------- | -------- |
217| ctx | 指向验签实例。 |
218| type | 用于指定需要获取的验签参数。 |
219| value | 获取的验签参数的具体值。 |
220
221**返回:**
222
223[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode):
224
2250 - 成功。
226
227401 - 参数无效。
228
229801 - 操作不支持。
230
23117620001 - 内存错误。
232
23317630001 - 调用三方算法库API出错。。
234
235
236### OH_CryptoVerify_Init()
237
238```
239OH_Crypto_ErrCode OH_CryptoVerify_Init (OH_CryptoVerify *ctx, OH_CryptoPubKey *pubKey )
240```
241
242**描述**
243
244传入公钥初始化验签实例。
245
246**起始版本:** 12
247
248**参数:**
249
250| 名称 | 描述 |
251| -------- | -------- |
252| ctx | 指向验签实例。 |
253| pubKey | 公钥对象。 |
254
255**返回:**
256
257[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode):
258
2590 - 成功。
260
261401 - 参数无效。
262
263801 - 操作不支持。
264
26517620001 - 内存错误。
266
26717630001 - 调用三方算法库API出错。
268
269**参见:**
270
271[OH_CryptoVerify_Update](#oh_cryptoverify_update)
272
273[OH_CryptoVerify_Final](#oh_cryptoverify_final)
274
275
276### OH_CryptoVerify_Recover()
277
278```
279OH_Crypto_ErrCode OH_CryptoVerify_Recover (OH_CryptoVerify *ctx, Crypto_DataBlob *signData, Crypto_DataBlob *rawSignData )
280```
281
282**描述**
283
284对签名数据进行恢复操作。
285
286**起始版本:** 12
287
288**参数:**
289
290| 名称 | 描述 |
291| -------- | -------- |
292| ctx | 指向验签实例。 |
293| signData | 签名数据。 |
294| rawSignData | 验签恢复的数据。 |
295
296**返回:**
297
298[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode):
299
3000 - 成功。
301
302401 - 参数无效。
303
304801 - 操作不支持。
305
30617620001 - 内存错误。
307
30817630001 - 调用三方算法库API出错。
309
310
311### OH_CryptoVerify_SetParam()
312
313```
314OH_Crypto_ErrCode OH_CryptoVerify_SetParam (OH_CryptoVerify *ctx, CryptoSignature_ParamType type, Crypto_DataBlob *value )
315```
316
317**描述**
318
319设置验签参数。
320
321**起始版本:** 12
322
323**参数:**
324
325| 名称 | 描述 |
326| -------- | -------- |
327| ctx | 指向验签实例。 |
328| type | 用于指定需要设置的验签参数。 |
329| value | 用于指定验签参数的具体值。 |
330
331**返回:**
332
333[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode):
334
3350 - 成功。
336
337401 - 参数无效。
338
339801 - 操作不支持。
340
34117620001 - 内存错误。
342
34317630001 - 调用三方算法库API出错。
344
345
346### OH_CryptoVerify_Update()
347
348```
349OH_Crypto_ErrCode OH_CryptoVerify_Update (OH_CryptoVerify *ctx, Crypto_DataBlob *in )
350```
351
352**描述**
353
354追加待验签数据。
355
356**起始版本:** 12
357
358**参数:**
359
360| 名称 | 描述 |
361| -------- | -------- |
362| ctx | 指向验签实例。 |
363| in | 传入的消息。 |
364
365**返回:**
366
367[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode):
368
3690 - 成功。
370
371401 - 参数无效。
372
373801 - 操作不支持。
374
37517620001 - 内存错误。
376
37717630001 - 调用三方算法库API出错。
378
379**参见:**
380
381[OH_CryptoVerify_Init](#oh_cryptoverify_init)
382
383[OH_CryptoVerify_Final](#oh_cryptoverify_final)
384