1# native_huks_api.h 2 3<!--Kit: Universal Keystore Kit--> 4<!--Subsystem: Security--> 5<!--Owner: @wutiantian-gitee--> 6<!--Designer: @HighLowWorld--> 7<!--Tester: @wxy1234564846--> 8<!--Adviser: @zengyawen--> 9 10## 概述 11 12声明用于访问HUKS的API。 13 14**引用文件:** <huks/native_huks_api.h> 15 16**库:** libhuks_ndk.z.so 17 18**系统能力:** SystemCapability.Security.Huks.Core 19 20在API 9-19,系统能力为SystemCapability.Security.Huks;从API 20起,系统能力变更为SystemCapability.Security.Huks.Core 21 22**起始版本:** 9 23 24**相关模块:** [HuksKeyApi](capi-hukskeyapi.md) 25 26## 汇总 27 28### 函数 29 30| 名称 | 描述 | 31| -- | -- | 32| [struct OH_Huks_Result OH_Huks_GetSdkVersion(struct OH_Huks_Blob *sdkVersion)](#oh_huks_getsdkversion) | 获取当前Huks sdk版本号。 | 33| [struct OH_Huks_Result OH_Huks_GenerateKeyItem(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSetIn, struct OH_Huks_ParamSet *paramSetOut)](#oh_huks_generatekeyitem) | 生成密钥。 | 34| [struct OH_Huks_Result OH_Huks_ImportKeyItem(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSet, const struct OH_Huks_Blob *key)](#oh_huks_importkeyitem) | 导入明文密钥。 | 35| [struct OH_Huks_Result OH_Huks_ImportWrappedKeyItem(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_Blob *wrappingKeyAlias, const struct OH_Huks_ParamSet *paramSet,const struct OH_Huks_Blob *wrappedKeyData)](#oh_huks_importwrappedkeyitem) | 导入密文密钥。 | 36| [struct OH_Huks_Result OH_Huks_ExportPublicKeyItem(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSet, struct OH_Huks_Blob *key)](#oh_huks_exportpublickeyitem) | 导出公钥。 | 37| [struct OH_Huks_Result OH_Huks_DeleteKeyItem(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSet)](#oh_huks_deletekeyitem) | 删除密钥。 | 38| [struct OH_Huks_Result OH_Huks_GetKeyItemParamSet(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSetIn, struct OH_Huks_ParamSet *paramSetOut)](#oh_huks_getkeyitemparamset) | 获取密钥的属性集。 | 39| [struct OH_Huks_Result OH_Huks_IsKeyItemExist(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSet)](#oh_huks_iskeyitemexist) | 判断密钥是否存在。 | 40| [struct OH_Huks_Result OH_Huks_AttestKeyItem(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSet, struct OH_Huks_CertChain *certChain)](#oh_huks_attestkeyitem) | 获取密钥证书链。该API仅面向系统应用开放。 | 41| [struct OH_Huks_Result OH_Huks_AnonAttestKeyItem(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSet, struct OH_Huks_CertChain *certChain)](#oh_huks_anonattestkeyitem) | 获取密钥证书链。<br> 这是一个涉及网络的耗时接口,调用方可以通过异步线程获取证书链。 | 42| [struct OH_Huks_Result OH_Huks_InitSession(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSet, struct OH_Huks_Blob *handle, struct OH_Huks_Blob *token)](#oh_huks_initsession) | 初始化密钥会话接口,并获取一个句柄(必选)和挑战值(可选)。 | 43| [struct OH_Huks_Result OH_Huks_UpdateSession(const struct OH_Huks_Blob *handle, const struct OH_Huks_ParamSet *paramSet, const struct OH_Huks_Blob *inData, struct OH_Huks_Blob *outData)](#oh_huks_updatesession) | 分段添加密钥操作的数据并进行相应的密钥操作,输出处理数据。 | 44| [struct OH_Huks_Result OH_Huks_FinishSession(const struct OH_Huks_Blob *handle, const struct OH_Huks_ParamSet *paramSet, const struct OH_Huks_Blob *inData, struct OH_Huks_Blob *outData)](#oh_huks_finishsession) | 结束密钥会话并进行相应的密钥操作,输出处理数据。 | 45| [struct OH_Huks_Result OH_Huks_AbortSession(const struct OH_Huks_Blob *handle, const struct OH_Huks_ParamSet *paramSet)](#oh_huks_abortsession) | 取消密钥会话。 | 46| [struct OH_Huks_Result OH_Huks_ListAliases(const struct OH_Huks_ParamSet *paramSet, struct OH_Huks_KeyAliasSet **outData)](#oh_huks_listaliases) | 获取密钥别名集。 | 47| [struct OH_Huks_Result OH_Huks_WrapKey(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSet, struct OH_Huks_Blob *wrappedKey)](#oh_huks_wrapkey) | 导出由特定密钥加密的封装密钥。 | 48| [struct OH_Huks_Result OH_Huks_UnwrapKey(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSet, struct OH_Huks_Blob *wrappedKey)](#oh_huks_unwrapkey) | 导入由特定密钥加密的封装密钥。 | 49 50## 函数说明 51 52### OH_Huks_GetSdkVersion() 53 54``` 55struct OH_Huks_Result OH_Huks_GetSdkVersion(struct OH_Huks_Blob *sdkVersion) 56``` 57 58**描述** 59 60获取当前Huks sdk版本号。 61 62**起始版本:** 9 63 64 65**参数:** 66 67| 参数项 | 描述 | 68| -- | -- | 69| [struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *sdkVersion | 用于存放获取到的版本信息(字符串格式)。 | 70 71**返回:** 72 73| 类型 | 说明 | 74| -- | -- | 75| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :sdkVersion或者sdkVersion->data是null,或者sdkVersion->size太小。 | 76 77### OH_Huks_GenerateKeyItem() 78 79``` 80struct OH_Huks_Result OH_Huks_GenerateKeyItem(const struct OH_Huks_Blob *keyAlias,const struct OH_Huks_ParamSet *paramSetIn, struct OH_Huks_ParamSet *paramSetOut) 81``` 82 83**描述** 84 85生成密钥。 86 87**起始版本:** 9 88 89 90**参数:** 91 92| 参数项 | 描述 | 93| -- | -- | 94| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *keyAlias | 给要生成的密钥的别名,需要保证业务所在进程内唯一,否则会发生覆盖。 | 95| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSetIn | 生成密钥的属性信息的参数集。 | 96| [struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSetOut | 生成密钥为临时类型时,存放着密钥数据;非临时类型可为空。 | 97 98**返回:** 99 100| 类型 | 说明 | 101| -- | -- | 102| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数keyAlias、paramSetIn、paramSetOut有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_FILE_OPERATION_FAIL = 12000004 :删除或者写文件失败。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_ITEM_NOT_EXIST = 12000011 :基础密钥文件不存在。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_CRYPTO_FAIL = 12000006 :加密引擎失败。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。<br> OH_HUKS_ERR_CODE_CALL_SERVICE_FAILED = 12000015 :连接用户IAM失败。<br> OH_HUKS_ERR_CODE_DEVICE_PASSWORD_UNSET = 12000016 :需要设备密码但没有设置。<br> OH_HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED = 12000001 :暂不支持该功能。<br> OH_HUKS_ERR_CODE_KEY_ALREADY_EXIST = 12000017(API 20新增): 同名密钥已存在。 | 103 104### OH_Huks_ImportKeyItem() 105 106``` 107struct OH_Huks_Result OH_Huks_ImportKeyItem(const struct OH_Huks_Blob *keyAlias,const struct OH_Huks_ParamSet *paramSet, const struct OH_Huks_Blob *key) 108``` 109 110**描述** 111 112导入明文密钥。 113 114**起始版本:** 9 115 116 117**参数:** 118 119| 参数项 | 描述 | 120| -- | -- | 121| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *keyAlias | 待导入密钥的别名,需要保证业务所在进程内唯一,否则会发生覆盖。 | 122| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 待导入密钥的属性参数。 | 123| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *key | 待导入密钥数据,需符合Huks的格式要求,具体见[native_huks_type.h](capi-native-huks-type-h.md)。 | 124 125**返回:** 126 127| 类型 | 说明 | 128| -- | -- | 129| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数keyAlias、paramSet、key有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_FILE_OPERATION_FAIL = 12000004 :删除或者写文件失败。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。<br> OH_HUKS_ERR_CODE_CALL_SERVICE_FAILED = 12000015 :连接用户IAM失败。<br> OH_HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED = 12000001 :暂不支持该功能。<br> OH_HUKS_ERR_CODE_KEY_ALREADY_EXIST = 12000017(API 20新增): 同名密钥已存在。 | 130 131### OH_Huks_ImportWrappedKeyItem() 132 133``` 134struct OH_Huks_Result OH_Huks_ImportWrappedKeyItem(const struct OH_Huks_Blob *keyAlias,const struct OH_Huks_Blob *wrappingKeyAlias, const struct OH_Huks_ParamSet *paramSet,const struct OH_Huks_Blob *wrappedKeyData) 135``` 136 137**描述** 138 139导入密文密钥。 140 141**起始版本:** 9 142 143 144**参数:** 145 146| 参数项 | 描述 | 147| -- | -- | 148| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *keyAlias | 待导入密钥的别名,需要保证业务所在进程内唯一,否则会发生覆盖。 | 149| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *wrappingKeyAlias | 密钥别名,该对应密钥用于密钥协商出密钥解密待导入密钥。 | 150| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 待导入加密密钥的属性参数。 | 151| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *wrappedKeyData | 需要导入的加密的密钥数据,需要符合Huks定义的格式,具体见[OH_Huks_AlgSuite](capi-native-huks-type-h.md#oh_huks_algsuite)。 | 152 153**返回:** 154 155| 类型 | 说明 | 156| -- | -- | 157| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数keyAlias、wrappingKeyAlias、paramSet、wrappedKeyData有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_FILE_OPERATION_FAIL = 12000004 :删除或者写文件失败。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_CRYPTO_FAIL = 12000006 :加密引擎失败。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。<br> OH_HUKS_ERR_CODE_CALL_SERVICE_FAILED = 12000015 :连接用户IAM失败。<br> OH_HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED = 12000001 :暂不支持该功能。<br> OH_HUKS_ERR_CODE_KEY_ALREADY_EXIST = 12000017(API 20新增): 同名密钥已存在。 | 158 159### OH_Huks_ExportPublicKeyItem() 160 161``` 162struct OH_Huks_Result OH_Huks_ExportPublicKeyItem(const struct OH_Huks_Blob *keyAlias,const struct OH_Huks_ParamSet *paramSet, struct OH_Huks_Blob *key) 163``` 164 165**描述** 166 167导出公钥。 168 169**起始版本:** 9 170 171 172**参数:** 173 174| 参数项 | 描述 | 175| -- | -- | 176| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *keyAlias | 待导出公钥的密钥别名,应与所用密钥生成时使用的别名相同。 | 177| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 导出公钥需要的属性参数。 | 178| [struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *key | 存放导出的公钥。 | 179 180**返回:** 181 182| 类型 | 说明 | 183| -- | -- | 184| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数keyAlias、paramSet、key有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_ITEM_NOT_EXIST = 12000011 :密钥文件不存在。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。<br> OH_HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED = 12000001 :暂不支持该功能。 | 185 186### OH_Huks_DeleteKeyItem() 187 188``` 189struct OH_Huks_Result OH_Huks_DeleteKeyItem(const struct OH_Huks_Blob *keyAlias,const struct OH_Huks_ParamSet *paramSet) 190``` 191 192**描述** 193 194删除密钥。 195 196**起始版本:** 9 197 198 199**参数:** 200 201| 参数项 | 描述 | 202| -- | -- | 203| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *keyAlias | 待删除密钥的别名,应与密钥生成时使用的别名相同。 | 204| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 删除密钥需要属性参数(默认传空)。若不指定则默认要删除的密钥存储等级为[OH_HUKS_AUTH_STORAGE_LEVEL_CE](capi-native-huks-type-h.md#oh_huks_authstoragelevel)。 | 205 206**返回:** 207 208| 类型 | 说明 | 209| -- | -- | 210| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数keyAlias、paramSet有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_ITEM_NOT_EXIST = 12000011 :密钥文件不存在。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。 | 211 212### OH_Huks_GetKeyItemParamSet() 213 214``` 215struct OH_Huks_Result OH_Huks_GetKeyItemParamSet(const struct OH_Huks_Blob *keyAlias,const struct OH_Huks_ParamSet *paramSetIn, struct OH_Huks_ParamSet *paramSetOut) 216``` 217 218**描述** 219 220获取密钥的属性集。 221 222**起始版本:** 9 223 224 225**参数:** 226 227| 参数项 | 描述 | 228| -- | -- | 229| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *keyAlias | 要获取参数集的密钥别名。 | 230| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSetIn | 要获取参数集需要的属性TAG(默认传空)。 | 231| [struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSetOut | 获取到的输出参数集。 | 232 233**返回:** 234 235| 类型 | 说明 | 236| -- | -- | 237| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数keyAlias、paramSetIn、paramSetOut有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_ITEM_NOT_EXIST = 12000011 :密钥文件不存在。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。<br> OH_HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED = 12000001 :暂不支持该功能。 | 238 239### OH_Huks_IsKeyItemExist() 240 241``` 242struct OH_Huks_Result OH_Huks_IsKeyItemExist(const struct OH_Huks_Blob *keyAlias,const struct OH_Huks_ParamSet *paramSet) 243``` 244 245**描述** 246 247判断密钥是否存在。 248 249**起始版本:** 9 250 251 252**参数:** 253 254| 参数项 | 描述 | 255| -- | -- | 256| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *keyAlias | 要查找的密钥的别名。 | 257| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 查询密钥需要的属性TAG(默认传空)。 | 258 259**返回:** 260 261| 类型 | 说明 | 262| -- | -- | 263| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数keyAlias、paramSet有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_ITEM_NOT_EXIST = 12000011 :密钥文件不存在。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。 | 264 265### OH_Huks_AttestKeyItem() 266 267``` 268struct OH_Huks_Result OH_Huks_AttestKeyItem(const struct OH_Huks_Blob *keyAlias,const struct OH_Huks_ParamSet *paramSet, struct OH_Huks_CertChain *certChain) 269``` 270 271**描述** 272 273获取密钥证书链。该API仅面向系统应用开放。 274 275**需要权限:** ohos.permission.ATTEST_KEY,该权限仅系统应用可申请。 276 277**起始版本:** 9 278 279 280**参数:** 281 282| 参数项 | 描述 | 283| -- | -- | 284| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *keyAlias | 要获取证书的密钥的别名。 | 285| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 获取密钥证书需要的参数。 | 286| [struct OH_Huks_CertChain](capi-hukstypeapi-oh-huks-certchain.md) *certChain | 存放输出的密钥证书链。 | 287 288**返回:** 289 290| 类型 | 说明 | 291| -- | -- | 292| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数keyAlias、paramSet、certChain有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_ITEM_NOT_EXIST = 12000011 :密钥文件不存在。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_CRYPTO_FAIL = 12000006 :加密引擎失败。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。<br> OH_HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED = 12000001 :暂不支持该功能。<br> OH_HUKS_ERR_CODE_PERMISSION_FAIL = 201 :权限检查失败,请先申请请求权限。 | 293 294### OH_Huks_AnonAttestKeyItem() 295 296``` 297struct OH_Huks_Result OH_Huks_AnonAttestKeyItem(const struct OH_Huks_Blob *keyAlias,const struct OH_Huks_ParamSet *paramSet, struct OH_Huks_CertChain *certChain) 298``` 299 300**描述** 301 302获取密钥证书链。<br> 这是一个涉及网络的耗时接口,调用方可以通过异步线程获取证书链。 303 304**起始版本:** 11 305 306 307**参数:** 308 309| 参数项 | 描述 | 310| -- | -- | 311| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *keyAlias | 要获取证书的密钥的别名。 | 312| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 获取密钥证书需要的参数。 | 313| [struct OH_Huks_CertChain](capi-hukstypeapi-oh-huks-certchain.md) *certChain | 存放输出的密钥证书链。 | 314 315**返回:** 316 317| 类型 | 说明 | 318| -- | -- | 319| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数keyAlias、paramSet、certChain有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_ITEM_NOT_EXIST = 12000011 :密钥文件不存在。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_CRYPTO_FAIL = 12000006 :加密引擎失败。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。<br> OH_HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED = 12000001 :暂不支持该功能。<br> OH_HUKS_ERR_CODE_PERMISSION_FAIL = 201 :权限检查失败,请先申请请求权限。 | 320 321### OH_Huks_InitSession() 322 323``` 324struct OH_Huks_Result OH_Huks_InitSession(const struct OH_Huks_Blob *keyAlias,const struct OH_Huks_ParamSet *paramSet, struct OH_Huks_Blob *handle, struct OH_Huks_Blob *token) 325``` 326 327**描述** 328 329初始化密钥会话接口,并获取一个句柄(必选)和挑战值(可选)。 330 331**起始版本:** 9 332 333 334**参数:** 335 336| 参数项 | 描述 | 337| -- | -- | 338| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *keyAlias | 操作的密钥的别名。 | 339| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 初始化操作的密钥参数集合。 | 340| [struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *handle | 密钥会话的句柄,后续其他操作时传入该句柄,包括[OH_Huks_UpdateSession](#oh_huks_updatesession),[OH_Huks_FinishSession](#oh_huks_finishsession),[OH_Huks_AbortSession](#oh_huks_abortsession)。 | 341| [struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *token | 存放安全访问控制时传回的token。 | 342 343**返回:** 344 345| 类型 | 说明 | 346| -- | -- | 347| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数 keyAlias、paramSet、handle、token有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_ITEM_NOT_EXIST = 12000011 :密钥文件不存在。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_SESSION_LIMIT = 12000010 :已达最大会话限制。<br> OH_HUKS_ERR_CODE_CRYPTO_FAIL = 12000006 :加密引擎失败。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。<br> OH_HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED = 12000001 :暂不支持该功能。 | 348 349**参考:** 350 351[OH_Huks_UpdateSession](#oh_huks_updatesession) 352 353[OH_Huks_FinishSession](#oh_huks_finishsession) 354 355[OH_Huks_AbortSession](#oh_huks_abortsession) 356 357 358### OH_Huks_UpdateSession() 359 360``` 361struct OH_Huks_Result OH_Huks_UpdateSession(const struct OH_Huks_Blob *handle,const struct OH_Huks_ParamSet *paramSet, const struct OH_Huks_Blob *inData, struct OH_Huks_Blob *outData) 362``` 363 364**描述** 365 366分段添加密钥操作的数据并进行相应的密钥操作,输出处理数据。 367 368**起始版本:** 9 369 370 371**参数:** 372 373| 参数项 | 描述 | 374| -- | -- | 375| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *handle | 密钥会话句柄,通过[OH_Huks_InitSession](#oh_huks_initsession)接口生成。 | 376| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 密钥操作对应的输入参数集。 | 377| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *inData | 要处理的输入数据,如果数据过大,可分片多次调用。 | 378| [struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *outData | 经过对应的密钥操作后输出的数据。 | 379 380**返回:** 381 382| 类型 | 说明 | 383| -- | -- | 384| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数handle、paramSet、inData、outData有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_ITEM_NOT_EXIST = 12000011 :密钥文件不存在,或handle不存在。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_CREDENTIAL_NOT_EXIST = 12000013 :证书不存在。<br> OH_HUKS_ERR_CODE_CRYPTO_FAIL = 12000006 :加密引擎失败。<br> OH_HUKS_ERR_CODE_KEY_AUTH_VERIFY_FAILED = 12000008 :认证令牌校验失败。<br> OH_HUKS_ERR_CODE_KEY_AUTH_PERMANENTLY_INVALIDATED = 12000007 :认证令牌信息校验失败。<br> OH_HUKS_ERR_CODE_KEY_AUTH_TIME_OUT = 12000009 :认证令牌超时。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。<br> OH_HUKS_ERR_CODE_DEVICE_PASSWORD_UNSET = 12000016 :需要设备密码但没有设置。<br> OH_HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED = 12000001 :暂不支持该功能。 | 385 386**参考:** 387 388[OH_Huks_InitSession](#oh_huks_initsession) 389 390[OH_Huks_FinishSession](#oh_huks_finishsession) 391 392[OH_Huks_AbortSession](#oh_huks_abortsession) 393 394 395### OH_Huks_FinishSession() 396 397``` 398struct OH_Huks_Result OH_Huks_FinishSession(const struct OH_Huks_Blob *handle,const struct OH_Huks_ParamSet *paramSet, const struct OH_Huks_Blob *inData, struct OH_Huks_Blob *outData) 399``` 400 401**描述** 402 403结束密钥会话并进行相应的密钥操作,输出处理数据。 404 405**起始版本:** 9 406 407 408**参数:** 409 410| 参数项 | 描述 | 411| -- | -- | 412| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *handle | 密钥会话句柄,通过[OH_Huks_InitSession](#oh_huks_initsession)接口生成。 | 413| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 密钥操作对应的输入参数集。 | 414| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *inData | 要处理的输入数据。 | 415| [struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *outData | 经过对应的密钥操作后输出的数据。 | 416 417**返回:** 418 419| 类型 | 说明 | 420| -- | -- | 421| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数handle、paramSet、inData、outData有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_ITEM_NOT_EXIST = 12000011 :密钥文件不存在,或handle不存在。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_CREDENTIAL_NOT_EXIST = 12000013 :证书不存在。<br> OH_HUKS_ERR_CODE_CRYPTO_FAIL = 12000006 :加密引擎失败。<br> OH_HUKS_ERR_CODE_KEY_AUTH_VERIFY_FAILED = 12000008 :认证令牌校验失败。<br> OH_HUKS_ERR_CODE_KEY_AUTH_PERMANENTLY_INVALIDATED = 12000007 :认证令牌信息校验失败。<br> OH_HUKS_ERR_CODE_KEY_AUTH_TIME_OUT = 12000009 :认证令牌超时。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。<br> OH_HUKS_ERR_CODE_DEVICE_PASSWORD_UNSET = 12000016 :需要设备密码但没有设置。<br> OH_HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED = 12000001 :暂不支持该功能。<br> OH_HUKS_ERR_CODE_KEY_ALREADY_EXIST = 12000017(API 20新增): 同名密钥已存在。 | 422 423**参考:** 424 425[OH_Huks_InitSession](#oh_huks_initsession) 426 427[OH_Huks_UpdateSession](#oh_huks_updatesession) 428 429[OH_Huks_AbortSession](#oh_huks_abortsession) 430 431 432### OH_Huks_AbortSession() 433 434``` 435struct OH_Huks_Result OH_Huks_AbortSession(const struct OH_Huks_Blob *handle,const struct OH_Huks_ParamSet *paramSet) 436``` 437 438**描述** 439 440取消密钥会话。 441 442**起始版本:** 9 443 444 445**参数:** 446 447| 参数项 | 描述 | 448| -- | -- | 449| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *handle | 密钥会话句柄,通过[OH_Huks_InitSession](#oh_huks_initsession)接口生成。 | 450| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 取消密钥会话需要的输入参数集(默认传空)。 | 451 452**返回:** 453 454| 类型 | 说明 | 455| -- | -- | 456| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数handle、paramSet、inData、outData有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003 :密钥参数无效。<br> OH_HUKS_ERR_CODE_ITEM_NOT_EXIST = 12000011 :密钥文件不存在,或handle不存在。<br> OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002 :获取密钥参数失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_CREDENTIAL_NOT_EXIST = 12000013 :证书不存在。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。 | 457 458**参考:** 459 460[OH_Huks_InitSession](#oh_huks_initsession) 461 462[OH_Huks_UpdateSession](#oh_huks_updatesession) 463 464[OH_Huks_FinishSession](#oh_huks_finishsession) 465 466 467### OH_Huks_ListAliases() 468 469``` 470struct OH_Huks_Result OH_Huks_ListAliases(const struct OH_Huks_ParamSet *paramSet,struct OH_Huks_KeyAliasSet **outData) 471``` 472 473**描述** 474 475获取密钥别名集。 476 477**起始版本:** 20 478 479 480**参数:** 481 482| 参数项 | 描述 | 483| -- | -- | 484| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 获取密钥别名集需要的输入参数集(默认传空)。 | 485| [struct OH_Huks_KeyAliasSet](capi-hukstypeapi-oh-huks-keyaliasset.md) **outData | 经过对应的密钥操作后输出的数据。 | 486 487**返回:** 488 489| 类型 | 说明 | 490| -- | -- | 491| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401 :参数paramSet、outData有一个无效。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。 | 492 493### OH_Huks_WrapKey() 494 495``` 496struct OH_Huks_Result OH_Huks_WrapKey(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSet,struct OH_Huks_Blob *wrappedKey) 497``` 498 499**描述** 500 501导出由特定密钥加密的封装密钥。 502 503**起始版本:** 20 504 505 506**参数:** 507 508| 参数项 | 描述 | 509| -- | -- | 510| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *keyAlias | 表示要导出的密钥别名。 | 511| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 表示加密导出密钥的参数集。 | 512| [struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *wrappedKey | 表示要导出的封装好的密钥。 | 513 514**返回:** 515 516| 类型 | 说明 | 517| -- | -- | 518| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_NOT_SUPPORTED_API = 801 :接口不支持。<br> OH_HUKS_ERR_CODE_FILE_OPERATION_FAIL = 12000004 :删除或者写文件失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_CRYPTO_FAIL = 12000011 :密钥文件不存在。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。<br> OH_HUKS_ERR_CODE_INVALID_ARGUMENT = 12000018 :密钥别名、参数集或者封装密钥不合法。 | 519 520### OH_Huks_UnwrapKey() 521 522``` 523struct OH_Huks_Result OH_Huks_UnwrapKey(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_ParamSet *paramSet,struct OH_Huks_Blob *wrappedKey) 524``` 525 526**描述** 527 528导入由特定密钥加密的封装密钥。 529 530**起始版本:** 20 531 532 533**参数:** 534 535| 参数项 | 描述 | 536| -- | -- | 537| [const struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *keyAlias | 表示要导入的密钥别名。在服务进程中,别名必须唯一。否则,密钥将被覆盖。 | 538| [const struct OH_Huks_ParamSet](capi-hukstypeapi-oh-huks-paramset.md) *paramSet | 表示加密导入密钥的参数集。 | 539| [struct OH_Huks_Blob](capi-hukstypeapi-oh-huks-blob.md) *wrappedKey | 表示要导入的封装好的密钥。 | 540 541**返回:** 542 543| 类型 | 说明 | 544| -- | -- | 545| [struct OH_Huks_Result](capi-hukstypeapi-oh-huks-result.md) | 可能的返回码(errorCode):<br> OH_HUKS_SUCCESS = 0 :操作成功。<br> OH_HUKS_ERR_CODE_NOT_SUPPORTED_API = 801 :接口不支持。<br> OH_HUKS_ERR_CODE_FILE_OPERATION_FAIL = 12000004 :删除或者写文件失败。<br> OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005 :IPC通信失败。<br> OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012 :发生系统错误。<br> OH_HUKS_ERR_CODE_INSUFFICIENT_MEMORY = 12000014 :内存不足。<br> OH_HUKS_ERR_CODE_CALL_SERVICE_FAILED = 12000015 :连接用户IAM失败。<br> OH_HUKS_ERR_CODE_INVALID_ARGUMENT = 12000018 :密钥别名、参数集或者封装密钥不合法。 | 546 547 548