1e41f4b71Sopenharmony_ci# CryptoDigestApi 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ci## Overview 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ciProvides APIs for message digest (MD) algorithms. 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_digest.h](crypto__digest_8h.md) | Defines APIs for MD algorithms. | 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci### Types 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci| Name | Description | 24e41f4b71Sopenharmony_ci| -------- | -------- | 25e41f4b71Sopenharmony_ci| typedef struct [OH_CryptoDigest](#oh_cryptodigest) [OH_CryptoDigest](#oh_cryptodigest) | Defines an MD. | 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci### Functions 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci| Name | Description | 31e41f4b71Sopenharmony_ci| -------- | -------- | 32e41f4b71Sopenharmony_ci| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoDigest_Create](#oh_cryptodigest_create) (const char \*algoName, [OH_CryptoDigest](#oh_cryptodigest) \*\*ctx) | Creates an MD instance based on the given algorithm name. | 33e41f4b71Sopenharmony_ci| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoDigest_Update](#oh_cryptodigest_update) ([OH_CryptoDigest](#oh_cryptodigest) \*ctx, [Crypto_DataBlob](_crypto___data_blob.md) \*in) | Updates the data used for generating an MD. | 34e41f4b71Sopenharmony_ci| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoDigest_Final](#oh_cryptodigest_final) ([OH_CryptoDigest](#oh_cryptodigest) \*ctx, [Crypto_DataBlob](_crypto___data_blob.md) \*out) | Generates an MD. | 35e41f4b71Sopenharmony_ci| uint32_t [OH_CryptoDigest_GetLength](#oh_cryptodigest_getlength) ([OH_CryptoDigest](#oh_cryptodigest) \*ctx) | Obtains the length of an MD. | 36e41f4b71Sopenharmony_ci| const char \* [OH_CryptoDigest_GetAlgoName](#oh_cryptodigest_getalgoname) ([OH_CryptoDigest](#oh_cryptodigest) \*ctx) | Obtains the digest algorithm. | 37e41f4b71Sopenharmony_ci| void [OH_DigestCrypto_Destroy](#oh_digestcrypto_destroy) ([OH_CryptoDigest](#oh_cryptodigest) \*ctx) | Destroys an MD instance. | 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci 40e41f4b71Sopenharmony_ci## Type Description 41e41f4b71Sopenharmony_ci 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci### OH_CryptoDigest 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci``` 46e41f4b71Sopenharmony_citypedef struct OH_CryptoDigestOH_CryptoDigest 47e41f4b71Sopenharmony_ci``` 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci**Description** 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ciDefines an MD. 52e41f4b71Sopenharmony_ci 53e41f4b71Sopenharmony_ci**Since**: 12 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_ci 56e41f4b71Sopenharmony_ci## Function Description 57e41f4b71Sopenharmony_ci 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci### OH_CryptoDigest_Create() 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci``` 62e41f4b71Sopenharmony_ciOH_Crypto_ErrCode OH_CryptoDigest_Create (const char *algoName, OH_CryptoDigest **ctx ) 63e41f4b71Sopenharmony_ci``` 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci**Description** 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ciCreates an MD instance based on the given algorithm name. 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci**Since**: 12 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci**Parameters** 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci| Name | Description | 74e41f4b71Sopenharmony_ci| -------- | -------- | 75e41f4b71Sopenharmony_ci| algoName | Pointer to the algorithm used to generate the MD instance. For example, **'SHA256'**. | 76e41f4b71Sopenharmony_ci| ctx | Pointer to the MD instance created. | 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ci**Returns** 79e41f4b71Sopenharmony_ci 80e41f4b71Sopenharmony_ci[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 81e41f4b71Sopenharmony_ci 82e41f4b71Sopenharmony_ci**0**: The operation is successful. 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci**401**: Invalid parameters are detected. 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci**801**: The operation is not supported. 87e41f4b71Sopenharmony_ci 88e41f4b71Sopenharmony_ci**17620001**: A memory error occurred. 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci**17630001**: Failed to call an API of a third-party algorithm library. 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci### OH_CryptoDigest_Final() 94e41f4b71Sopenharmony_ci 95e41f4b71Sopenharmony_ci``` 96e41f4b71Sopenharmony_ciOH_Crypto_ErrCode OH_CryptoDigest_Final (OH_CryptoDigest *ctx, Crypto_DataBlob *out ) 97e41f4b71Sopenharmony_ci``` 98e41f4b71Sopenharmony_ci 99e41f4b71Sopenharmony_ci**Description** 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ciGenerates an MD. 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci**Since**: 12 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci**Parameters** 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ci| Name | Description | 108e41f4b71Sopenharmony_ci| -------- | -------- | 109e41f4b71Sopenharmony_ci| ctx | Pointer to the MD instance. | 110e41f4b71Sopenharmony_ci| out | Pointer to the MD generated. | 111e41f4b71Sopenharmony_ci 112e41f4b71Sopenharmony_ci**Returns** 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci**0**: The operation is successful. 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci**401**: Invalid parameters are detected. 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci**801**: The operation is not supported. 121e41f4b71Sopenharmony_ci 122e41f4b71Sopenharmony_ci**17620001**: A memory error occurred. 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci**17630001**: Failed to call an API of a third-party algorithm library. 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci**See** 127e41f4b71Sopenharmony_ci 128e41f4b71Sopenharmony_ci[OH_CryptoDigest_Update](#oh_cryptodigest_update) 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_ci### OH_CryptoDigest_GetAlgoName() 132e41f4b71Sopenharmony_ci 133e41f4b71Sopenharmony_ci``` 134e41f4b71Sopenharmony_ciconst char* OH_CryptoDigest_GetAlgoName (OH_CryptoDigest *ctx) 135e41f4b71Sopenharmony_ci``` 136e41f4b71Sopenharmony_ci 137e41f4b71Sopenharmony_ci**Description** 138e41f4b71Sopenharmony_ci 139e41f4b71Sopenharmony_ciObtains the digest algorithm. 140e41f4b71Sopenharmony_ci 141e41f4b71Sopenharmony_ci**Since**: 12 142e41f4b71Sopenharmony_ci 143e41f4b71Sopenharmony_ci**Parameters** 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_ci| Name | Description | 146e41f4b71Sopenharmony_ci| -------- | -------- | 147e41f4b71Sopenharmony_ci| ctx | Pointer to the MD instance. | 148e41f4b71Sopenharmony_ci 149e41f4b71Sopenharmony_ci**Returns** 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_ciMD algorithm obtained. 152e41f4b71Sopenharmony_ci 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci### OH_CryptoDigest_GetLength() 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci``` 157e41f4b71Sopenharmony_ciuint32_t OH_CryptoDigest_GetLength (OH_CryptoDigest *ctx) 158e41f4b71Sopenharmony_ci``` 159e41f4b71Sopenharmony_ci 160e41f4b71Sopenharmony_ci**Description** 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ciObtains the length of an MD. 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci**Since**: 12 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci**Parameters** 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci| Name | Description | 169e41f4b71Sopenharmony_ci| -------- | -------- | 170e41f4b71Sopenharmony_ci| ctx | Pointer to the MD instance. | 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci**Returns** 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci**0**: The operation is successful. 177e41f4b71Sopenharmony_ci 178e41f4b71Sopenharmony_ci**401**: Invalid parameters are detected. 179e41f4b71Sopenharmony_ci 180e41f4b71Sopenharmony_ci**801**: The operation is not supported. 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci**17620001**: A memory error occurred. 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ci**17630001**: Failed to call an API of a third-party algorithm library. 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci 187e41f4b71Sopenharmony_ci### OH_CryptoDigest_Update() 188e41f4b71Sopenharmony_ci 189e41f4b71Sopenharmony_ci``` 190e41f4b71Sopenharmony_ciOH_Crypto_ErrCode OH_CryptoDigest_Update (OH_CryptoDigest *ctx, Crypto_DataBlob *in ) 191e41f4b71Sopenharmony_ci``` 192e41f4b71Sopenharmony_ci 193e41f4b71Sopenharmony_ci**Description** 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_ciUpdates the data used for generating an MD. 196e41f4b71Sopenharmony_ci 197e41f4b71Sopenharmony_ci**Since**: 12 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci**Parameters** 200e41f4b71Sopenharmony_ci 201e41f4b71Sopenharmony_ci| Name | Description | 202e41f4b71Sopenharmony_ci| -------- | -------- | 203e41f4b71Sopenharmony_ci| ctx | Pointer to the MD instance. | 204e41f4b71Sopenharmony_ci| in | Pointer to the data to pass in. | 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci**Returns** 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci**0**: The operation is successful. 211e41f4b71Sopenharmony_ci 212e41f4b71Sopenharmony_ci**401**: Invalid parameters are detected. 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci**801**: The operation is not supported. 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ci**17620001**: A memory error occurred. 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci**17630001**: Failed to call an API of a third-party algorithm library. 219e41f4b71Sopenharmony_ci 220e41f4b71Sopenharmony_ci**See** 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci[OH_CryptoDigest_Final](#oh_cryptodigest_final) 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ci 225e41f4b71Sopenharmony_ci### OH_DigestCrypto_Destroy() 226e41f4b71Sopenharmony_ci 227e41f4b71Sopenharmony_ci``` 228e41f4b71Sopenharmony_civoid OH_DigestCrypto_Destroy (OH_CryptoDigest *ctx) 229e41f4b71Sopenharmony_ci``` 230e41f4b71Sopenharmony_ci 231e41f4b71Sopenharmony_ci**Description** 232e41f4b71Sopenharmony_ci 233e41f4b71Sopenharmony_ciDestroys an MD instance. 234e41f4b71Sopenharmony_ci 235e41f4b71Sopenharmony_ci**Since**: 12 236e41f4b71Sopenharmony_ci 237e41f4b71Sopenharmony_ci**Parameters** 238e41f4b71Sopenharmony_ci 239e41f4b71Sopenharmony_ci| Name | Description | 240e41f4b71Sopenharmony_ci| -------- | -------- | 241e41f4b71Sopenharmony_ci| ctx | Pointer to the MD instance. | 242e41f4b71Sopenharmony_ci 243e41f4b71Sopenharmony_ci**Returns** 244e41f4b71Sopenharmony_ci 245e41f4b71Sopenharmony_ci[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 246e41f4b71Sopenharmony_ci 247e41f4b71Sopenharmony_ci**0**: The operation is successful. 248e41f4b71Sopenharmony_ci 249e41f4b71Sopenharmony_ci**401**: Invalid parameters are detected. 250e41f4b71Sopenharmony_ci 251e41f4b71Sopenharmony_ci**801**: The operation is not supported. 252e41f4b71Sopenharmony_ci 253e41f4b71Sopenharmony_ci**17620001**: A memory error occurred. 254e41f4b71Sopenharmony_ci 255e41f4b71Sopenharmony_ci**17630001**: Failed to call an API of a third-party algorithm library. 256