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