• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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