1# crypto_kdf.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定义密钥派生接口。 13 14**引用文件:** <CryptoArchitectureKit/crypto_kdf.h> 15 16**库:** libohcrypto.so 17 18**系统能力:** SystemCapability.Security.CryptoFramework 19 20**起始版本:** 20 21 22**相关模块:** [CryptoKdfApi](capi-cryptokdfapi.md) 23 24## 汇总 25 26### 结构体 27 28| 名称 | typedef关键字 | 描述 | 29| -- | -- | -- | 30| [OH_CryptoKdf](capi-cryptokdfapi-oh-cryptokdf.md) | OH_CryptoKdf | 定义密钥派生函数(KDF)结构。 | 31| [OH_CryptoKdfParams](capi-cryptokdfapi-oh-cryptokdfparams.md) | OH_CryptoKdfParams | 定义密钥派生函数(KDF)参数结构。 | 32 33### 枚举 34 35| 名称 | typedef关键字 | 描述 | 36| -- | -- | -- | 37| [CryptoKdf_ParamType](#cryptokdf_paramtype) | CryptoKdf_ParamType | 定义密钥派生函数(KDF)参数类型。 | 38 39### 函数 40 41| 名称 | 描述 | 42| -- | -- | 43| [OH_Crypto_ErrCode OH_CryptoKdfParams_Create(const char *algoName, OH_CryptoKdfParams **params)](#oh_cryptokdfparams_create) | 创建密钥派生函数(KDF)参数。 | 44| [OH_Crypto_ErrCode OH_CryptoKdfParams_SetParam(OH_CryptoKdfParams *params, CryptoKdf_ParamType type, Crypto_DataBlob *value)](#oh_cryptokdfparams_setparam) | 设置密钥派生函数(KDF)参数。 | 45| [void OH_CryptoKdfParams_Destroy(OH_CryptoKdfParams *params)](#oh_cryptokdfparams_destroy) | 销毁密钥派生函数(KDF)参数。 | 46| [OH_Crypto_ErrCode OH_CryptoKdf_Create(const char *algoName, OH_CryptoKdf **ctx)](#oh_cryptokdf_create) | 创建密钥派生函数(KDF)实例。 | 47| [OH_Crypto_ErrCode OH_CryptoKdf_Derive(OH_CryptoKdf *ctx, const OH_CryptoKdfParams *params, int keyLen,Crypto_DataBlob *key)](#oh_cryptokdf_derive) | 派生密钥。 | 48| [void OH_CryptoKdf_Destroy(OH_CryptoKdf *ctx)](#oh_cryptokdf_destroy) | 销毁密钥派生函数(KDF)实例。 | 49 50## 枚举类型说明 51 52### CryptoKdf_ParamType 53 54``` 55enum CryptoKdf_ParamType 56``` 57 58**描述** 59 60定义密钥派生函数(KDF)参数类型。 61 62**起始版本:** 20 63 64| 枚举项 | 描述 | 65| -- | -- | 66| CRYPTO_KDF_KEY_DATABLOB = 0 | 表示KDF的密钥或密码。 | 67| CRYPTO_KDF_SALT_DATABLOB = 1 | 表示KDF的盐值。 | 68| CRYPTO_KDF_INFO_DATABLOB = 2 | 表示KDF的信息。 | 69| CRYPTO_KDF_ITER_COUNT_INT = 3 | 表示PBKDF2的迭代次数。 | 70| CRYPTO_KDF_SCRYPT_N_UINT64 = 4 | 表示SCRYPT KDF的n参数。 | 71| CRYPTO_KDF_SCRYPT_R_UINT64 = 5 | 表示SCRYPT KDF的r参数。 | 72| CRYPTO_KDF_SCRYPT_P_UINT64 = 6 | 表示SCRYPT KDF的p参数。 | 73| CRYPTO_KDF_SCRYPT_MAX_MEM_UINT64 = 7 | 表示SCRYPT KDF的最大内存使用量。 | 74 75 76## 函数说明 77 78### OH_CryptoKdfParams_Create() 79 80``` 81OH_Crypto_ErrCode OH_CryptoKdfParams_Create(const char *algoName, OH_CryptoKdfParams **params) 82``` 83 84**描述** 85 86创建密钥派生函数(KDF)参数。 87 88**起始版本:** 20 89 90 91**参数:** 92 93| 参数项 | 描述 | 94| -- | -- | 95| const char *algoName | KDF算法名称。<br> 例如"HKDF\|SHA384\|EXTRACT_AND_EXPAND"、"PBKDF2\|SHA384"。 | 96| [OH_CryptoKdfParams](capi-cryptokdfapi-oh-cryptokdfparams.md) **params | KDF参数。 | 97 98**返回:** 99 100| 类型 | 说明 | 101| -- | -- | 102| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 103 104### OH_CryptoKdfParams_SetParam() 105 106``` 107OH_Crypto_ErrCode OH_CryptoKdfParams_SetParam(OH_CryptoKdfParams *params, CryptoKdf_ParamType type,Crypto_DataBlob *value) 108``` 109 110**描述** 111 112设置密钥派生函数(KDF)参数。 113 114**起始版本:** 20 115 116 117**参数:** 118 119| 参数项 | 描述 | 120| -- | -- | 121| [OH_CryptoKdfParams](capi-cryptokdfapi-oh-cryptokdfparams.md) *params | KDF参数。 | 122| [CryptoKdf_ParamType](#cryptokdf_paramtype) type | KDF参数类型。 | 123| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *value | KDF参数值。 | 124 125**返回:** 126 127| 类型 | 说明 | 128| -- | -- | 129| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 130 131### OH_CryptoKdfParams_Destroy() 132 133``` 134void OH_CryptoKdfParams_Destroy(OH_CryptoKdfParams *params) 135``` 136 137**描述** 138 139销毁密钥派生函数(KDF)参数。 140 141**起始版本:** 20 142 143 144**参数:** 145 146| 参数项 | 描述 | 147| -- | -- | 148| [OH_CryptoKdfParams](capi-cryptokdfapi-oh-cryptokdfparams.md) *params | KDF参数。 | 149 150### OH_CryptoKdf_Create() 151 152``` 153OH_Crypto_ErrCode OH_CryptoKdf_Create(const char *algoName, OH_CryptoKdf **ctx) 154``` 155 156**描述** 157 158创建密钥派生函数(KDF)实例。 159 160**起始版本:** 20 161 162 163**参数:** 164 165| 参数项 | 描述 | 166| -- | -- | 167| const char *algoName | KDF算法名称。 | 168| [OH_CryptoKdf](capi-cryptokdfapi-oh-cryptokdf.md) **ctx | KDF实例。 | 169 170**返回:** 171 172| 类型 | 说明 | 173| -- | -- | 174| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 175 176### OH_CryptoKdf_Derive() 177 178``` 179OH_Crypto_ErrCode OH_CryptoKdf_Derive(OH_CryptoKdf *ctx, const OH_CryptoKdfParams *params, int keyLen,Crypto_DataBlob *key) 180``` 181 182**描述** 183 184派生密钥。 185 186**起始版本:** 20 187 188 189**参数:** 190 191| 参数项 | 描述 | 192| -- | -- | 193| [OH_CryptoKdf](capi-cryptokdfapi-oh-cryptokdf.md) *ctx | KDF实例。 | 194| [const OH_CryptoKdfParams](capi-cryptokdfapi-oh-cryptokdfparams.md) *params | KDF参数。 | 195| int keyLen | 密钥派生长度。 | 196| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *key | 派生出的密钥。 | 197 198**返回:** 199 200| 类型 | 说明 | 201| -- | -- | 202| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 203 204### OH_CryptoKdf_Destroy() 205 206``` 207void OH_CryptoKdf_Destroy(OH_CryptoKdf *ctx) 208``` 209 210**描述** 211 212销毁密钥派生函数(KDF)实例。 213 214**起始版本:** 20 215 216 217**参数:** 218 219| 参数项 | 描述 | 220| -- | -- | 221| [OH_CryptoKdf](capi-cryptokdfapi-oh-cryptokdf.md) *ctx | KDF实例。 | 222 223 224