• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# crypto_signature.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定义验签接口。
13
14**引用文件:** <CryptoArchitectureKit/crypto_signature.h>
15
16**库:** libohcrypto.so
17
18**系统能力:** SystemCapability.Security.CryptoFramework
19
20**起始版本:** 12
21
22**相关模块:** [CryptoSignatureApi](capi-cryptosignatureapi.md)
23
24## 汇总
25
26### 结构体
27
28| 名称 | typedef关键字 | 描述 |
29| -- | -- | -- |
30| [OH_CryptoVerify](capi-cryptosignatureapi-oh-cryptoverify.md) | OH_CryptoVerify | 定义验签结构体。 |
31| [OH_CryptoSign](capi-cryptosignatureapi-oh-cryptosign.md) | OH_CryptoSign | 定义签名结构体。 |
32| [OH_CryptoEccSignatureSpec](capi-cryptosignatureapi-oh-cryptoeccsignaturespec.md) | OH_CryptoEccSignatureSpec | 定义ECC签名规范结构体。 |
33
34### 枚举
35
36| 名称 | typedef关键字 | 描述 |
37| -- | -- | -- |
38| [CryptoSignature_ParamType](#cryptosignature_paramtype) | CryptoSignature_ParamType | 定义签名验签参数类型。 |
39
40### 函数
41
42| 名称 | 描述 |
43| -- | -- |
44| [OH_Crypto_ErrCode OH_CryptoVerify_Create(const char *algoName, OH_CryptoVerify **verify)](#oh_cryptoverify_create) | 创建验签实例。 |
45| [OH_Crypto_ErrCode OH_CryptoVerify_Init(OH_CryptoVerify *ctx, OH_CryptoPubKey *pubKey)](#oh_cryptoverify_init) | 传入公钥初始化验签实例。 |
46| [OH_Crypto_ErrCode OH_CryptoVerify_Update(OH_CryptoVerify *ctx, Crypto_DataBlob *in)](#oh_cryptoverify_update) | 追加待验签数据。 |
47| [bool OH_CryptoVerify_Final(OH_CryptoVerify *ctx, Crypto_DataBlob *in, Crypto_DataBlob *signData)](#oh_cryptoverify_final) | 对数据进行验签。 |
48| [OH_Crypto_ErrCode OH_CryptoVerify_Recover(OH_CryptoVerify *ctx, Crypto_DataBlob *signData, Crypto_DataBlob *rawSignData)](#oh_cryptoverify_recover) | 对签名数据进行恢复操作。 |
49| [const char *OH_CryptoVerify_GetAlgoName(OH_CryptoVerify *ctx)](#oh_cryptoverify_getalgoname) | 获取验签算法名称。 |
50| [OH_Crypto_ErrCode OH_CryptoVerify_SetParam(OH_CryptoVerify *ctx, CryptoSignature_ParamType type, Crypto_DataBlob *value)](#oh_cryptoverify_setparam) | 设置验签参数。 |
51| [OH_Crypto_ErrCode OH_CryptoVerify_GetParam(OH_CryptoVerify *ctx, CryptoSignature_ParamType type, Crypto_DataBlob *value)](#oh_cryptoverify_getparam) | 获取验签参数。 |
52| [void OH_CryptoVerify_Destroy(OH_CryptoVerify *ctx)](#oh_cryptoverify_destroy) | 销毁验签实例。 |
53| [OH_Crypto_ErrCode OH_CryptoSign_Create(const char *algoName, OH_CryptoSign **sign)](#oh_cryptosign_create) | 根据给定的算法名称创建签名实例。 |
54| [OH_Crypto_ErrCode OH_CryptoSign_Init(OH_CryptoSign *ctx, OH_CryptoPrivKey *privKey)](#oh_cryptosign_init) | 初始化签名实例。 |
55| [OH_Crypto_ErrCode OH_CryptoSign_Update(OH_CryptoSign *ctx, const Crypto_DataBlob *in)](#oh_cryptosign_update) | 更新需要签名的数据。 |
56| [OH_Crypto_ErrCode OH_CryptoSign_Final(OH_CryptoSign *ctx, const Crypto_DataBlob *in, Crypto_DataBlob *out)](#oh_cryptosign_final) | 完成签名操作。 |
57| [const char *OH_CryptoSign_GetAlgoName(OH_CryptoSign *ctx)](#oh_cryptosign_getalgoname) | 获取签名实例的算法名称。 |
58| [OH_Crypto_ErrCode OH_CryptoSign_SetParam(OH_CryptoSign *ctx, CryptoSignature_ParamType type, const Crypto_DataBlob *value)](#oh_cryptosign_setparam) | 设置签名实例的指定参数。 |
59| [OH_Crypto_ErrCode OH_CryptoSign_GetParam(OH_CryptoSign *ctx, CryptoSignature_ParamType type, Crypto_DataBlob *value)](#oh_cryptosign_getparam) | 从签名实例获取指定参数。 |
60| [void OH_CryptoSign_Destroy(OH_CryptoSign *ctx)](#oh_cryptosign_destroy) | 销毁签名实例。 |
61| [OH_Crypto_ErrCode OH_CryptoEccSignatureSpec_Create(Crypto_DataBlob *eccSignature, OH_CryptoEccSignatureSpec **spec)](#oh_cryptoeccsignaturespec_create) | 创建ECC签名规范。 |
62| [OH_Crypto_ErrCode OH_CryptoEccSignatureSpec_GetRAndS(OH_CryptoEccSignatureSpec *spec, Crypto_DataBlob *r, Crypto_DataBlob *s)](#oh_cryptoeccsignaturespec_getrands) | 获取ECC签名的r和s值。 |
63| [OH_Crypto_ErrCode OH_CryptoEccSignatureSpec_SetRAndS(OH_CryptoEccSignatureSpec *spec, Crypto_DataBlob *r, Crypto_DataBlob *s)](#oh_cryptoeccsignaturespec_setrands) | 设置ECC签名的r和s值。 |
64| [OH_Crypto_ErrCode OH_CryptoEccSignatureSpec_Encode(OH_CryptoEccSignatureSpec *spec, Crypto_DataBlob *out)](#oh_cryptoeccsignaturespec_encode) | 将ECC签名规范编码为DER格式的签名。 |
65| [void OH_CryptoEccSignatureSpec_Destroy(OH_CryptoEccSignatureSpec *spec)](#oh_cryptoeccsignaturespec_destroy) | 销毁ECC签名规范。 |
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 = 100 | 表示RSA算法中,使用PSS模式时,消息摘要功能的算法名。 |
84| CRYPTO_PSS_MGF_NAME_STR = 101 | 表示RSA算法中,使用PSS模式时,掩码生成算法(目前仅支持MGF1)。 |
85| CRYPTO_PSS_MGF1_NAME_STR = 102 | 表示RSA算法中,使用PSS模式时,MGF1掩码生成功能的消息摘要参数。 |
86| CRYPTO_PSS_SALT_LEN_INT = 103 | 表示RSA算法中,使用PSS模式时,盐值的长度,长度以字节为单位。 |
87| CRYPTO_PSS_TRAILER_FIELD_INT = 104 | 表示RSA算法中,使用PSS模式时,用于编码操作的整数,值为1。 |
88| CRYPTO_SM2_USER_ID_DATABLOB = 105 | 表示SM2算法中,用户身份标识字段。 |
89
90
91## 函数说明
92
93### OH_CryptoVerify_Create()
94
95```
96OH_Crypto_ErrCode OH_CryptoVerify_Create(const char *algoName, OH_CryptoVerify **verify)
97```
98
99**描述**
100
101创建验签实例。
102
103**起始版本:** 12
104
105
106**参数:**
107
108| 参数项 | 描述 |
109| -- | -- |
110| const char *algoName | 用于生成验签实例的算法名称。<br> 例如"RSA1024\|PKCS1\|SHA256" |
111| [OH_CryptoVerify](capi-cryptosignatureapi-oh-cryptoverify.md) **verify | 指向验签实例的指针。 |
112
113**返回:**
114
115| 类型 | 说明 |
116| -- | -- |
117| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br>         CRYPTO_INVALID_PARAMS:参数无效。<br>         CRYPTO_NOT_SUPPORTED:操作不支持。<br>         CRYPTO_MEMORY_ERROR:内存错误。<br>         CRYPTO_OPERATION_ERROR:调用三方算法库API出错。 |
118
119### OH_CryptoVerify_Init()
120
121```
122OH_Crypto_ErrCode OH_CryptoVerify_Init(OH_CryptoVerify *ctx, OH_CryptoPubKey *pubKey)
123```
124
125**描述**
126
127传入公钥初始化验签实例。
128
129**起始版本:** 12
130
131
132**参数:**
133
134| 参数项 | 描述 |
135| -- | -- |
136| [OH_CryptoVerify](capi-cryptosignatureapi-oh-cryptoverify.md) *ctx | 指向验签实例。 |
137| [OH_CryptoPubKey](capi-cryptoasymkeyapi-oh-cryptopubkey.md) *pubKey | 公钥对象。 |
138
139**返回:**
140
141| 类型 | 说明 |
142| -- | -- |
143| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br>         CRYPTO_INVALID_PARAMS:参数无效。<br>         CRYPTO_NOT_SUPPORTED:操作不支持。<br>         CRYPTO_MEMORY_ERROR:内存错误。<br>         CRYPTO_OPERATION_ERROR:调用三方算法库API出错。 |
144
145**参考:**
146
147[OH_CryptoVerify_Update](#oh_cryptoverify_update)
148
149[OH_CryptoVerify_Final](#oh_cryptoverify_final)
150
151
152### OH_CryptoVerify_Update()
153
154```
155OH_Crypto_ErrCode OH_CryptoVerify_Update(OH_CryptoVerify *ctx, Crypto_DataBlob *in)
156```
157
158**描述**
159
160追加待验签数据。
161
162**起始版本:** 12
163
164
165**参数:**
166
167| 参数项 | 描述 |
168| -- | -- |
169| [OH_CryptoVerify](capi-cryptosignatureapi-oh-cryptoverify.md) *ctx | 指向验签实例。 |
170| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *in | 传入的消息。 |
171
172**返回:**
173
174| 类型 | 说明 |
175| -- | -- |
176| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br>         CRYPTO_INVALID_PARAMS:参数无效。<br>         CRYPTO_NOT_SUPPORTED:操作不支持。<br>         CRYPTO_MEMORY_ERROR:内存错误。<br>         CRYPTO_OPERATION_ERROR:调用三方算法库API出错。 |
177
178**参考:**
179
180[OH_CryptoVerify_Init](#oh_cryptoverify_init)
181
182[OH_CryptoVerify_Final](#oh_cryptoverify_final)
183
184
185### OH_CryptoVerify_Final()
186
187```
188bool OH_CryptoVerify_Final(OH_CryptoVerify *ctx, Crypto_DataBlob *in, Crypto_DataBlob *signData)
189```
190
191**描述**
192
193对数据进行验签。
194
195**起始版本:** 12
196
197
198**参数:**
199
200| 参数项 | 描述 |
201| -- | -- |
202| [OH_CryptoVerify](capi-cryptosignatureapi-oh-cryptoverify.md) *ctx | 指向验签实例。 |
203| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *in | 传入的数据。 |
204| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *signData | 签名数据。 |
205
206**返回:**
207
208| 类型 | 说明 |
209| -- | -- |
210| bool | 表示验签是否通过。 |
211
212**参考:**
213
214[OH_CryptoVerify_Init](#oh_cryptoverify_init)
215
216[OH_CryptoVerify_Update](#oh_cryptoverify_update)
217
218
219### OH_CryptoVerify_Recover()
220
221```
222OH_Crypto_ErrCode OH_CryptoVerify_Recover(OH_CryptoVerify *ctx, Crypto_DataBlob *signData,Crypto_DataBlob *rawSignData)
223```
224
225**描述**
226
227对签名数据进行恢复操作。
228
229**起始版本:** 12
230
231
232**参数:**
233
234| 参数项 | 描述 |
235| -- | -- |
236| [OH_CryptoVerify](capi-cryptosignatureapi-oh-cryptoverify.md) *ctx | 指向验签实例。 |
237| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *signData | 签名数据。 |
238| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *rawSignData | 验签恢复的数据。 |
239
240**返回:**
241
242| 类型 | 说明 |
243| -- | -- |
244| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br>         CRYPTO_INVALID_PARAMS:参数无效。<br>         CRYPTO_NOT_SUPPORTED:操作不支持。<br>         CRYPTO_MEMORY_ERROR:内存错误。<br>         CRYPTO_OPERATION_ERROR:调用三方算法库API出错。 |
245
246### OH_CryptoVerify_GetAlgoName()
247
248```
249const char *OH_CryptoVerify_GetAlgoName(OH_CryptoVerify *ctx)
250```
251
252**描述**
253
254获取验签算法名称。
255
256**起始版本:** 12
257
258
259**参数:**
260
261| 参数项 | 描述 |
262| -- | -- |
263| [OH_CryptoVerify](capi-cryptosignatureapi-oh-cryptoverify.md) *ctx | 指向验签实例。 |
264
265**返回:**
266
267| 类型 | 说明 |
268| -- | -- |
269| const char * | 返回验签算法名称。 |
270
271### OH_CryptoVerify_SetParam()
272
273```
274OH_Crypto_ErrCode OH_CryptoVerify_SetParam(OH_CryptoVerify *ctx, CryptoSignature_ParamType type,Crypto_DataBlob *value)
275```
276
277**描述**
278
279设置验签参数。
280
281**起始版本:** 12
282
283
284**参数:**
285
286| 参数项 | 描述 |
287| -- | -- |
288| [OH_CryptoVerify](capi-cryptosignatureapi-oh-cryptoverify.md) *ctx | 指向验签实例。 |
289| [CryptoSignature_ParamType](#cryptosignature_paramtype) type | 用于指定需要设置的验签参数。 |
290| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *value | 用于指定验签参数的具体值。 |
291
292**返回:**
293
294| 类型 | 说明 |
295| -- | -- |
296| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br>         CRYPTO_INVALID_PARAMS:参数无效。<br>         CRYPTO_NOT_SUPPORTED:操作不支持。<br>         CRYPTO_MEMORY_ERROR:内存错误。<br>         CRYPTO_OPERATION_ERROR:调用三方算法库API出错。 |
297
298### OH_CryptoVerify_GetParam()
299
300```
301OH_Crypto_ErrCode OH_CryptoVerify_GetParam(OH_CryptoVerify *ctx, CryptoSignature_ParamType type,Crypto_DataBlob *value)
302```
303
304**描述**
305
306获取验签参数。
307
308**起始版本:** 12
309
310
311**参数:**
312
313| 参数项 | 描述 |
314| -- | -- |
315| [OH_CryptoVerify](capi-cryptosignatureapi-oh-cryptoverify.md) *ctx | 指向验签实例。 |
316| [CryptoSignature_ParamType](#cryptosignature_paramtype) type | 用于指定需要获取的验签参数。 |
317| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *value | 获取的验签参数的具体值。 |
318
319**返回:**
320
321| 类型 | 说明 |
322| -- | -- |
323| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br>         CRYPTO_INVALID_PARAMS:参数无效。<br>         CRYPTO_NOT_SUPPORTED:操作不支持。<br>         CRYPTO_MEMORY_ERROR:内存错误。<br>         CRYPTO_OPERATION_ERROR:调用三方算法库API出错。 |
324
325### OH_CryptoVerify_Destroy()
326
327```
328void OH_CryptoVerify_Destroy(OH_CryptoVerify *ctx)
329```
330
331**描述**
332
333销毁验签实例。
334
335**起始版本:** 12
336
337
338**参数:**
339
340| 参数项 | 描述 |
341| -- | -- |
342| [OH_CryptoVerify](capi-cryptosignatureapi-oh-cryptoverify.md) *ctx | 指向验签实例。 |
343
344### OH_CryptoSign_Create()
345
346```
347OH_Crypto_ErrCode OH_CryptoSign_Create(const char *algoName, OH_CryptoSign **sign)
348```
349
350**描述**
351
352根据给定的算法名称创建签名实例。
353
354**起始版本:** 20
355
356
357**参数:**
358
359| 参数项 | 描述 |
360| -- | -- |
361| const char *algoName | 用于生成签名实例的算法名称。<br> 例如"RSA\|PKCS1\|SHA384"、"ECC\|SHA384"。 |
362| [OH_CryptoSign](capi-cryptosignatureapi-oh-cryptosign.md) **sign | 签名实例。 |
363
364**返回:**
365
366| 类型 | 说明 |
367| -- | -- |
368| [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出错。 |
369
370### OH_CryptoSign_Init()
371
372```
373OH_Crypto_ErrCode OH_CryptoSign_Init(OH_CryptoSign *ctx, OH_CryptoPrivKey *privKey)
374```
375
376**描述**
377
378初始化签名实例。
379
380**起始版本:** 20
381
382
383**参数:**
384
385| 参数项 | 描述 |
386| -- | -- |
387| [OH_CryptoSign](capi-cryptosignatureapi-oh-cryptosign.md) *ctx | 指向签名实例。 |
388| [OH_CryptoPrivKey](capi-cryptoasymkeyapi-oh-cryptoprivkey.md) *privKey | 私钥。 |
389
390**返回:**
391
392| 类型 | 说明 |
393| -- | -- |
394| [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出错。 |
395
396**参考:**
397
398[OH_CryptoSign_Update](#oh_cryptosign_update)
399
400[OH_CryptoSign_Final](#oh_cryptosign_final)
401
402
403### OH_CryptoSign_Update()
404
405```
406OH_Crypto_ErrCode OH_CryptoSign_Update(OH_CryptoSign *ctx, const Crypto_DataBlob *in)
407```
408
409**描述**
410
411更新需要签名的数据。
412
413**起始版本:** 20
414
415
416**参数:**
417
418| 参数项 | 描述 |
419| -- | -- |
420| [OH_CryptoSign](capi-cryptosignatureapi-oh-cryptosign.md) *ctx | 指向签名实例。 |
421| [const Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *in | 需要签名的数据。 |
422
423**返回:**
424
425| 类型 | 说明 |
426| -- | -- |
427| [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出错。 |
428
429**参考:**
430
431[OH_CryptoSign_Init](#oh_cryptosign_init)
432
433[OH_CryptoSign_Final](#oh_cryptosign_final)
434
435
436### OH_CryptoSign_Final()
437
438```
439OH_Crypto_ErrCode OH_CryptoSign_Final(OH_CryptoSign *ctx, const Crypto_DataBlob *in, Crypto_DataBlob *out)
440```
441
442**描述**
443
444完成签名操作。
445
446**起始版本:** 20
447
448
449**参数:**
450
451| 参数项 | 描述 |
452| -- | -- |
453| [OH_CryptoSign](capi-cryptosignatureapi-oh-cryptosign.md) *ctx | 指向签名实例。 |
454| [const Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *in | 需要签名的数据。 |
455| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *out | 签名结果。 |
456
457**返回:**
458
459| 类型 | 说明 |
460| -- | -- |
461| [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出错。 |
462
463**参考:**
464
465[OH_CryptoSign_Init](#oh_cryptosign_init)
466
467[OH_CryptoSign_Update](#oh_cryptosign_update)
468
469
470### OH_CryptoSign_GetAlgoName()
471
472```
473const char *OH_CryptoSign_GetAlgoName(OH_CryptoSign *ctx)
474```
475
476**描述**
477
478获取签名实例的算法名称。
479
480**起始版本:** 20
481
482
483**参数:**
484
485| 参数项 | 描述 |
486| -- | -- |
487| [OH_CryptoSign](capi-cryptosignatureapi-oh-cryptosign.md) *ctx | 指向签名实例。 |
488
489**返回:**
490
491| 类型 | 说明 |
492| -- | -- |
493| const char * | 返回签名算法名称。 |
494
495### OH_CryptoSign_SetParam()
496
497```
498OH_Crypto_ErrCode OH_CryptoSign_SetParam(OH_CryptoSign *ctx, CryptoSignature_ParamType type,const Crypto_DataBlob *value)
499```
500
501**描述**
502
503设置签名实例的指定参数。
504
505**起始版本:** 20
506
507
508**参数:**
509
510| 参数项 | 描述 |
511| -- | -- |
512| [OH_CryptoSign](capi-cryptosignatureapi-oh-cryptosign.md) *ctx | 指向签名实例。 |
513| [CryptoSignature_ParamType](#cryptosignature_paramtype) type | 签名参数类型。 |
514| [const Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *value | 输入数据。 |
515
516**返回:**
517
518| 类型 | 说明 |
519| -- | -- |
520| [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出错。 |
521
522### OH_CryptoSign_GetParam()
523
524```
525OH_Crypto_ErrCode OH_CryptoSign_GetParam(OH_CryptoSign *ctx, CryptoSignature_ParamType type, Crypto_DataBlob *value)
526```
527
528**描述**
529
530从签名实例获取指定参数。
531
532**起始版本:** 20
533
534
535**参数:**
536
537| 参数项 | 描述 |
538| -- | -- |
539| [OH_CryptoSign](capi-cryptosignatureapi-oh-cryptosign.md) *ctx | 指向签名实例。 |
540| [CryptoSignature_ParamType](#cryptosignature_paramtype) type | 签名参数类型。 |
541| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *value | 输出数据。 |
542
543**返回:**
544
545| 类型 | 说明 |
546| -- | -- |
547| [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出错。 |
548
549### OH_CryptoSign_Destroy()
550
551```
552void OH_CryptoSign_Destroy(OH_CryptoSign *ctx)
553```
554
555**描述**
556
557销毁签名实例。
558
559**起始版本:** 20
560
561
562**参数:**
563
564| 参数项 | 描述 |
565| -- | -- |
566| [OH_CryptoSign](capi-cryptosignatureapi-oh-cryptosign.md) *ctx | 指向签名实例。 |
567
568### OH_CryptoEccSignatureSpec_Create()
569
570```
571OH_Crypto_ErrCode OH_CryptoEccSignatureSpec_Create(Crypto_DataBlob *eccSignature,OH_CryptoEccSignatureSpec **spec)
572```
573
574**描述**
575
576创建ECC签名规范。
577
578**起始版本:** 20
579
580
581**参数:**
582
583| 参数项 | 描述 |
584| -- | -- |
585| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *eccSignature | ECC签名(DER格式),如果EccSignature参数为NULL,将创建一个空的ECC签名规范。 |
586| [OH_CryptoEccSignatureSpec](capi-cryptosignatureapi-oh-cryptoeccsignaturespec.md) **spec | 输出的ECC签名规范。 |
587
588**返回:**
589
590| 类型 | 说明 |
591| -- | -- |
592| [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出错。 |
593
594### OH_CryptoEccSignatureSpec_GetRAndS()
595
596```
597OH_Crypto_ErrCode OH_CryptoEccSignatureSpec_GetRAndS(OH_CryptoEccSignatureSpec *spec, Crypto_DataBlob *r,Crypto_DataBlob *s)
598```
599
600**描述**
601
602获取ECC签名的r和s值。
603
604**起始版本:** 20
605
606
607**参数:**
608
609| 参数项 | 描述 |
610| -- | -- |
611| [OH_CryptoEccSignatureSpec](capi-cryptosignatureapi-oh-cryptoeccsignaturespec.md) *spec | 指向ECC签名规范。 |
612| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *r | r值。 |
613| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *s | s值。 |
614
615**返回:**
616
617| 类型 | 说明 |
618| -- | -- |
619| [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出错。 |
620
621### OH_CryptoEccSignatureSpec_SetRAndS()
622
623```
624OH_Crypto_ErrCode OH_CryptoEccSignatureSpec_SetRAndS(OH_CryptoEccSignatureSpec *spec, Crypto_DataBlob *r,Crypto_DataBlob *s)
625```
626
627**描述**
628
629设置ECC签名的r和s值。
630
631**起始版本:** 20
632
633
634**参数:**
635
636| 参数项 | 描述 |
637| -- | -- |
638| [OH_CryptoEccSignatureSpec](capi-cryptosignatureapi-oh-cryptoeccsignaturespec.md) *spec | 指向ECC签名规范。 |
639| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *r | r值。 |
640| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *s | s值。 |
641
642**返回:**
643
644| 类型 | 说明 |
645| -- | -- |
646| [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出错。 |
647
648### OH_CryptoEccSignatureSpec_Encode()
649
650```
651OH_Crypto_ErrCode OH_CryptoEccSignatureSpec_Encode(OH_CryptoEccSignatureSpec *spec, Crypto_DataBlob *out)
652```
653
654**描述**
655
656将ECC签名规范编码为DER格式的签名。
657
658**起始版本:** 20
659
660
661**参数:**
662
663| 参数项 | 描述 |
664| -- | -- |
665| [OH_CryptoEccSignatureSpec](capi-cryptosignatureapi-oh-cryptoeccsignaturespec.md) *spec | 指向ECC签名规范。 |
666| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *out | 输出数据。 |
667
668**返回:**
669
670| 类型 | 说明 |
671| -- | -- |
672| [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出错。 |
673
674### OH_CryptoEccSignatureSpec_Destroy()
675
676```
677void OH_CryptoEccSignatureSpec_Destroy(OH_CryptoEccSignatureSpec *spec)
678```
679
680**描述**
681
682销毁ECC签名规范。
683
684**起始版本:** 20
685
686
687**参数:**
688
689| 参数项 | 描述 |
690| -- | -- |
691| [OH_CryptoEccSignatureSpec](capi-cryptosignatureapi-oh-cryptoeccsignaturespec.md) *spec | 指向ECC签名规范。 |
692
693
694