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