1# CryptoSignatureApi 2 3 4## Overview 5 6Provides APIs for signature verification. 7 8**Since**: 12 9 10 11## Summary 12 13 14### Files 15 16| Name| Description| 17| -------- | -------- | 18| [crypto_signature.h](crypto__signature_8h.md) | Defines APIs for signature verification.| 19 20 21### Types 22 23| Name| Description| 24| -------- | -------- | 25| typedef struct [OH_CryptoVerify](#oh_cryptoverify) [OH_CryptoVerify](#oh_cryptoverify) | Defines the data used for signature verification.| 26 27 28### Enums 29 30| Name| Description| 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>} | Enumerates the types of signature verification parameters.| 33 34 35### Functions 36 37| Name| Description| 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) | Creates a **Verify** instance for signature verification.| 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) | Initializes a **Verify** instance by using the public key.| 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) | Updates the data to be verified.| 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) | Verifies the signature of the data.| 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) | Restores the raw signature data.| 44| const char \* [OH_CryptoVerify_GetAlgoName](#oh_cryptoverify_getalgoname) ([OH_CryptoVerify](#oh_cryptoverify) \*ctx) | Obtains the signature verification algorithm.| 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) | Sets a signature verification parameter.| 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) | Obtains a signature verification parameter.| 47| void [OH_CryptoVerify_Destroy](#oh_cryptoverify_destroy) ([OH_CryptoVerify](#oh_cryptoverify) \*ctx) | Destroys a **Verify** instance.| 48 49 50## Type Description 51 52 53### OH_CryptoVerify 54 55``` 56typedef struct OH_CryptoVerifyOH_CryptoVerify 57``` 58 59**Description** 60 61Defines the data used for signature verification. 62 63**Since**: 12 64 65 66## Enum Description 67 68 69### CryptoSignature_ParamType 70 71``` 72enum CryptoSignature_ParamType 73``` 74 75**Description** 76 77Enumerates the types of signature verification parameters. 78 79**Since**: 12 80 81| Enum| Description| 82| -------- | -------- | 83| CRYPTO_PSS_MD_NAME_STR | MD algorithm used with the PSS padding mode in RSA.| 84| CRYPTO_PSS_MGF_NAME_STR | Mask generation algorithm used with the PSS padding mode in RSA. Currently, only MGF1 is supported.| 85| CRYPTO_PSS_MGF1_NAME_STR | MD parameters for the MGF1 mask generation used with the PSS padding mode in RSA.| 86| CRYPTO_PSS_SALT_LEN_INT | Length of the salt in bytes used with the PSS padding mode in RSA.| 87| CRYPTO_PSS_TRAILER_FIELD_INT | Trailer field used in the encoding operation when PSS padding mode is used in RSA. The value is **1**.| 88| CRYPTO_SM2_USER_ID_DATABLOB | User ID field in SM2.| 89 90 91## Function Description 92 93 94### OH_CryptoVerify_Create() 95 96``` 97OH_Crypto_ErrCode OH_CryptoVerify_Create (const char *algoName, OH_CryptoVerify **verify ) 98``` 99 100**Description** 101 102Creates a **Verify** instance for signature verification. 103 104**Since**: 12 105 106**Parameters** 107 108| Name| Description| 109| -------- | -------- | 110| algoName | Pointer to the algorithm used to generate the **Verify** instance. For example, **'RSA1024\|PKCS1\|SHA256'**.| | | 111| verify | Pointer to the **Verify** instance created.| 112 113**Returns** 114 115[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 116 117**0**: The operation is successful. 118 119**401**: Invalid parameters are detected. 120 121**801**: The operation is not supported. 122 123**17620001**: A memory error occurred. 124 125**17630001**: Failed to call an API of a third-party algorithm library. 126 127 128### OH_CryptoVerify_Destroy() 129 130``` 131void OH_CryptoVerify_Destroy (OH_CryptoVerify *ctx) 132``` 133 134**Description** 135 136Destroys a **Verify** instance. 137 138**Since**: 12 139 140**Parameters** 141 142| Name| Description| 143| -------- | -------- | 144| ctx | Pointer to the **Verify** instance to destroy.| 145 146 147### OH_CryptoVerify_Final() 148 149``` 150bool OH_CryptoVerify_Final (OH_CryptoVerify *ctx, Crypto_DataBlob *in, Crypto_DataBlob *signData ) 151``` 152 153**Description** 154 155Verifies the signature of the data. 156 157**Since**: 12 158 159**Parameters** 160 161| Name| Description| 162| -------- | -------- | 163| ctx | Pointer to the **Verify** instance.| 164| in | Pointer to the data passed in.| 165| out | Pointer to the signature data.| 166 167**Returns** 168 169Returns a boolean value, indicating whether the signature verification is successful. 170 171**See** 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**Description** 185 186Obtains the signature verification algorithm. 187 188**Since**: 12 189 190**Parameters** 191 192| Name| Description| 193| -------- | -------- | 194| ctx | Pointer to the **Verify** instance.| 195 196**Returns** 197 198Signature verification algorithm obtained. 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**Description** 208 209Obtains a signature verification parameter. 210 211**Since**: 12 212 213**Parameters** 214 215| Name| Description| 216| -------- | -------- | 217| ctx | Pointer to the **Verify** instance.| 218| type | Name of the signature verification parameter to obtain.| 219| value | Pointer to the parameter value obtained.| 220 221**Returns** 222 223[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 224 225**0**: The operation is successful. 226 227**401**: Invalid parameters are detected. 228 229**801**: The operation is not supported. 230 231**17620001**: A memory error occurred. 232 233**17630001**: Failed to call an API of a third-party algorithm library. 234 235 236### OH_CryptoVerify_Init() 237 238``` 239OH_Crypto_ErrCode OH_CryptoVerify_Init (OH_CryptoVerify *ctx, OH_CryptoPubKey *pubKey ) 240``` 241 242**Description** 243 244Initializes a **Verify** instance by using the public key. 245 246**Since**: 12 247 248**Parameters** 249 250| Name| Description| 251| -------- | -------- | 252| ctx | Pointer to the **Verify** instance.| 253| pubKey | Pointer to the public key.| 254 255**Returns** 256 257[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 258 259**0**: The operation is successful. 260 261**401**: Invalid parameters are detected. 262 263**801**: The operation is not supported. 264 265**17620001**: A memory error occurred. 266 267**17630001**: Failed to call an API of a third-party algorithm library. 268 269**See** 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**Description** 283 284Restores the signature data. 285 286**Since**: 12 287 288**Parameters** 289 290| Name| Description| 291| -------- | -------- | 292| ctx | Pointer to the **Verify** instance.| 293| signData | Pointer to the signature data to be restored.| 294| rawSignData | Pointer to the raw data restored.| 295 296**Returns** 297 298[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 299 300**0**: The operation is successful. 301 302**401**: Invalid parameters are detected. 303 304**801**: The operation is not supported. 305 306**17620001**: A memory error occurred. 307 308**17630001**: Failed to call an API of a third-party algorithm library. 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**Description** 318 319Sets a signature verification parameter. 320 321**Since**: 12 322 323**Parameters** 324 325| Name| Description| 326| -------- | -------- | 327| ctx | Pointer to the **Verify** instance.| 328| type | Name of the signature verification parameter to set.| 329| value | Pointer to the value of the signature verification parameter to set.| 330 331**Returns** 332 333[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 334 335**0**: The operation is successful. 336 337**401**: Invalid parameters are detected. 338 339**801**: The operation is not supported. 340 341**17620001**: A memory error occurred. 342 343**17630001**: Failed to call an API of a third-party algorithm library. 344 345 346### OH_CryptoVerify_Update() 347 348``` 349OH_Crypto_ErrCode OH_CryptoVerify_Update (OH_CryptoVerify *ctx, Crypto_DataBlob *in ) 350``` 351 352**Description** 353 354Updates the data to be verified. 355 356**Since**: 12 357 358**Parameters** 359 360| Name| Description| 361| -------- | -------- | 362| ctx | Pointer to the **Verify** instance.| 363| in | Pointer to the data to pass in.| 364 365**Returns** 366 367[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 368 369**0**: The operation is successful. 370 371**401**: Invalid parameters are detected. 372 373**801**: The operation is not supported. 374 375**17620001**: A memory error occurred. 376 377**17630001**: Failed to call an API of a third-party algorithm library. 378 379**See** 380 381[OH_CryptoVerify_Init](#oh_cryptoverify_init) 382 383[OH_CryptoVerify_Final](#oh_cryptoverify_final) 384