• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 通用密钥库系统
2
3> **说明**
4>
5> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
6
7向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。
8HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。
9
10## 导入模块
11
12```js
13import huks from '@ohos.security.huks'
14```
15## HuksErrorCode
16
17表示错误码的枚举。
18
19**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks20
21| 名称                       | 值    | 说明 |
22| -------------------------- | ----- | ---- |
23| HUKS_SUCCESS | 0     |表示成功。|
24| HUKS_FAILURE | -1    |表示失败。|
25| HUKS_ERROR_BAD_STATE | -2    |表示错误的状态。|
26| HUKS_ERROR_INVALID_ARGUMENT | -3    |表示无效的数据。|
27| HUKS_ERROR_NOT_SUPPORTED | -4    |表示不支持。|
28| HUKS_ERROR_NO_PERMISSION | -5    |表示没有许可。|
29| HUKS_ERROR_INSUFFICIENT_DATA | -6    |表示数据不足。|
30| HUKS_ERROR_BUFFER_TOO_SMALL | -7    |表示缓冲区太小。|
31| HUKS_ERROR_INSUFFICIENT_MEMORY | -8    |表示内存不足。|
32| HUKS_ERROR_COMMUNICATION_FAILURE | -9    |表示通讯失败。|
33| HUKS_ERROR_STORAGE_FAILURE | -10   |表示存储故障。|
34| HUKS_ERROR_HARDWARE_FAILURE | -11   |表示硬件故障。|
35| HUKS_ERROR_ALREADY_EXISTS | -12   |表示已经存在。|
36| HUKS_ERROR_NOT_EXIST | -13   |表示不存在。|
37| HUKS_ERROR_NULL_POINTER | -14   |表示空指针。|
38| HUKS_ERROR_FILE_SIZE_FAIL | -15   |表示文件大小失败。|
39| HUKS_ERROR_READ_FILE_FAIL | -16   |表示读取文件失败。|
40| HUKS_ERROR_INVALID_PUBLIC_KEY | -17   |表示无效的公钥。|
41| HUKS_ERROR_INVALID_PRIVATE_KEY | -18   |表示无效的私钥。|
42| HUKS_ERROR_INVALID_KEY_INFO | -19   |表示无效的密钥信息。|
43| HUKS_ERROR_HASH_NOT_EQUAL | -20   |表示哈希不相等。|
44| HUKS_ERROR_MALLOC_FAIL | -21   |表示MALLOC 失败。|
45| HUKS_ERROR_WRITE_FILE_FAIL | -22   |表示写文件失败。|
46| HUKS_ERROR_REMOVE_FILE_FAIL | -23   |表示删除文件失败。|
47| HUKS_ERROR_OPEN_FILE_FAIL | -24   |表示打开文件失败。|
48| HUKS_ERROR_CLOSE_FILE_FAIL | -25   |表示关闭文件失败。|
49| HUKS_ERROR_MAKE_DIR_FAIL | -26   |表示创建目录失败。|
50| HUKS_ERROR_INVALID_KEY_FILE | -27   |表示无效的密钥文件。|
51| HUKS_ERROR_IPC_MSG_FAIL | -28   |表示IPC 信息失败。|
52| HUKS_ERROR_REQUEST_OVERFLOWS | -29   |表示请求溢出。|
53| HUKS_ERROR_PARAM_NOT_EXIST | -30   |表示参数不存在。|
54| HUKS_ERROR_CRYPTO_ENGINE_ERROR | -31   |表示CRYPTO ENGINE错误。|
55| HUKS_ERROR_COMMUNICATION_TIMEOUT | -32   |表示通讯超时。|
56| HUKS_ERROR_IPC_INIT_FAIL | -33   |表示IPC 初始化失败。|
57| HUKS_ERROR_IPC_DLOPEN_FAIL | -34   |表示IPC DLOPEN 失败。|
58| HUKS_ERROR_EFUSE_READ_FAIL | -35   |表示EFUSE 读取失败。|
59| HUKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST | -36   |表示存在新的根密钥材料。|
60| HUKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL | -37   |表示更新根密钥材料失败。|
61| HUKS_ERROR_VERIFICATION_FAILED | -38   |表示验证证书链失败。|
62| HUKS_ERROR_CHECK_GET_ALG_FAIL | -100  |表示检查获取 ALG 失败。|
63| HUKS_ERROR_CHECK_GET_KEY_SIZE_FAIL | -101  |表示检查获取密钥大小失败。|
64| HUKS_ERROR_CHECK_GET_PADDING_FAIL | -102  |表示检查获取填充失败。|
65| HUKS_ERROR_CHECK_GET_PURPOSE_FAIL | -103  |表示检查获取目的失败。|
66| HUKS_ERROR_CHECK_GET_DIGEST_FAIL | -104  |表示检查获取摘要失败。|
67| HUKS_ERROR_CHECK_GET_MODE_FAIL | -105  |表示检查获取模式失败。|
68| HUKS_ERROR_CHECK_GET_NONCE_FAIL | -106  |表示检查获取随机数失败。|
69| HUKS_ERROR_CHECK_GET_AAD_FAIL | -107  |表示检查获取 AAD 失败。|
70| HUKS_ERROR_CHECK_GET_IV_FAIL | -108  |表示检查 GET IV 失败。|
71| HUKS_ERROR_CHECK_GET_AE_TAG_FAIL | -109  |表示检查获取 AE 标记失败。|
72| HUKS_ERROR_CHECK_GET_SALT_FAIL | -110  |表示检查获取SALT失败。|
73| HUKS_ERROR_CHECK_GET_ITERATION_FAIL | -111  |表示检查获取迭代失败。|
74| HUKS_ERROR_INVALID_ALGORITHM | -112  |表示无效的算法。|
75| HUKS_ERROR_INVALID_KEY_SIZE | -113  |表示无效的密钥大小。|
76| HUKS_ERROR_INVALID_PADDING | -114  |表示无效的填充。|
77| HUKS_ERROR_INVALID_PURPOSE | -115  |表示无效的目的。|
78| HUKS_ERROR_INVALID_MODE | -116  |表示无效模式。|
79| HUKS_ERROR_INVALID_DIGEST | -117  |表示无效的摘要。|
80| HUKS_ERROR_INVALID_SIGNATURE_SIZE | -118  |表示签名大小无效。|
81| HUKS_ERROR_INVALID_IV | -119  |表示无效的 IV。|
82| HUKS_ERROR_INVALID_AAD | -120  |表示无效的 AAD。|
83| HUKS_ERROR_INVALID_NONCE | -121  |表示无效的随机数。|
84| HUKS_ERROR_INVALID_AE_TAG | -122  |表示无效的 AE 标签。|
85| HUKS_ERROR_INVALID_SALT | -123  |表示无效SALT。|
86| HUKS_ERROR_INVALID_ITERATION | -124  |表示无效的迭代。|
87| HUKS_ERROR_INVALID_OPERATION | -125  |表示无效操作。|
88| HUKS_ERROR_INTERNAL_ERROR | -999  |表示内部错误。|
89| HUKS_ERROR_UNKNOWN_ERROR | -1000 |表示未知错误。|
90
91
92## HuksKeyPurpose
93
94表示密钥用途。
95
96**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks97
98| 名称                     | 值   | 说明                             |
99| ------------------------ | ---- | -------------------------------- |
100| HUKS_KEY_PURPOSE_ENCRYPT | 1    | 表示密钥用于对明文进行加密操作。 |
101| HUKS_KEY_PURPOSE_DECRYPT | 2    | 表示密钥用于对密文进行解密操作。 |
102| HUKS_KEY_PURPOSE_SIGN    | 4    | 表示密钥用于对数据进行签名。     |
103| HUKS_KEY_PURPOSE_VERIFY  | 8    | 表示密钥用于验证签名后的数据。   |
104| HUKS_KEY_PURPOSE_DERIVE  | 16   | 表示密钥用于派生密钥。           |
105| HUKS_KEY_PURPOSE_WRAP    | 32   | 表示密钥用于加密导入。           |
106| HUKS_KEY_PURPOSE_UNWRAP  | 64   | 表示密钥加密导出。               |
107| HUKS_KEY_PURPOSE_MAC     | 128  | 表示密钥用于生成mac消息验证码。  |
108| HUKS_KEY_PURPOSE_AGREE   | 256  | 表示密钥用于进行密钥协商。       |
109
110## HuksKeyDigest
111
112表示摘要算法。
113
114**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks115
116| 名称                   | 值   | 说明                                     |
117| ---------------------- | ---- | ---------------------------------------- |
118| HUKS_DIGEST_NONE       | 0   | 表示无摘要算法。 |
119| HUKS_DIGEST_MD5        | 1    | 表示MD5摘要算法。 |
120| HUKS_DIGEST_SHA1       | 10   | 表示SHA1摘要算法。 |
121| HUKS_DIGEST_SHA224 | 11   | 表示SHA224摘要算法。 |
122| HUKS_DIGEST_SHA256 | 12  | 表示SHA256摘要算法。 |
123| HUKS_DIGEST_SHA384  | 13  | 表示SHA384摘要算法。 |
124| HUKS_DIGEST_SHA512 | 14  | 表示SHA512摘要算法。 |
125
126## HuksKeyPadding
127
128表示补齐算法。
129
130**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks131
132| 名称                   | 值   | 说明                                     |
133| ---------------------- | ---- | ---------------------------------------- |
134| HUKS_PADDING_NONE | 0    | 表示不使用补齐算法。 |
135| HUKS_PADDING_OAEP | 1    | 表示使用OAEP补齐算法。 |
136| HUKS_PADDING_PSS | 2    | 表示使用PSS补齐算法。 |
137| HUKS_PADDING_PKCS1_V1_5 | 3    | 表示使用PKCS1_V1_5补齐算法。 |
138| HUKS_PADDING_PKCS5 | 4   | 表示使用PKCS5补齐算法。 |
139| HUKS_PADDING_PKCS7 | 5   | 表示使用PKCS7补齐算法。 |
140
141## HuksCipherMode
142
143表示加密模式。
144
145**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks146
147| 名称          | 值   | 说明                  |
148| ------------- | ---- | --------------------- |
149| HUKS_MODE_ECB | 1    | 表示使用ECB加密模式。 |
150| HUKS_MODE_CBC | 2    | 表示使用CBC加密模式。 |
151| HUKS_MODE_CTR | 3    | 表示使用CTR加密模式。 |
152| HUKS_MODE_OFB | 4    | 表示使用OFB加密模式。 |
153| HUKS_MODE_CCM | 31   | 表示使用CCM加密模式。 |
154| HUKS_MODE_GCM | 32   | 表示使用GCM加密模式。 |
155
156## HuksKeySize
157
158表示密钥长度。
159
160**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks161
162| 名称                         | 值   | 说明                                       |
163| ---------------------------- | ---- | ------------------------------------------ |
164| HUKS_RSA_KEY_SIZE_512        | 512  | 表示使用RSA算法的密钥长度为512bit。        |
165| HUKS_RSA_KEY_SIZE_768        | 768  | 表示使用RSA算法的密钥长度为768bit。        |
166| HUKS_RSA_KEY_SIZE_1024       | 1024 | 表示使用RSA算法的密钥长度为1024bit。       |
167| HUKS_RSA_KEY_SIZE_2048       | 2048 | 表示使用RSA算法的密钥长度为2048bit。       |
168| HUKS_RSA_KEY_SIZE_3072       | 3072 | 表示使用RSA算法的密钥长度为3072bit。       |
169| HUKS_RSA_KEY_SIZE_4096       | 4096 | 表示使用RSA算法的密钥长度为4096bit。       |
170| HUKS_ECC_KEY_SIZE_224        | 224  | 表示使用ECC算法的密钥长度为224bit。        |
171| HUKS_ECC_KEY_SIZE_256        | 256  | 表示使用ECC算法的密钥长度为256bit。        |
172| HUKS_ECC_KEY_SIZE_384        | 384  | 表示使用ECC算法的密钥长度为384bit。        |
173| HUKS_ECC_KEY_SIZE_521        | 521  | 表示使用ECC算法的密钥长度为521bit。        |
174| HUKS_AES_KEY_SIZE_128        | 128  | 表示使用AES算法的密钥长度为128bit。        |
175| HUKS_AES_KEY_SIZE_192        | 196  | 表示使用AES算法的密钥长度为196bit。        |
176| HUKS_AES_KEY_SIZE_256        | 256  | 表示使用AES算法的密钥长度为256bit。        |
177| HUKS_AES_KEY_SIZE_512        | 512  | 表示使用AES算法的密钥长度为512bit。        |
178| HUKS_CURVE25519_KEY_SIZE_256 | 256  | 表示使用CURVE25519算法的密钥长度为256bit。 |
179| HUKS_DH_KEY_SIZE_2048        | 2048 | 表示使用DH算法的密钥长度为2048bit。        |
180| HUKS_DH_KEY_SIZE_3072        | 3072 | 表示使用DH算法的密钥长度为3072bit。        |
181| HUKS_DH_KEY_SIZE_4096        | 4096 | 表示使用DH算法的密钥长度为4096bit。        |
182
183## HuksKeyAlg
184
185表示密钥使用的算法。
186
187**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks188
189| 名称             | 值   | 说明                  |
190| ---------------- | ---- | --------------------- |
191| HUKS_ALG_RSA     | 1    | 表示使用RSA算法。     |
192| HUKS_ALG_ECC     | 2    | 表示使用ECC算法。     |
193| HUKS_ALG_DSA     | 3    | 表示使用DSA算法。     |
194| HUKS_ALG_AES     | 20   | 表示使用AES算法。     |
195| HUKS_ALG_HMAC    | 50   | 表示使用HMAC算法。    |
196| HUKS_ALG_HKDF    | 51   | 表示使用HKDF算法。    |
197| HUKS_ALG_PBKDF2  | 52   | 表示使用PBKDF2算法。  |
198| HUKS_ALG_ECDH    | 100  | 表示使用ECDH算法。    |
199| HUKS_ALG_X25519  | 101  | 表示使用X25519算法。  |
200| HUKS_ALG_ED25519 | 102  | 表示使用ED25519算法。 |
201| HUKS_ALG_DH      | 103  | 表示使用DH算法。      |
202
203## HuksKeyGenerateType
204
205表示生成密钥的类型。
206
207**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks208
209| 名称                           | 值   | 说明             |
210| ------------------------------ | ---- | ---------------- |
211| HUKS_KEY_GENERATE_TYPE_DEFAULT | 0    | 默认生成的密钥。 |
212| HUKS_KEY_GENERATE_TYPE_DERIVE  | 1    | 派生生成的密钥。 |
213| HUKS_KEY_GENERATE_TYPE_AGREE   | 2    | 协商生成的密钥。 |
214
215## HuksKeyFlag
216
217表示密钥的产生方式。
218
219**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks220
221| 名称                       | 值   | 说明                                 |
222| -------------------------- | ---- | ------------------------------------ |
223| HUKS_KEY_FLAG_IMPORT_KEY   | 1    | 表示通过导入公钥接口导入的密钥。     |
224| HUKS_KEY_FLAG_GENERATE_KEY | 2    | 表示通过生成密钥接口生成的密钥。     |
225| HUKS_KEY_FLAG_AGREE_KEY    | 3    | 表示通过生成密钥协商接口生成的密钥。 |
226| HUKS_KEY_FLAG_DERIVE_KEY   | 4    | 表示通过生成密钥派生接口生成的密钥。 |
227
228## HuksKeyStorageType
229
230表示密钥存储方式。
231
232**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks233
234| 名称                    | 值   | 说明                           |
235| ----------------------- | ---- | ------------------------------ |
236| HUKS_STORAGE_TEMP       | 0    | 表示通过本地直接管理密钥。     |
237| HUKS_STORAGE_PERSISTENT | 1    | 表示通过HUKS service管理密钥。 |
238
239## HuksSendType
240
241表示发送Tag的方式。
242
243**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks244
245| 名称                 | 值   | 说明              |
246| -------------------- | ---- | ----------------- |
247| HUKS_SEND_TYPE_ASYNC | 0    | 表示异步发送TAG。 |
248| HUKS_SEND_TYPE_SYNC  | 1    | 表示同步发送TAG。 |
249
250## HuksTagType
251
252表示Tag的数据类型。
253
254**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks255
256
257| 名称                  | 值      | 说明                                    |
258| --------------------- | ------- | --------------------------------------- |
259| HUKS_TAG_TYPE_INVALID | 0 << 28 | 表示非法的Tag类型。                     |
260| HUKS_TAG_TYPE_INT     | 1 << 28 | 表示该Tag的数据类型为int类型的number。  |
261| HUKS_TAG_TYPE_UINT    | 2 << 28 | 表示该Tag的数据类型为uint类型的number。 |
262| HUKS_TAG_TYPE_ULONG   | 3 << 28 | 表示该Tag的数据类型为bigint。           |
263| HUKS_TAG_TYPE_BOOL    | 4 << 28 | 表示该Tag的数据类型为boolean。          |
264| HUKS_TAG_TYPE_BYTES   | 5 << 28 | 表示该Tag的数据类型为Uint8Array。       |
265
266## HuksTag
267
268表示调用参数的Tag。
269
270**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks271
272| 名称                                   | 值                                       | 说明                                   |
273| -------------------------------------- | ---------------------------------------- | -------------------------------------- |
274| HUKS_TAG_INVALID                       | HuksTagType.HUKS_TAG_TYPE_INVALID \| 0   | 表示非法的Tag。                        |
275| HUKS_TAG_ALGORITHM                     | HUKS_TAG_TYPE_UINT \| 1                  | 表示算法的Tag。                        |
276| HUKS_TAG_PURPOSE                       | HuksTagType.HUKS_TAG_TYPE_UINT \| 2      | 表示密钥用途的Tag。                    |
277| HUKS_TAG_KEY_SIZE                      | HuksTagType.HUKS_TAG_TYPE_UINT \| 3      | 表示密钥长度的Tag。                    |
278| HUKS_TAG_DIGEST                        | HuksTagType.HUKS_TAG_TYPE_UINT \| 4      | 表示摘要算法的Tag。                    |
279| HUKS_TAG_PADDING                       | HuksTagType.HUKS_TAG_TYPE_UINT \| 5      | 表示补齐算法的Tag。                    |
280| HUKS_TAG_BLOCK_MODE                    | HuksTagType.HUKS_TAG_TYPE_UINT \| 6      | 表示加密模式的Tag。                    |
281| HUKS_TAG_KEY_TYPE                      | HuksTagType.HUKS_TAG_TYPE_UINT \| 7      | 表示密钥类型的Tag。                    |
282| HUKS_TAG_ASSOCIATED_DATA               | HuksTagType.HUKS_TAG_TYPE_BYTES \| 8     | 表示附加身份验证数据的Tag。            |
283| HUKS_TAG_NONCE                         | HuksTagType.HUKS_TAG_TYPE_BYTES \| 9     | 表示密钥加解密的字段。                 |
284| HUKS_TAG_IV                            | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10    | 表示密钥初始化的向量。                 |
285| HUKS_TAG_INFO                          | HuksTagType.HUKS_TAG_TYPE_BYTES \| 11    | 表示密钥派生时的info。                 |
286| HUKS_TAG_SALT                          | HuksTagType.HUKS_TAG_TYPE_BYTES \| 12    | 表示密钥派生时的盐值。                 |
287| HUKS_TAG_PWD                           | HuksTagType.HUKS_TAG_TYPE_BYTES \| 13    | 表示密钥派生时的password。             |
288| HUKS_TAG_ITERATION                     | HuksTagType.HUKS_TAG_TYPE_UINT \| 14     | 表示密钥派生时的迭代次数。             |
289| HUKS_TAG_KEY_GENERATE_TYPE             | HuksTagType.HUKS_TAG_TYPE_UINT \| 15     | 表示生成密钥类型的Tag。                |
290| HUKS_TAG_DERIVE_MAIN_KEY               | HuksTagType.HUKS_TAG_TYPE_BYTES \| 16    | 表示密钥派生时的主密钥。               |
291| HUKS_TAG_DERIVE_FACTOR                 | HuksTagType.HUKS_TAG_TYPE_BYTES \| 17    | 表示密钥派生时的派生因子。             |
292| HUKS_TAG_DERIVE_ALG                    | HuksTagType.HUKS_TAG_TYPE_UINT \| 18     | 表示密钥派生时的算法类型。             |
293| HUKS_TAG_AGREE_ALG                     | HuksTagType.HUKS_TAG_TYPE_UINT \| 19     | 表示密钥协商时的算法类型。             |
294| HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL \| 20     | 表示密钥协商时的公钥别名。             |
295| HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS       | HuksTagType.HUKS_TAG_TYPE_BYTES \| 21    | 表示密钥协商时的私钥别名。             |
296| HUKS_TAG_AGREE_PUBLIC_KEY              | HuksTagType.HUKS_TAG_TYPE_BYTES \| 22    | 表示密钥协商时的公钥。                 |
297| HUKS_TAG_KEY_ALIAS                     | HuksTagType.HUKS_TAG_TYPE_BYTES \| 23    | 表示密钥别名。                         |
298| HUKS_TAG_DERIVE_KEY_SIZE               | HuksTagType.HUKS_TAG_TYPE_UINT \| 24     | 表示派生密钥的大小。                   |
299| HUKS_TAG_ACTIVE_DATETIME               | HuksTagType.HUKS_TAG_TYPE_ULONG \| 201   | 预留。                                 |
300| HUKS_TAG_ORIGINATION_EXPIRE_DATETIME   | HuksTagType.HUKS_TAG_TYPE_ULONG \| 202   | 预留。                                 |
301| HUKS_TAG_USAGE_EXPIRE_DATETIME         | HuksTagType.HUKS_TAG_TYPE_ULONG \| 203   | 预留。                                 |
302| HUKS_TAG_CREATION_DATETIME             | HuksTagType.HUKS_TAG_TYPE_ULONG \| 204   | 预留。                                 |
303| HUKS_TAG_ALL_USERS                     | ksTagType.HUKS_TAG_TYPE_BOOL \| 301      | 预留。                                 |
304| HUKS_TAG_USER_ID                       | HuksTagType.HUKS_TAG_TYPE_UINT \| 302    | 预留。                                 |
305| HUKS_TAG_NO_AUTH_REQUIRED              | HuksTagType.HUKS_TAG_TYPE_BOOL \| 303    | 预留。                                 |
306| HUKS_TAG_USER_AUTH_TYPE                | HuksTagType.HUKS_TAG_TYPE_UINT \| 304    | 预留。                                 |
307| HUKS_TAG_AUTH_TIMEOUT                  | HuksTagType.HUKS_TAG_TYPE_UINT \| 305    | 预留。                                 |
308| HUKS_TAG_AUTH_TOKEN                    | HuksTagType.HUKS_TAG_TYPE_BYTES \| 306   | 预留。                                 |
309| HUKS_TAG_ATTESTATION_CHALLENGE         | HuksTagType.HUKS_TAG_TYPE_BYTES \| 501   | 表示attestation时的挑战值。            |
310| HUKS_TAG_ATTESTATION_APPLICATION_ID    | HuksTagType.HUKS_TAG_TYPE_BYTES \| 502   | 表示attestation时的application Id。    |
311| HUKS_TAG_ATTESTATION_ID_BRAND          | HuksTagType.HUKS_TAG_TYPE_BYTES \| 503   | 表示设备的brand。                      |
312| HUKS_TAG_ATTESTATION_ID_DEVICE         | HuksTagType.HUKS_TAG_TYPE_BYTES \| 504   | 表示设备的device。                     |
313| HUKS_TAG_ATTESTATION_ID_PRODUCT        | HuksTagType.HUKS_TAG_TYPE_BYTES \| 505   | 表示设备的product。                    |
314| HUKS_TAG_ATTESTATION_ID_SERIAL         | HuksTagType.HUKS_TAG_TYPE_BYTES \| 506   | 表示设备的SN号。                       |
315| HUKS_TAG_ATTESTATION_ID_IMEI           | HuksTagType.HUKS_TAG_TYPE_BYTES \| 507   | 表示设备的IMEI号。                     |
316| HUKS_TAG_ATTESTATION_ID_MEID           | HuksTagType.HUKS_TAG_TYPE_BYTES \| 508   | 表示设备的MEID号。                     |
317| HUKS_TAG_ATTESTATION_ID_MANUFACTURER   | HuksTagType.HUKS_TAG_TYPE_BYTES \| 509   | 表示设备的制造商。                     |
318| HUKS_TAG_ATTESTATION_ID_MODEL          | HuksTagType.HUKS_TAG_TYPE_BYTES \| 510   | 表示设备的型号。                       |
319| HUKS_TAG_ATTESTATION_ID_ALIAS          | HuksTagType.HUKS_TAG_TYPE_BYTES \| 511   | 表示attestation时的密钥别名。          |
320| HUKS_TAG_ATTESTATION_ID_SOCID          | HuksTagType.HUKS_TAG_TYPE_BYTES \| 512   | 表示设备的SOCID。                      |
321| HUKS_TAG_ATTESTATION_ID_UDID           | HuksTagType.HUKS_TAG_TYPE_BYTES \| 513   | 表示设备的UDID。                       |
322| HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES \| 514   | 表示attestation时的安全凭据。          |
323| HUKS_TAG_ATTESTATION_ID_VERSION_INFO   | HuksTagType.HUKS_TAG_TYPE_BYTES \| 515   | 表示attestation时的版本号。            |
324| HUKS_TAG_IS_KEY_ALIAS                  | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1001   | 表示是否使用生成key时传入的别名的Tag。 |
325| HUKS_TAG_KEY_STORAGE_FLAG              | HuksTagType.HUKS_TAG_TYPE_UINT \| 1002   | 表示密钥存储方式的Tag。                |
326| HUKS_TAG_IS_ALLOWED_WRAP               | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1003   | 预留。                                 |
327| HUKS_TAG_KEY_WRAP_TYPE                 | HuksTagType.HUKS_TAG_TYPE_UINT \| 1004   | 预留。                                 |
328| HUKS_TAG_KEY_AUTH_ID                   | HuksTagType.HUKS_TAG_TYPE_BYTES \| 1005  | 预留。                                 |
329| HUKS_TAG_KEY_ROLE                      | HuksTagType.HUKS_TAG_TYPE_UINT \| 1006   | 预留。                                 |
330| HUKS_TAG_KEY_FLAG                      | HuksTagType.HUKS_TAG_TYPE_UINT \| 1007   | 表示密钥标志的Tag。                    |
331| HUKS_TAG_IS_ASYNCHRONIZED              | HuksTagType.HUKS_TAG_TYPE_UINT \| 1008   | 预留。                                 |
332| HUKS_TAG_SECURE_KEY_ALIAS              | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1009   | 预留。                                 |
333| HUKS_TAG_SECURE_KEY_UUID               | HuksTagType.HUKS_TAG_TYPE_BYTES \| 1010  | 预留。                                 |
334| HUKS_TAG_KEY_DOMAIN                    | HuksTagType.HUKS_TAG_TYPE_UINT \| 1011   | 预留。                                 |
335| HUKS_TAG_PROCESS_NAME                  | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10001 | 表示进程名称的Tag。                    |
336| HUKS_TAG_PACKAGE_NAME                  | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10002 | 预留。                                 |
337| HUKS_TAG_ACCESS_TIME                   | HuksTagType.HUKS_TAG_TYPE_UINT \| 10003  | 预留。                                 |
338| HUKS_TAG_USES_TIME                     | HuksTagType.HUKS_TAG_TYPE_UINT \| 10004  | 预留。                                 |
339| HUKS_TAG_CRYPTO_CTX                    | HuksTagType.HUKS_TAG_TYPE_ULONG \| 10005 | 预留。                                 |
340| HUKS_TAG_KEY                           | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10006 | 预留。                                 |
341| HUKS_TAG_KEY_VERSION                   | HuksTagType.HUKS_TAG_TYPE_UINT \| 10007  | 表示密钥版本的Tag。                    |
342| HUKS_TAG_PAYLOAD_LEN                   | HuksTagType.HUKS_TAG_TYPE_UINT \| 10008  | 预留。                                 |
343| HUKS_TAG_AE_TAG                        | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10009 | 预留。                                 |
344| HUKS_TAG_IS_KEY_HANDLE                 | HuksTagType.HUKS_TAG_TYPE_ULONG \| 10010 | 预留。                                 |
345| HUKS_TAG_OS_VERSION                    | HuksTagType.HUKS_TAG_TYPE_UINT \| 10101  | 表示操作系统版本的Tag。                |
346| HUKS_TAG_OS_PATCHLEVEL                 | HuksTagType.HUKS_TAG_TYPE_UINT \| 10102  | 表示操作系统补丁级别的Tag。            |
347| HUKS_TAG_SYMMETRIC_KEY_DATA            | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20001 | 预留。                                 |
348| HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA    | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20002 | 预留。                                 |
349| HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA   | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20003 | 预留。                                 |
350
351## huks.generateKey
352
353generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
354
355生成密钥,使用Callback回调异步返回结果。
356
357**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks358
359**参数:**
360
361| 参数名   | 类型                                      | 必填 | 说明                                                         |
362| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
363| keyAlias | string                                    | 是   | 别名。                                                       |
364| options  | [HuksOptions](#huksoptions)               | 是   | 用于存放生成key所需TAG。                                     |
365| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是   | 返回HUKS_SUCCESS时表示接口使用成功,其余结果请参考HuksResult进行错误码查询。 |
366
367**示例:**
368
369```js
370/* 以生成RSA512密钥为例 */
371var keyAlias = 'keyAlias';
372var properties = new Array();
373properties[0] = {
374  tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
375  value: huks.HuksKeyAlg.HUKS_ALG_RSA
376};
377properties[1] = {
378  tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
379  value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_512
380};
381properties[2] = {
382  tag: huks.HuksTag.HUKS_TAG_PURPOSE,
383  value:
384huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT |
385huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
386};
387properties[3] = {
388  tag: huks.HuksTag.HUKS_TAG_PADDING,
389  value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
390};
391properties[4] = {
392  tag: huks.HuksTag.HUKS_TAG_DIGEST,
393  value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
394};
395var options = {
396  properties: properties
397};
398huks.generateKey(keyAlias, options, function (err, data){});
399```
400
401## huks.generateKey
402
403generateKey(keyAlias: string, options: HuksOptions) : Promise\<HuksResult>
404
405生成密钥,使用Promise方式异步返回结果。
406
407**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks408
409**参数:**
410
411| 参数名   | 类型                        | 必填 | 说明                     |
412| -------- | --------------------------- | ---- | ------------------------ |
413| keyAlias | string                      | 是   | 密钥别名。               |
414| options  | [HuksOptions](#huksoptions) | 是   | 用于存放生成key所需TAG。 |
415
416**返回值**:(可选,如不涉及可删除)
417
418| 类型                                | 说明                                               |
419| ----------------------------------- | -------------------------------------------------- |
420| Promise\<[HuksResult](#huksresult)> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
421
422**示例:**
423
424```js
425/* 以生成ECC256密钥为例 */
426var keyAlias = 'keyAlias';
427var properties = new Array();
428properties[0] = {
429  tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
430  value: huks.HuksKeyAlg.HUKS_ALG_ECC
431};
432properties[1] = {
433  tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
434  value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256
435};
436properties[2] = {
437  tag: huks.HuksTag.HUKS_TAG_PURPOSE,
438  value:
439huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN |
440huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
441};
442properties[3] = {
443  tag: huks.HuksTag.HUKS_TAG_DIGEST,
444  value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
445};
446var options = {
447  properties: properties
448};
449var result = huks.generateKey(keyAlias, options);
450```
451
452## huks.deleteKey
453
454deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
455
456删除密钥,使用Callback回调异步返回结果。
457
458**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks459
460**参数:**
461
462| 参数名   | 类型                                      | 必填 | 说明                                               |
463| -------- | ----------------------------------------- | ---- | -------------------------------------------------- |
464| keyAlias | string                                    | 是   | 密钥别名,应为生成key时传入的别名。                |
465| options  | [HuksOptions](#huksoptions)               | 是   | 空对象(此处传空即可)。                           |
466| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是   | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
467
468**示例:**
469
470```js
471/* 此处options选择emptyOptions传空 */
472var keyAlias = 'keyAlias';
473var emptyOptions = {
474  properties: []
475};
476huks.deleteKey(keyAlias, emptyOptions, function (err, data) {});
477```
478
479## huks.deleteKey
480
481deleteKey(keyAlias: string, options: HuksOptions) : Promise\<HuksResult>
482
483删除密钥,使用Promise方式异步返回结果。
484
485**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks486
487**参数:**
488
489| 参数名   | 类型        | 必填 | 说明                                                  |
490| -------- | ----------- | ---- | ----------------------------------------------------- |
491| keyAlias | string      | 是   | 密钥别名,应为生成key时传入的别名。 |
492| options | [HuksOptions](#huksoptions) | 是   | 空对象(此处传空即可)。 |
493
494**返回值:**
495
496| 类型                                | 说明                                               |
497| ----------------------------------- | -------------------------------------------------- |
498| Promise\<[HuksResult](#huksresult)> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
499
500**示例:**
501
502```js
503/* 此处options选择emptyOptions传空 */
504var keyAlias = 'keyAlias';
505var emptyOptions = {
506  properties: []
507};
508var result = huks.deleteKey(keyAlias, emptyOptions);
509```
510
511## huks.getSdkVersion
512
513getSdkVersion(options: HuksOptions) : string
514
515获取当前系统sdk版本。
516
517**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks518
519**参数:**
520
521| 参数名  | 类型       | 必填 | 说明                      |
522| ------- | ---------- | ---- | ------------------------- |
523| options | [HuksOptions](#huksoptions) | 是   | 空对象,用于存放sdk版本。 |
524
525**返回值:**
526
527| 类型   | 说明          |
528| ------ | ------------- |
529| string | 返回sdk版本。 |
530
531**示例:**
532
533```js
534/* 此处options选择emptyOptions传空 */
535var emptyOptions = {
536  properties: []
537};
538var result = huks.getSdkVersion(emptyOptions);
539```
540
541## huks.importKey
542
543importKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
544
545导入密钥,使用Callback方式回调异步返回结果 。
546
547**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks548
549**参数:**
550
551| 参数名   | 类型                     | 必填 | 说明                                              |
552| -------- | ------------------------ | ---- | ------------------------------------------------- |
553| keyAlias | string                   | 是   | 密钥别名,用于存放所需密钥。 |
554| options  | [HuksOptions](#huksoptions) | 是   | 用于导入时所需TAG和需要导入的密钥。 |
555| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是   | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
556
557**示例:**
558
559```js
560/* 以导入AES256密钥为例 */
561var plainTextSize32 = makeRandomArr(32);
562function makeRandomArr(size) {
563    var arr = new Uint8Array(size);
564    for (var i = 0; i < size; i++) {
565        arr[i] = Math.floor(Math.random() * 10);
566    }
567    return arr;
568};
569var keyAlias = 'keyAlias';
570var properties = new Array();
571properties[0] = {
572  tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
573  value: huks.HuksKeyAlg.HUKS_ALG_AES
574};
575properties[1] = {
576  tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
577  value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256
578};
579properties[2] = {
580  tag: huks.HuksTag.HUKS_TAG_PURPOSE,
581  value:
582huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
583};
584properties[3] = {
585  tag: huks.HuksTag.HUKS_TAG_PADDING,
586  value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7
587};
588properties[4] = {
589  tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
590  value: huks.HuksCipherMode.HUKS_MODE_ECB
591};
592var options = {
593  properties: properties,
594  inData: plainTextSize32
595};
596huks.importKey(keyAlias, options, function (err, data){});
597```
598
599## huks.importKey
600
601importKey(keyAlias: string, options: HuksOptions) : Promise\<HuksResult>
602
603导入密钥,使用Promise方式异步返回结果。
604
605**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks606
607**参数:**
608
609| 参数名   | 类型        | 必填 | 说明                                 |
610| -------- | ----------- | ---- | ------------------------------------ |
611| keyAlias | string      | 是   | 密钥别名,用于存放所需密钥。 |
612| options  | [HuksOptions](#huksoptions) | 是   | 用于导入时所需TAG和需要导入的密钥。 |
613
614**返回值:**
615
616| 类型                                | 说明                                               |
617| ----------------------------------- | -------------------------------------------------- |
618| Promise\<[HuksResult](#huksresult)> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
619
620**示例:**
621
622```js
623/* 以导入AES128为例 */
624var plainTextSize32 = makeRandomArr(32);
625
626function makeRandomArr(size) {
627    var arr = new Uint8Array(size);
628    for (var i = 0; i < size; i++) {
629        arr[i] = Math.floor(Math.random() * 10);
630    }
631    return arr;
632};
633
634/*第一步:生成密钥*/
635var keyAlias = 'keyAlias';
636var properties = new Array();
637properties[0] = {
638  tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
639  value: huks.HuksKeyAlg.HUKS_ALG_AES
640};
641properties[1] = {
642  tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
643  value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128
644};
645properties[2] = {
646  tag: huks.HuksTag.HUKS_TAG_PURPOSE,
647  value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
648};
649properties[3] = {
650  tag: huks.HuksTag.HUKS_TAG_PADDING,
651  value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7
652};
653properties[4] = {
654  tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
655  value: huks.HuksCipherMode.HUKS_MODE_ECB
656};
657var huksoptions = {
658  properties: properties,
659  inData: plainTextSize32
660};
661var result = huks.importKey(keyAlias, huksoptions);
662```
663
664## huks.exportKey
665
666exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
667
668导出密钥,使用Callback方式回调异步返回的结果。
669
670**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks671
672**参数:**
673
674| 参数名   | 类型                                      | 必填 | 说明                                                         |
675| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
676| keyAlias | string                                    | 是   | 密钥别名,应与所用密钥生成时使用的别名相同。                 |
677| options  | [HuksOptions](#huksoptions)               | 是   | 空对象(此处传空即可)。                                     |
678| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是   | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 |
679
680**示例:**
681
682```js
683/* 此处options选择emptyOptions来传空 */
684var keyAlias = 'keyAlias';
685var emptyOptions = {
686  properties: []
687};
688huks.exportKey(keyAlias, emptyOptions, function (err, data){});
689```
690
691## huks.exportKey
692
693exportKey(keyAlias: string, options: HuksOptions) : Promise\<HuksResult>
694
695导出密钥,使用Promise方式回调异步返回的结果。
696
697**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks698
699**参数:**
700
701| 参数名   | 类型        | 必填 | 说明                                                         |
702| -------- | ----------- | ---- | ------------------------------------------------------------ |
703| keyAlias | string      | 是   | 密钥别名,应与所用密钥生成时使用的别名相同。 |
704| options  | [HuksOptions](#huksoptions) | 是   | 空对象(此处传空即可)。 |
705
706**返回值:**
707
708| 类型                                | 说明                                                         |
709| ----------------------------------- | ------------------------------------------------------------ |
710| Promise\<[HuksResult](#huksresult)> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 |
711
712**示例:**
713
714```js
715/* 此处options选择emptyOptions来传空 */
716var keyAlias = 'keyAlias';
717var emptyOptions = {
718  properties: []
719};
720var result = huks.exportKey(keyAlias, emptyOptions);
721```
722
723## huks.getKeyProperties
724
725getKeyProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
726
727获取密钥属性,使用Callback回调异步返回结果。
728
729**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks730
731**参数:**
732
733| 参数名   | 类型                                      | 必填 | 说明                                                         |
734| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
735| keyAlias | string                                    | 是   | 密钥别名,应与所用密钥生成时使用的别名相同。                 |
736| options  | [HuksOptions](#huksoptions)               | 是   | 空对象(此处传空即可)。                                     |
737| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是   | errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
738
739**示例:**
740
741```js
742/* 此处options选择emptyOptions来传空 */
743var keyAlias = 'keyAlias';
744var emptyOptions = {
745  properties: []
746};
747huks.getKeyProperties(keyAlias, emptyOptions, function (err, data){});
748```
749
750## huks.getKeyProperties
751
752getKeyProperties(keyAlias: string, options: HuksOptions) : Promise\<HuksResult>
753
754获取密钥属性,使用Promise回调异步返回结果。
755
756**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks757
758**参数:**
759
760| 参数名   | 类型        | 必填 | 说明                                                         |
761| -------- | ----------- | ---- | ------------------------------------------------------------ |
762| keyAlias | string      | 是   | 密钥别名,应与所用密钥生成时使用的别名相同。 |
763| options  | [HuksOptions](#huksoptions) | 是   | 空对象(此处传空即可)。 |
764
765**返回值:**
766
767| 类型               | 说明                                                         |
768| ------------------ | ------------------------------------------------------------ |
769| Promise\<[HuksResult](#huksoptions)> | errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。properties:返回值为生成密钥时所需参数。 |
770
771**示例:**
772
773```js
774/* 此处options选择emptyOptions来传空 */
775var keyAlias = 'keyAlias';
776var emptyOptions = {
777  properties: []
778};
779var result = huks.getKeyProperties(keyAlias, emptyOptions);
780```
781
782## huks.isKeyExist
783
784isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<boolean>) : void
785
786判断密钥是否存在,使用Callback回调异步返回结果 。
787
788**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks789
790**参数:**
791
792| 参数名   | 类型                   | 必填 | 说明                                  |
793| -------- | ---------------------- | ---- | ------------------------------------- |
794| keyAlias | string                 | 是   | 所需查找的密钥的别名。 |
795| options  | [HuksOptions](#huksoptions) | 是   | 空对象(此处传空即可)。 |
796| callback | AsyncCallback\<boolean> | 是   | FALSE代表密钥不存在,TRUE代表密钥存在。 |
797
798**示例:**
799
800```js
801/* 此处options选择emptyOptions来传空 */
802var keyAlias = 'keyAlias';
803var emptyOptions = {
804  properties: []
805};
806huks.isKeyExist(keyAlias, emptyOptions, function (err, data){});
807```
808
809## huks.isKeyExist
810
811isKeyExist(keyAlias: string, options: HuksOptions) : Promise\<boolean>
812
813判断密钥是否存在,使用Promise回调异步返回结果 。
814
815**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks816
817**参数:**
818
819| 参数名   | 类型        | 必填 | 说明                             |
820| -------- | ----------- | ---- | -------------------------------- |
821| keyAlias | string      | 是   | 所需查找的密钥的别名。 |
822| options  | [HuksOptions](#huksoptions) | 是   | 空对象(此处传空即可)。 |
823
824**返回值:**
825
826| 类型              | 说明                                    |
827| ----------------- | --------------------------------------- |
828| Promise\<boolean> | FALSE代表密钥不存在,TRUE代表密钥存在。 |
829
830**示例:**
831
832```js
833/* 此处options选择emptyOptions来传空 */
834var keyAlias = 'keyAlias';
835var emptyOptions = {
836  properties: []
837};
838var result = huks.isKeyExist(keyAlias, emptyOptions);
839```
840
841
842
843## huks.init
844
845init(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksHandle>) : void
846
847init操作密钥接口,使用Callback回调异步返回结果 。
848
849**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks850
851**参数:**
852
853| 参数名   | 类型                   | 必填 | 说明                                  |
854| -------- | ---------------------- | ---- | ------------------------------------- |
855| keyAlias | string                 | 是   | Init操作密钥的别名。 |
856| options  | [HuksOptions](#huksoptions) | 是   | Init操作的参数集合。 |
857| callback | AsyncCallback\<[HuksHandle](#hukshandle)> | 是   | 将Init操作操作返回的handle添加到密钥管理系统的回调。 |
858
859
860## huks.init
861
862init(keyAlias: string, options: HuksOptions) : Promise\<HuksHandle>
863
864init操作密钥接口,使用Promise方式异步返回结果。
865
866**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks867
868**参数:**
869
870| 参数名   | 类型                   | 必填 | 说明                                  |
871| -------- | ---------------------- | ---- | ------------------------------------- |
872| keyAlias | string                 | 是   | Init操作密钥的别名。 |
873| options  | [HuksOptions](#huksoptions) | 是   | Init参数集合。 |
874| promise | Promise\<[HuksHandle](#hukshandle)> | 是   | 将Init操作返回的handle添加到密钥管理系统的回调。 |
875
876
877## huks.update
878
879update(handle: number, token?: Uint8Array, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
880
881update操作密钥接口,使用Callback回调异步返回结果 。
882
883**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks884
885**参数:**
886
887| 参数名   | 类型                   | 必填 | 说明                                  |
888| -------- | ---------------------- | ---- | ------------------------------------- |
889| handle | number           | 是   | Update操作的handle。 |
890| token | Uint8Array | 否 | Update操作的token。 |
891| options  | [HuksOptions](#huksoptions) | 是   | Update的参数集合。 |
892| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 将Update操作的结果添加到密钥管理系统的回调。 |
893
894
895## huks.update
896
897update(handle: number, token?: Uint8Array, options: HuksOptions) : Promise\<HuksResult>
898
899update操作密钥接口,使用Promise方式异步返回结果。
900
901**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks902
903**参数:**
904
905| 参数名   | 类型                   | 必填 | 说明                                  |
906| -------- | ---------------------- | ---- | ------------------------------------- |
907| handle | number           | 是   | Update操作的handle。 |
908| token | Uint8Array | 否 | Update操作的token。 |
909| options  | [HuksOptions](#huksoptions) | 是   | Update操作的参数集合。 |
910| promise | Promise\<[HuksResult](#huksresult)> | 是 | 将Update操作的结果添加到密钥管理系统的回调。 |
911
912
913## huks.finish
914
915finish(handle: number, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
916
917finish操作密钥接口,使用Callback回调异步返回结果 。
918
919**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks920
921**参数:**
922
923| 参数名   | 类型                   | 必填 | 说明                                  |
924| -------- | ---------------------- | ---- | ------------------------------------- |
925| handle | number           | 是   | Finish操作的handle。 |
926| options  | [HuksOptions](#huksoptions) | 是   | Finish的参数集合。 |
927| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 将Finish操作的结果添加到密钥管理系统的回调。 |
928
929
930## huks.finish
931
932finish(handle: number, options: HuksOptions) : Promise\<HuksResult>
933
934finish操作密钥接口,使用Promise方式异步返回结果。
935
936**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks937
938**参数:**
939
940| 参数名   | 类型                   | 必填 | 说明                                  |
941| -------- | ---------------------- | ---- | ------------------------------------- |
942| handle | number           | 是   | Finish操作的handle。 |
943| options  | [HuksOptions](#huksoptions) | 是   | Finish操作的参数集合。 |
944| promise | Promise\<[HuksResult](#HuksResult)> | 是 | promise实例,用于获取异步返回结果。 |
945
946
947## huks.abort
948
949abort(handle: number, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
950
951abort操作密钥接口,使用Callback回调异步返回结果 。
952
953**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks954
955**参数:**
956
957| 参数名   | 类型                   | 必填 | 说明                                  |
958| -------- | ---------------------- | ---- | ------------------------------------- |
959| handle | number           | 是   | Abort操作的handle。 |
960| options  | [HuksOptions](#huksoptions) | 是   | Abort操作的参数集合。 |
961| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 将Abort操作的结果添加到密钥管理系统的回调。 |
962
963**示例:**
964
965```js
966/* huks.init, huks.update, huks.finish为三段式接口,需要一起使用,当huks.inithuks.update
967 * 以及huks.finish操作中的任一阶段发生错误时,都需要调用huks.abort来终止密钥的使用。
968 *
969 * 以下以RSA1024密钥的callback操作使用为例
970 */
971import router from '@system.router';
972import huks from '@ohos.security.huks';
973
974async function routePage() {
975  let options = {
976    uri: 'pages/second'
977  }
978  try {
979    await router.push(options)
980  } catch (err) {
981    console.error(`fail callback, code: ${err.code}, msg: ${err.msg}`)
982  }
983}
984var keyalias = "HuksDemoRSA";
985var properties = new Array();
986var options = {
987  properties: properties,
988  inData: new Uint8Array(0)
989};
990var handle;
991var resultMessage = "";
992async function generateKey() {
993  properties[0] = {
994    tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
995    value: huks.HuksKeyAlg.HUKS_ALG_RSA
996  };
997  properties[1] = {
998    tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
999    value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024
1000  };
1001  properties[2] = {
1002    tag: huks.HuksTag.HUKS_TAG_PURPOSE,
1003    value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
1004  };
1005  properties[3] = {
1006    tag: huks.HuksTag.HUKS_TAG_PADDING,
1007    value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
1008  };
1009  properties[4] = {
1010    tag: huks.HuksTag.HUKS_TAG_DIGEST,
1011    value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
1012  };
1013  huks.generateKey(keyalias, options);
1014}
1015function stringToUint8Array(str) {
1016  var arr = [];
1017  for (var i = 0, j = str.length; i < j; ++i) {
1018    arr.push(str.charCodeAt(i));
1019  }
1020  var tmpUint8Array = new Uint8Array(arr);
1021  return tmpUint8Array;
1022}
1023async function huksInit() {
1024  await huks.init(keyalias, options).then((data) => {
1025    console.log(`test init data: ${JSON.stringify(data)}`);
1026    handle = data.handle;
1027  }).catch((err) => {
1028    console.log("test init err information: " + JSON.stringify(err))
1029  })
1030}
1031async function huksUpdate() {
1032    options.inData = stringToUint8Array("huksHmacTest");
1033    await huks.update(handle, options).then((data) => {
1034      if (data.errorCode === 0) {
1035        resultMessage += "update success!";
1036      } else {
1037        resultMessage += "update fail!";
1038      }
1039    });
1040    console.log(resultMessage);
1041}
1042function huksFinish() {
1043  options.inData = stringToUint8Array("HuksDemoHMAC");
1044  huks.finish(handle, options).then((data) => {
1045    if (data.errorCode === 0) {
1046      resultMessage = "finish success!";
1047    } else {
1048      resultMessage = "finish fail errorCode: " + data.errorCode;
1049    }
1050  }).catch((err) => {
1051    resultMessage = "finish fail, catch errorMessage:" + JSON.stringify(err)
1052  });
1053  console.log(resultMessage);
1054}
1055async function huksAbort() {
1056  huks.abort(handle, options).then((data) => {
1057    if (data.errorCode === 0) {
1058      resultMessage = "abort success!";
1059    } else {
1060      resultMessage = "abort fail errorCode: " + data.errorCode;
1061    }
1062  }).catch((err) => {
1063    resultMessage = "abort fail, catch errorMessage:" + JSON.stringify(err)
1064  });
1065  console.log(resultMessage);
1066}
1067
1068@Entry
1069@Component
1070struct Index {
1071  build() {
1072    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
1073      Text('Hello World')
1074        .fontSize(50)
1075        .fontWeight(FontWeight.Bold)
1076      Button() {
1077        Text('Tocallback')
1078          .fontSize(25)
1079          .fontWeight(FontWeight.Bold)
1080      }.type(ButtonType.Capsule)
1081      .margin({
1082        top: 20
1083      })
1084      .width('50%')
1085      .height('10%')
1086      .backgroundColor('#0D9FFB')
1087      .onClick(() => {
1088        routePage()
1089      })
1090      Button() {
1091        Text('generateKey')
1092          .fontSize(25)
1093          .fontWeight(FontWeight.Bold)
1094      }.type(ButtonType.Capsule)
1095      .margin({
1096        top: 20
1097      })
1098      .width('50%')
1099      .height('10%')
1100      .backgroundColor('#0D9FFB')
1101      .onClick(() => {
1102        generateKey()
1103      })
1104      Button() {
1105        Text('Init')
1106          .fontSize(25)
1107          .fontWeight(FontWeight.Bold)
1108      }.type(ButtonType.Capsule)
1109      .margin({
1110        top: 20
1111      })
1112      .width('50%')
1113      .height('10%')
1114      .backgroundColor('#0D9FFB')
1115      .onClick(() => {
1116        huksInit()
1117      })
1118      Button() {
1119        Text('Update')
1120          .fontSize(25)
1121          .fontWeight(FontWeight.Bold)
1122      }.type(ButtonType.Capsule)
1123      .margin({
1124        top: 20
1125      })
1126      .width('50%')
1127      .height('10%')
1128      .backgroundColor('#0D9FFB')
1129      .onClick(() => {
1130        huksUpdate()
1131      })
1132      Button() {
1133        Text('Finish')
1134          .fontSize(25)
1135          .fontWeight(FontWeight.Bold)
1136      }.type(ButtonType.Capsule)
1137      .margin({
1138        top: 20
1139      })
1140      .width('50%')
1141      .height('10%')
1142      .backgroundColor('#0D9FFB')
1143      .onClick(() => {
1144        huksFinish()
1145      })
1146      Button() {
1147        Text('Abort')
1148          .fontSize(25)
1149          .fontWeight(FontWeight.Bold)
1150      }.type(ButtonType.Capsule)
1151      .margin({
1152        top: 20
1153      })
1154      .width('50%')
1155      .height('10%')
1156      .backgroundColor('#0D9FFB')
1157      .onClick(() => {
1158        huksAbort()
1159      })
1160    }
1161    .width('100%')
1162    .height('100%')
1163  }
1164}
1165```
1166
1167## huks.abort
1168
1169abort(handle: number, options: HuksOptions) : Promise\<HuksResult>;
1170
1171abort操作密钥接口,使用Promise方式异步返回结果。
1172
1173**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks1174
1175**参数:**
1176
1177| 参数名   | 类型                   | 必填 | 说明                                  |
1178| -------- | ---------------------- | ---- | ------------------------------------- |
1179| handle | number           | 是   | Abort操作的handle。 |
1180| options  | [HuksOptions](#huksoptions) | 是   | Abort操作的参数集合。 |
1181| promise | Promise\<[HuksResult](#huksresult)> | 是 | 将Abort操作的结果添加到密钥管理系统的回调。 |
1182
1183**示例:**
1184
1185```js
1186/* huks.init, huks.update, huks.finish为三段式接口,需要一起使用,当huks.inithuks.update
1187 * 以及huks.finish操作中的任一阶段发生错误时,都需要调用huks.abort来终止密钥的使用。
1188 *
1189 * 以下以RSA1024密钥的promise操作使用为例
1190 */
1191import router from '@system.router';
1192import huks from '@ohos.security.huks';
1193
1194async function routePage() {
1195  let options = {
1196    uri: 'pages/second'
1197  }
1198  try {
1199    await router.push(options)
1200  } catch (err) {
1201    console.error(`fail callback, code: ${err.code}, msg: ${err.msg}`)
1202  }
1203}
1204
1205var keyalias = "HuksDemoRSA";
1206var properties = new Array();
1207var options = {
1208  properties: properties,
1209  inData: new Uint8Array(0)
1210};
1211var handle;
1212var resultMessage = "";
1213function stringToUint8Array(str) {
1214  var arr = [];
1215  for (var i = 0, j = str.length; i < j; ++i) {
1216    arr.push(str.charCodeAt(i));
1217  }
1218  var tmpUint8Array = new Uint8Array(arr);
1219  return tmpUint8Array;
1220}
1221
1222async function generateKey() {
1223  properties[0] = {
1224    tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
1225    value: huks.HuksKeyAlg.HUKS_ALG_RSA
1226  };
1227  properties[1] = {
1228    tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
1229    value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024
1230  };
1231  properties[2] = {
1232    tag: huks.HuksTag.HUKS_TAG_PURPOSE,
1233    value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
1234  };
1235  properties[3] = {
1236    tag: huks.HuksTag.HUKS_TAG_PADDING,
1237    value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
1238  };
1239  properties[4] = {
1240    tag: huks.HuksTag.HUKS_TAG_DIGEST,
1241    value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
1242  };
1243  huks.generateKey(keyalias, options, function (err, data) { });
1244}
1245async function huksInit() {
1246  return new Promise((resolve, reject) => {
1247    huks.init(keyalias, options, async function (err, data) {
1248      if (data.errorCode === 0) {
1249        resultMessage = "init success!"
1250        handle = data.handle;
1251      } else {
1252        resultMessage = "init fail errorCode: " + data.errorCode
1253      }
1254    });
1255  });
1256}
1257
1258async function huksUpdate() {
1259    options.inData = stringToUint8Array("huksHmacTest");
1260    new Promise((resolve, reject) => {
1261      huks.update(handle, options, function (err, data) {
1262        if (data.errorCode === 0) {
1263          resultMessage += "update success!";
1264        } else {
1265          resultMessage += "update fail!";
1266        }
1267      });
1268    });
1269    console.log(resultMessage);
1270
1271}
1272
1273async function huksFinish() {
1274  options.inData = stringToUint8Array("0");
1275  new Promise((resolve, reject) => {
1276    huks.finish(handle, options, function (err, data) {
1277      if (data.errorCode === 0) {
1278        resultMessage = "finish success!";
1279      } else {
1280        resultMessage =  "finish fail errorCode: " + data.errorCode;
1281      }
1282    });
1283  });
1284}
1285
1286function huksAbort() {
1287  new Promise((resolve, reject) => {
1288    huks.abort(handle, options, function (err, data) {
1289      console.log(`Huks_Demo hmac huksAbort1 data ${JSON.stringify(data)}`);
1290      console.log(`Huks_Demo hmac huksAbort1 err ${JSON.stringify(err)}`);
1291    });
1292  });
1293}
1294@Entry
1295@Component
1296struct Index {
1297  build() {
1298    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
1299      Text('Hello World')
1300        .fontSize(50)
1301        .fontWeight(FontWeight.Bold)
1302      Button() {
1303        Text('to Promise')
1304          .fontSize(20)
1305          .fontWeight(FontWeight.Bold)
1306      }.type(ButtonType.Capsule)
1307      .margin({
1308        top: 20
1309      })
1310      .width('50%')
1311      .height('10%')
1312      .backgroundColor('#0D9FFB')
1313      .onClick(() => {
1314        router.back()
1315      })
1316      Button() {
1317        Text('generateKey')
1318          .fontSize(25)
1319          .fontWeight(FontWeight.Bold)
1320      }.type(ButtonType.Capsule)
1321      .margin({
1322        top: 20
1323      })
1324      .width('50%')
1325      .height('10%')
1326      .backgroundColor('#0D9FFB')
1327      .onClick(() => {
1328        generateKey()
1329      })
1330      Button() {
1331        Text('Init')
1332          .fontSize(25)
1333          .fontWeight(FontWeight.Bold)
1334      }.type(ButtonType.Capsule)
1335      .margin({
1336        top: 20
1337      })
1338      .width('50%')
1339      .height('10%')
1340      .backgroundColor('#0D9FFB')
1341      .onClick(() => {
1342        huksInit()
1343      })
1344      Button() {
1345        Text('Update')
1346          .fontSize(25)
1347          .fontWeight(FontWeight.Bold)
1348      }.type(ButtonType.Capsule)
1349      .margin({
1350        top: 20
1351      })
1352      .width('50%')
1353      .height('10%')
1354      .backgroundColor('#0D9FFB')
1355      .onClick(() => {
1356        huksUpdate()
1357      })
1358      Button() {
1359        Text('Finish')
1360          .fontSize(25)
1361          .fontWeight(FontWeight.Bold)
1362      }.type(ButtonType.Capsule)
1363      .margin({
1364        top: 20
1365      })
1366      .width('50%')
1367      .height('10%')
1368      .backgroundColor('#0D9FFB')
1369      .onClick(() => {
1370        huksFinish()
1371      })
1372      Button() {
1373        Text('Abort')
1374          .fontSize(25)
1375          .fontWeight(FontWeight.Bold)
1376      }.type(ButtonType.Capsule)
1377      .margin({
1378        top: 20
1379      })
1380      .width('50%')
1381      .height('10%')
1382      .backgroundColor('#0D9FFB')
1383      .onClick(() => {
1384        huksAbort()
1385      })
1386    }
1387    .width('100%')
1388    .height('100%')
1389  }
1390}
1391```
1392
1393## HuksParam
1394
1395调用接口使用的options中的properties数组中的param。
1396
1397**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks1398
1399| 参数名 | 类型                                | 必填 | 说明       |
1400| ------ | ----------------------------------- | ---- | ---------- |
1401| tag    | HuksTag                             | 是   | 标签       |
1402| value  | boolean\|number\|bigint\|Uint8Array | 是   | 标签对应值 |
1403
1404## HuksOptions
1405
1406调用接口使用的options。
1407
1408**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks1409
1410| 参数名     | 类型              | 必填 | 说明                     |
1411| ---------- | ----------------- | ---- | ------------------------ |
1412| properties | Array\<HuksParam> | 否   | 属性,存HuksParam的数组。 |
1413| inData     | Uint8Array        | 否   | 输入数据。               |
1414
1415## HuksHandle
1416
1417huks Handle结构体。
1418
1419**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks1420
1421| 参数名     | 类型             | 必填 | 说明     |
1422| ---------- | ---------------- | ---- | -------- |
1423| errorCode  | number           | 是   | 错误码 |
1424| handle    | number       | 是 | handle值 |
1425| token | Uint8Array | 否 | 预留字段 |
1426
1427
1428## HuksResult
1429
1430调用接口返回的result。
1431
1432**系统能力**:以下各项对应的系统能力均为SystemCapability.Security.Huks1433
1434
1435
1436| 参数名     | 类型              | 必填 | 说明     |
1437| ---------- | ----------------- | ---- | -------- |
1438| errorCode  | number            | 是   | 错误码   |
1439| outData    | Uint8Array        | 否   | 输出数据 |
1440| properties | Array\<HuksParam> | 否   | 属性     |
1441| certChains | Array\<string>    | 否   | 预留字段 |
1442
1443