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