1# crypto_digest.h 2 3<!--Kit: Crypto Architecture Kit--> 4<!--Subsystem: Security--> 5<!--Owner: @zxz--3--> 6<!--Designer: @lanming--> 7<!--Tester: @PAFT--> 8<!--Adviser: @zengyawen--> 9 10## 概述 11 12定义摘要算法API。 13 14**引用文件:** <CryptoArchitectureKit/crypto_digest.h> 15 16**库:** libohcrypto.so 17 18**系统能力:** SystemCapability.Security.CryptoFramework 19 20**起始版本:** 12 21 22**相关模块:** [CryptoDigestApi](capi-cryptodigestapi.md) 23 24## 汇总 25 26### 结构体 27 28| 名称 | typedef关键字 | 描述 | 29| -- | -- | -- | 30| [OH_CryptoDigest](capi-cryptodigestapi-oh-cryptodigest.md) | OH_CryptoDigest | 定义摘要结构体。 | 31 32### 函数 33 34| 名称 | 描述 | 35| -- | -- | 36| [OH_Crypto_ErrCode OH_CryptoDigest_Create(const char *algoName, OH_CryptoDigest **ctx)](#oh_cryptodigest_create) | 根据给定的算法名称创建一个摘要实例。 | 37| [OH_Crypto_ErrCode OH_CryptoDigest_Update(OH_CryptoDigest *ctx, Crypto_DataBlob *in)](#oh_cryptodigest_update) | 更新摘要数据。 | 38| [OH_Crypto_ErrCode OH_CryptoDigest_Final(OH_CryptoDigest *ctx, Crypto_DataBlob *out)](#oh_cryptodigest_final) | 完成摘要计算。 | 39| [uint32_t OH_CryptoDigest_GetLength(OH_CryptoDigest *ctx)](#oh_cryptodigest_getlength) | 获取摘要长度。 | 40| [const char *OH_CryptoDigest_GetAlgoName(OH_CryptoDigest *ctx)](#oh_cryptodigest_getalgoname) | 获取摘要算法名称。 | 41| [void OH_DigestCrypto_Destroy(OH_CryptoDigest *ctx)](#oh_digestcrypto_destroy) | 销毁摘要实例。 | 42 43## 函数说明 44 45### OH_CryptoDigest_Create() 46 47``` 48OH_Crypto_ErrCode OH_CryptoDigest_Create(const char *algoName, OH_CryptoDigest **ctx) 49``` 50 51**描述** 52 53根据给定的算法名称创建一个摘要实例。 54 55**起始版本:** 12 56 57 58**参数:** 59 60| 参数项 | 描述 | 61| -- | -- | 62| const char *algoName | 用于生成摘要实例的算法名称。<br> 例如"SHA256"。 | 63| [OH_CryptoDigest](capi-cryptodigestapi-oh-cryptodigest.md) **ctx | 指向摘要实例的指针。 | 64 65**返回:** 66 67| 类型 | 说明 | 68| -- | -- | 69| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_INVALID_PARAMS:参数无效。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 70 71### OH_CryptoDigest_Update() 72 73``` 74OH_Crypto_ErrCode OH_CryptoDigest_Update(OH_CryptoDigest *ctx, Crypto_DataBlob *in) 75``` 76 77**描述** 78 79更新摘要数据。 80 81**起始版本:** 12 82 83 84**参数:** 85 86| 参数项 | 描述 | 87| -- | -- | 88| [OH_CryptoDigest](capi-cryptodigestapi-oh-cryptodigest.md) *ctx | 指向摘要实例。 | 89| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *in | 传入的消息。 | 90 91**返回:** 92 93| 类型 | 说明 | 94| -- | -- | 95| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_INVALID_PARAMS:参数无效。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 96 97**参考:** 98 99[OH_CryptoDigest_Final](capi-crypto-digest-h.md#oh_cryptodigest_final) 100 101 102### OH_CryptoDigest_Final() 103 104``` 105OH_Crypto_ErrCode OH_CryptoDigest_Final(OH_CryptoDigest *ctx, Crypto_DataBlob *out) 106``` 107 108**描述** 109 110完成摘要计算。 111 112**起始版本:** 12 113 114 115**参数:** 116 117| 参数项 | 描述 | 118| -- | -- | 119| [OH_CryptoDigest](capi-cryptodigestapi-oh-cryptodigest.md) *ctx | 指向摘要实例。 | 120| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *out | 返回的Md的计算结果。 | 121 122**返回:** 123 124| 类型 | 说明 | 125| -- | -- | 126| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_INVALID_PARAMS:参数无效。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 127 128**参考:** 129 130[OH_CryptoDigest_Update](capi-crypto-digest-h.md#oh_cryptodigest_update) 131 132 133### OH_CryptoDigest_GetLength() 134 135``` 136uint32_t OH_CryptoDigest_GetLength(OH_CryptoDigest *ctx) 137``` 138 139**描述** 140 141获取摘要长度。 142 143**起始版本:** 12 144 145 146**参数:** 147 148| 参数项 | 描述 | 149| -- | -- | 150| [OH_CryptoDigest](capi-cryptodigestapi-oh-cryptodigest.md) *ctx | 指向摘要实例。 | 151 152**返回:** 153 154| 类型 | 说明 | 155| -- | -- | 156| uint32_t | 返回摘要长度。<br> 如果输入参数ctx为NULL,则返回401,其他情况下返回0。 | 157 158### OH_CryptoDigest_GetAlgoName() 159 160``` 161const char *OH_CryptoDigest_GetAlgoName(OH_CryptoDigest *ctx) 162``` 163 164**描述** 165 166获取摘要算法名称。 167 168**起始版本:** 12 169 170 171**参数:** 172 173| 参数项 | 描述 | 174| -- | -- | 175| [OH_CryptoDigest](capi-cryptodigestapi-oh-cryptodigest.md) *ctx | 指向摘要实例。 | 176 177**返回:** 178 179| 类型 | 说明 | 180| -- | -- | 181| const char * | 返回摘要算法名称。 | 182 183### OH_DigestCrypto_Destroy() 184 185``` 186void OH_DigestCrypto_Destroy(OH_CryptoDigest *ctx) 187``` 188 189**描述** 190 191销毁摘要实例。 192 193**起始版本:** 12 194 195 196**参数:** 197 198| 参数项 | 描述 | 199| -- | -- | 200| [OH_CryptoDigest](capi-cryptodigestapi-oh-cryptodigest.md) *ctx | 指向摘要实例。 | 201 202 203