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