• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.security.huks (通用密钥库系统)
2
3向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。
4HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。
5
6> **说明**
7>
8> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
9
10## 导入模块
11
12```ts
13import huks from '@ohos.security.huks'
14```
15
16## HuksParam
17
18调用接口使用的options中的properties数组中的param。
19
20**系统能力**:SystemCapability.Security.Huks.Core
21
22| 名称 | 类型                                | 必填 | 说明         |
23| ------ | ----------------------------------- | ---- | ------------ |
24| tag    | [HuksTag](#hukstag)                 | 是   | 标签。       |
25| value  | boolean\|number\|bigint\|Uint8Array | 是   | 标签对应值。 |
26
27## HuksOptions
28
29调用接口使用的options。
30
31**系统能力**:SystemCapability.Security.Huks.Core
32
33| 名称     | 类型              | 必填 | 说明                     |
34| ---------- | ----------------- | ---- | ------------------------ |
35| properties | Array\<[HuksParam](#huksparam)> | 否   | 属性,用于存HuksParam的数组。 |
36| inData     | Uint8Array        | 否   | 输入数据。               |
37
38## HuksSessionHandle<sup>9+</sup>
39
40huks Handle结构体。
41
42**系统能力**:SystemCapability.Security.Huks.Core
43
44| 名称    | 类型       | 必填 | 说明                                                 |
45| --------- | ---------- | ---- | ---------------------------------------------------- |
46| handle    | number     | 是   | 表示handle值。                                       |
47| challenge | Uint8Array | 否   | 表示[initSession](#huksinitsession9)操作之后获取到的challenge信息。 |
48
49## HuksReturnResult<sup>9+</sup>
50
51调用接口返回的result。
52
53**系统能力**:SystemCapability.Security.Huks.Core
54
55
56
57| 名称     | 类型                            | 必填 | 说明             |
58| ---------- | ------------------------------- | ---- | ---------------- |
59| outData    | Uint8Array                      | 否   | 表示输出数据。   |
60| properties | Array\<[HuksParam](#huksparam)> | 否   | 表示属性信息。   |
61| certChains | Array\<string>                  | 否   | 表示证书链数据。 |
62
63
64## huks.generateKeyItem<sup>9+</sup>
65
66generateKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<void>) : void
67
68生成密钥,使用Callback回调异步返回结果。
69
70**系统能力**:SystemCapability.Security.Huks.Core
71
72**参数:**
73
74| 参数名   | 类型                        | 必填 | 说明                                          |
75| -------- | --------------------------- | ---- | --------------------------------------------- |
76| keyAlias | string                      | 是   | 别名。                                        |
77| options  | [HuksOptions](#huksoptions) | 是   | 用于存放生成key所需TAG。其中密钥使用的算法、密钥用途、密钥长度为必选参数。 |
78| callback | AsyncCallback\<void>        | 是   | 回调函数。未捕获error时代表用户指定别名的密钥生成成功,基于密钥不出TEE原则,此接口不会返回密钥材料内容,若捕获error,则为生成阶段出现异常。 |
79
80**错误码:**
81
82以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
83
84| 错误码ID | 错误信息      |
85| -------- | ------------- |
86| 401 | argument is invalid. |
87| 801 | api is not supported. |
88| 12000001 | algorithm mode is not supported. |
89| 12000002 | algorithm param is missing. |
90| 12000003 | algorithm param is invalid. |
91| 12000004 | operating file failed. |
92| 12000005 | IPC communication failed. |
93| 12000006 | error occured in crypto engine. |
94| 12000012 | external error. |
95| 12000013 | queried credential does not exist. |
96| 12000014 | memory is insufficient. |
97| 12000015 | call service failed. |
98
99**示例:**
100
101```ts
102import huks from '@ohos.security.huks';
103/* 以生成ECC256密钥为例 */
104class HuksProperties {
105    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
106    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose | huks.HuksKeyDigest = huks.HuksKeyAlg.HUKS_ALG_ECC
107}
108let keyAlias: string = 'keyAlias';
109let properties: HuksProperties[] = [
110    {
111        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
112        value: huks.HuksKeyAlg.HUKS_ALG_ECC
113    },
114    {
115        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
116        value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256
117    },
118    {
119        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
120        value:
121        huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN |
122        huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
123    },
124    {
125        tag: huks.HuksTag.HUKS_TAG_DIGEST,
126        value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
127    },
128];
129let options: huks.HuksOptions = {
130    properties: properties
131};
132try {
133    huks.generateKeyItem(keyAlias, options, (error, data) => {
134        if (error) {
135            console.error(`callback: generateKeyItem failed`);
136        } else {
137            console.info(`callback: generateKeyItem key success`);
138        }
139    });
140} catch (error) {
141    console.error(`callback: generateKeyItem input arg invalid`);
142}
143```
144
145## huks.generateKeyItem<sup>9+</sup>
146
147generateKeyItem(keyAlias: string, options: HuksOptions) : Promise\<void>
148
149生成密钥,使用Promise方式异步返回结果。基于密钥不出TEE原则,通过promise不会返回密钥材料内容,只用于表示此次调用是否成功。
150
151**系统能力**:SystemCapability.Security.Huks.Extension
152
153**参数:**
154
155| 参数名   | 类型                        | 必填 | 说明                     |
156| -------- | --------------------------- | ---- | ------------------------ |
157| keyAlias | string                      | 是   | 密钥别名。               |
158| options  | [HuksOptions](#huksoptions) | 是   | 用于存放生成key所需TAG。其中密钥使用的算法、密钥用途、密钥长度为必选参数。 |
159
160**错误码:**
161
162以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
163
164| 错误码ID | 错误信息      |
165| -------- | ------------- |
166| 401 | argument is invalid. |
167| 801 | api is not supported. |
168| 12000001 | algorithm mode is not supported. |
169| 12000002 | algorithm param is missing. |
170| 12000003 | algorithm param is invalid. |
171| 12000004 | operating file failed. |
172| 12000005 | IPC communication failed. |
173| 12000006 | error occured in crypto engine. |
174| 12000012 | external error. |
175| 12000013 | queried credential does not exist. |
176| 12000014 | memory is insufficient. |
177| 12000015 | call service failed. |
178
179**示例:**
180
181```ts
182/* 以生成ECC256密钥为例 */
183import huks from '@ohos.security.huks';
184import { BusinessError } from '@ohos.base';
185class HuksProperties {
186    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
187    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose | huks.HuksKeyDigest = huks.HuksKeyAlg.HUKS_ALG_ECC
188}
189let keyAlias = 'keyAlias';
190let properties: HuksProperties[] = [
191    {
192        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
193        value: huks.HuksKeyAlg.HUKS_ALG_ECC
194    },
195    {
196        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
197        value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256
198    },
199    {
200        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
201        value:
202        huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN |
203        huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
204    },
205    {
206        tag: huks.HuksTag.HUKS_TAG_DIGEST,
207        value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
208    },
209];
210let options: huks.HuksOptions = {
211    properties: properties
212};
213try {
214    huks.generateKeyItem(keyAlias, options)
215        .then((data) => {
216            console.info(`promise: generateKeyItem success`);
217        })
218        .catch((error: BusinessError) => {
219            console.error(`promise: generateKeyItem failed`);
220        });
221} catch (error) {
222    console.error(`promise: generateKeyItem input arg invalid`);
223}
224```
225
226## huks.deleteKeyItem<sup>9+</sup>
227
228deleteKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<void>) : void
229
230删除密钥,使用Callback回调异步返回结果。
231
232**系统能力**:SystemCapability.Security.Huks.Core
233
234**参数:**
235
236| 参数名   | 类型                        | 必填 | 说明                                          |
237| -------- | --------------------------- | ---- | --------------------------------------------- |
238| keyAlias | string                      | 是   | 密钥别名,应为生成key时传入的别名。           |
239| options  | [HuksOptions](#huksoptions) | 是   | 用于删除时指定密钥的属性TAG,比如删除的密钥范围(全量/单个),当删除单个时,TAG字段可传空。                      |
240| callback | AsyncCallback\<void>        | 是   | 回调函数。不返回err值时表示接口使用成功,其他时为错误。 |
241
242**错误码:**
243
244以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
245
246| 错误码ID | 错误信息      |
247| -------- | ------------- |
248| 401 | argument is invalid. |
249| 801 | api is not supported. |
250| 12000004 | operating file failed. |
251| 12000005 | IPC communication failed. |
252| 12000011 | queried entity does not exist. |
253| 12000012 | external error. |
254| 12000014 | memory is insufficient. |
255
256**示例:**
257
258```ts
259import huks from '@ohos.security.huks';
260/* 此处options选择emptyOptions传空 */
261let keyAlias = 'keyAlias';
262let emptyOptions: huks.HuksOptions = {
263    properties: []
264};
265try {
266    huks.deleteKeyItem(keyAlias, emptyOptions, (error, data) => {
267        if (error) {
268            console.error(`callback: deleteKeyItem failed`);
269        } else {
270            console.info(`callback: deleteKeyItem key success`);
271        }
272    });
273} catch (error) {
274    console.error(`callback: deleteKeyItem input arg invalid`);
275}
276```
277
278## huks.deleteKeyItem<sup>9+</sup>
279
280deleteKeyItem(keyAlias: string, options: HuksOptions) : Promise\<void>
281
282删除密钥,使用Promise方式异步返回结果。
283
284**系统能力**:SystemCapability.Security.Huks.Extension
285
286**参数:**
287
288| 参数名   | 类型                        | 必填 | 说明                                |
289| -------- | --------------------------- | ---- | ----------------------------------- |
290| keyAlias | string                      | 是   | 密钥别名,应为生成key时传入的别名。 |
291| options  | [HuksOptions](#huksoptions) | 是   | 用于删除时指定密钥的属性TAG,比如删除的密钥范围(全量/单个),当删除单个时,TAG字段可传空。            |
292
293**错误码:**
294
295以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
296
297| 错误码ID | 错误信息      |
298| -------- | ------------- |
299| 401 | argument is invalid. |
300| 801 | api is not supported. |
301| 12000004 | operating file failed. |
302| 12000005 | IPC communication failed. |
303| 12000011 | queried entity does not exist. |
304| 12000012 | external error. |
305| 12000014 | memory is insufficient. |
306
307**示例:**
308
309```ts
310import huks from '@ohos.security.huks';
311import { BusinessError } from '@ohos.base';
312/* 此处options选择emptyOptions传空 */
313let keyAlias = 'keyAlias';
314let emptyOptions: huks.HuksOptions = {
315    properties: []
316};
317try {
318    huks.deleteKeyItem(keyAlias, emptyOptions)
319        .then ((data) => {
320            console.info(`promise: deleteKeyItem key success`);
321        })
322        .catch((error: BusinessError) => {
323            console.error(`promise: deleteKeyItem failed`);
324        });
325} catch (error) {
326    console.error(`promise: deleteKeyItem input arg invalid`);
327}
328```
329
330## huks.getSdkVersion
331
332getSdkVersion(options: HuksOptions) : string
333
334获取当前系统sdk版本。
335
336**系统能力**:SystemCapability.Security.Huks.Extension
337
338**参数:**
339
340| 参数名  | 类型       | 必填 | 说明                      |
341| ------- | ---------- | ---- | ------------------------- |
342| options | [HuksOptions](#huksoptions) | 是   | 空对象,用于存放sdk版本。 |
343
344**返回值:**
345
346| 类型   | 说明          |
347| ------ | ------------- |
348| string | 返回sdk版本。 |
349
350**示例:**
351
352```ts
353import huks from '@ohos.security.huks';
354/* 此处options选择emptyOptions传空 */
355let emptyOptions: huks.HuksOptions = {
356    properties: []
357};
358let result = huks.getSdkVersion(emptyOptions);
359```
360
361## huks.importKeyItem<sup>9+</sup>
362
363importKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<void>) : void
364
365导入明文密钥,使用Callback方式回调异步返回结果 。
366
367**系统能力**:SystemCapability.Security.Huks.Extension
368
369**参数:**
370
371| 参数名   | 类型                        | 必填 | 说明                                          |
372| -------- | --------------------------- | ---- | --------------------------------------------- |
373| keyAlias | string                      | 是   | 密钥别名。                                    |
374| options  | [HuksOptions](#huksoptions) | 是   | 用于导入时所需TAG和需要导入的密钥。其中密钥使用的算法、密钥用途、密钥长度为必选参数。 |
375| callback | AsyncCallback\<void>        | 是   | 回调函数。不返回err值时表示接口使用成功,其他时为错误。 |
376
377**错误码:**
378
379以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
380
381| 错误码ID | 错误信息      |
382| -------- | ------------- |
383| 401 | argument is invalid. |
384| 801 | api is not supported. |
385| 12000001 | algorithm mode is not supported. |
386| 12000002 | algorithm param is missing. |
387| 12000003 | algorithm param is invalid. |
388| 12000004 | operating file failed. |
389| 12000005 | IPC communication failed. |
390| 12000006 | error occured in crypto engine. |
391| 12000011 | queried entity does not exist. |
392| 12000012 | external error. |
393| 12000013 | queried credential does not exist. |
394| 12000014 | memory is insufficient. |
395| 12000015 | call service failed. |
396
397**示例:**
398
399```ts
400import huks from '@ohos.security.huks';
401/* 以导入AES256密钥为例 */
402class HuksProperties {
403    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
404    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose | huks.HuksKeyPadding |
405    huks.HuksCipherMode = huks.HuksKeyAlg.HUKS_ALG_ECC
406}
407let plainTextSize32 = makeRandomArr(32);
408function makeRandomArr(size: number) {
409    let arr = new Uint8Array(size);
410    for (let i = 0; i < size; i++) {
411        arr[i] = Math.floor(Math.random() * 10);
412    }
413    return arr;
414};
415let keyAlias = 'keyAlias';
416let properties: HuksProperties[] = [
417    {
418        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
419        value: huks.HuksKeyAlg.HUKS_ALG_AES
420    },
421    {
422        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
423        value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256
424    },
425    {
426        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
427        value:
428        huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
429    },
430    {
431        tag: huks.HuksTag.HUKS_TAG_PADDING,
432        value: huks.HuksKeyPadding.HUKS_PADDING_PKCS7
433    },
434    {
435        tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
436        value: huks.HuksCipherMode.HUKS_MODE_ECB
437    }
438];
439let options: huks.HuksOptions = {
440    properties: properties,
441    inData: plainTextSize32
442};
443try {
444    huks.importKeyItem(keyAlias, options, (error, data) => {
445        if (error) {
446            console.error(`callback: importKeyItem failed`);
447        } else {
448            console.info(`callback: importKeyItem success`);
449        }
450    });
451} catch (error) {
452    console.error(`callback: importKeyItem input arg invalid`);
453}
454```
455
456## huks.importKeyItem<sup>9+</sup>
457
458importKeyItem(keyAlias: string, options: HuksOptions) : Promise\<void>
459
460导入明文密钥,使用Promise方式异步返回结果。
461
462**系统能力**:SystemCapability.Security.Huks.Extension
463
464**参数:**
465
466| 参数名   | 类型                        | 必填 | 说明                                |
467| -------- | --------------------------- | ---- | ----------------------------------- |
468| keyAlias | string                      | 是   | 密钥别名。                          |
469| options  | [HuksOptions](#huksoptions) | 是   | 用于导入时所需TAG和需要导入的密钥。其中密钥使用的算法、密钥用途、密钥长度为必选参数。 |
470
471**错误码:**
472
473以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
474
475| 错误码ID | 错误信息      |
476| -------- | ------------- |
477| 401 | argument is invalid. |
478| 801 | api is not supported. |
479| 12000001 | algorithm mode is not supported. |
480| 12000002 | algorithm param is missing. |
481| 12000003 | algorithm param is invalid. |
482| 12000004 | operating file failed. |
483| 12000005 | IPC communication failed. |
484| 12000006 | error occured in crypto engine. |
485| 12000011 | queried entity does not exist. |
486| 12000012 | external error. |
487| 12000013 | queried credential does not exist. |
488| 12000014 | memory is insufficient. |
489| 12000015 | call service failed. |
490
491**示例:**
492
493```ts
494import huks from '@ohos.security.huks';
495import { BusinessError } from '@ohos.base';
496/* 以导入AES128为例 */
497class HuksProperties {
498    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
499    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose | huks.HuksKeyPadding |
500    huks.HuksCipherMode = huks.HuksKeyAlg.HUKS_ALG_ECC
501}
502let plainTextSize32 = makeRandomArr(32);
503function makeRandomArr(size: number) {
504    let arr = new Uint8Array(size);
505    for (let i = 0; i < size; i++) {
506        arr[i] = Math.floor(Math.random() * 10);
507    }
508    return arr;
509};
510/*第一步:生成密钥*/
511let keyAlias = 'keyAlias';
512let properties: HuksProperties[] = [
513    {
514        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
515        value: huks.HuksKeyAlg.HUKS_ALG_AES
516    },
517    {
518        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
519        value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256
520    },
521    {
522        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
523        value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
524    },
525    {
526        tag: huks.HuksTag.HUKS_TAG_PADDING,
527        value: huks.HuksKeyPadding.HUKS_PADDING_PKCS7
528    },
529    {
530        tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
531        value: huks.HuksCipherMode.HUKS_MODE_ECB
532    }
533];
534let huksoptions: huks.HuksOptions = {
535    properties: properties,
536    inData: plainTextSize32
537};
538try {
539    huks.importKeyItem(keyAlias, huksoptions)
540        .then((data) => {
541            console.info(`promise: importKeyItem success`);
542        })
543        .catch((error: BusinessError) => {
544            console.error(`promise: importKeyItem failed`);
545        });
546} catch (error) {
547    console.error(`promise: importKeyItem input arg invalid`);
548}
549```
550
551## huks.attestKeyItem<sup>9+</sup>
552
553attestKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksReturnResult>) : void
554
555获取密钥证书,使用Callback方式回调异步返回结果 。
556
557**系统能力**:SystemCapability.Security.Huks.Extension
558
559**参数:**
560
561| 参数名   | 类型                                                 | 必填 | 说明                                          |
562| -------- | ---------------------------------------------------- | ---- | --------------------------------------------- |
563| keyAlias | string                                               | 是   | 密钥别名,存放待获取证书密钥的别名。          |
564| options  | [HuksOptions](#huksoptions)                          | 是   | 用于获取证书时指定所需参数与数据。            |
565| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult9)> | 是   | 回调函数。不返回err值时表示接口使用成功,其他时为错误。 |
566
567**错误码:**
568
569以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
570
571| 错误码ID | 错误信息      |
572| -------- | ------------- |
573| 201 | check permission failed. |
574| 401 | argument is invalid. |
575| 801 | api is not supported. |
576| 12000001 | algorithm mode is not supported. |
577| 12000002 | algorithm param is missing. |
578| 12000003 | algorithm param is invalid. |
579| 12000004 | operating file failed. |
580| 12000005 | IPC communication failed. |
581| 12000006 | error occured in crypto engine. |
582| 12000011 | queried entity does not exist. |
583| 12000012 | external error. |
584| 12000014 | memory is insufficient. |
585
586**示例:**
587
588```ts
589import huks from '@ohos.security.huks';
590class HuksProperties {
591    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
592    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose | huks.HuksKeyDigest |
593    huks.HuksKeyStorageType | huks.HuksKeyPadding | huks.HuksKeyGenerateType |
594    huks.HuksCipherMode | Uint8Array = huks.HuksKeyAlg.HUKS_ALG_ECC
595}
596let securityLevel = stringToUint8Array('sec_level');
597let challenge = stringToUint8Array('challenge_data');
598let versionInfo = stringToUint8Array('version_info');
599let keyAliasString = "key attest";
600function stringToUint8Array(str: string) {
601    let arr: number[] = [];
602    for (let i = 0, j = str.length; i < j; ++i) {
603        arr.push(str.charCodeAt(i));
604    }
605    let tmpUint8Array = new Uint8Array(arr);
606    return tmpUint8Array;
607}
608
609async function generateKeyThenattestKey(alias: string) {
610    let aliasString = keyAliasString;
611    let aliasUint8 = stringToUint8Array(aliasString);
612    let generateProperties: HuksProperties[] = [
613        {
614            tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
615            value: huks.HuksKeyAlg.HUKS_ALG_RSA
616        },
617        {
618            tag: huks.HuksTag.HUKS_TAG_KEY_STORAGE_FLAG,
619            value: huks.HuksKeyStorageType.HUKS_STORAGE_PERSISTENT
620        },
621        {
622            tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
623            value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048
624        },
625        {
626            tag: huks.HuksTag.HUKS_TAG_PURPOSE,
627            value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
628        },
629        {
630            tag: huks.HuksTag.HUKS_TAG_DIGEST,
631            value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
632        },
633        {
634            tag: huks.HuksTag.HUKS_TAG_PADDING,
635            value: huks.HuksKeyPadding.HUKS_PADDING_PSS
636        },
637        {
638            tag: huks.HuksTag.HUKS_TAG_KEY_GENERATE_TYPE,
639            value: huks.HuksKeyGenerateType.HUKS_KEY_GENERATE_TYPE_DEFAULT
640        },
641        {
642            tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
643            value: huks.HuksCipherMode.HUKS_MODE_ECB
644        }
645    ];
646    let generateOptions: huks.HuksOptions = {
647        properties: generateProperties
648    };
649    let attestProperties: HuksProperties[] = [
650        {
651            tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO,
652            value: securityLevel
653        },
654        {
655            tag: huks.HuksTag.HUKS_TAG_ATTESTATION_CHALLENGE,
656            value: challenge
657        },
658        {
659            tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_VERSION_INFO,
660            value: versionInfo
661        },
662        {
663            tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_ALIAS,
664            value: aliasUint8
665        }
666    ];
667    let attestOptions: huks.HuksOptions = {
668        properties: attestProperties
669    };
670    try {
671        huks.generateKeyItem(alias, generateOptions, (error, data) => {
672            if (error) {
673                console.error(`callback: generateKeyItem failed`);
674            } else {
675                console.info(`callback: generateKeyItem success`);
676                try {
677                    huks.attestKeyItem(aliasString, attestOptions, (error, data) => {
678                        if (error) {
679                            console.error(`callback: attestKeyItem failed`);
680                        } else {
681                            console.info(`callback: attestKeyItem success`);
682                        }
683                    });
684                } catch (error) {
685                    console.error(`callback: attestKeyItem input arg invalid`);
686                }
687            }
688        });
689    } catch (error) {
690        console.error(`callback: generateKeyItem input arg invalid`);
691    }
692}
693```
694
695## huks.attestKeyItem<sup>9+</sup>
696
697attestKeyItem(keyAlias: string, options: HuksOptions) : Promise\<HuksReturnResult>
698
699获取密钥证书,使用Promise方式异步返回结果 。
700
701**系统能力**:SystemCapability.Security.Huks.Extension
702
703**参数:**
704
705| 参数名   | 类型                        | 必填 | 说明                                 |
706| -------- | --------------------------- | ---- | ------------------------------------ |
707| keyAlias | string                      | 是   | 密钥别名,存放待获取证书密钥的别名。 |
708| options  | [HuksOptions](#huksoptions) | 是   | 用于获取证书时指定所需参数与数据。   |
709
710**返回值:**
711
712| 类型                                           | 说明                                          |
713| ---------------------------------------------- | --------------------------------------------- |
714| Promise<[HuksReturnResult](#huksreturnresult9)> | Promise对象。不返回err值时表示接口使用成功,其他时为错误。 |
715
716**错误码:**
717
718以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
719
720| 错误码ID | 错误信息      |
721| -------- | ------------- |
722| 201 | check permission failed. |
723| 401 | argument is invalid. |
724| 801 | api is not supported. |
725| 12000001 | algorithm mode is not supported. |
726| 12000002 | algorithm param is missing. |
727| 12000003 | algorithm param is invalid. |
728| 12000004 | operating file failed. |
729| 12000005 | IPC communication failed. |
730| 12000006 | error occured in crypto engine. |
731| 12000011 | queried entity does not exist. |
732| 12000012 | external error. |
733| 12000014 | memory is insufficient. |
734
735**示例:**
736
737```ts
738import huks from '@ohos.security.huks';
739import { BusinessError } from '@ohos.base';
740class HuksProperties {
741    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
742    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose | huks.HuksKeyDigest |
743    huks.HuksKeyStorageType | huks.HuksKeyPadding | huks.HuksKeyGenerateType |
744    huks.HuksCipherMode | Uint8Array = huks.HuksKeyAlg.HUKS_ALG_ECC
745}
746let securityLevel = stringToUint8Array('sec_level');
747let challenge = stringToUint8Array('challenge_data');
748let versionInfo = stringToUint8Array('version_info');
749let keyAliasString = "key attest";
750function stringToUint8Array(str: string) {
751    let arr: number[] = [];
752    for (let i = 0, j = str.length; i < j; ++i) {
753        arr.push(str.charCodeAt(i));
754    }
755    let tmpUint8Array = new Uint8Array(arr);
756    return tmpUint8Array;
757}
758async function generateKey(alias: string) {
759    let properties: HuksProperties[] = [
760        {
761            tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
762            value: huks.HuksKeyAlg.HUKS_ALG_RSA
763        },
764        {
765            tag: huks.HuksTag.HUKS_TAG_KEY_STORAGE_FLAG,
766            value: huks.HuksKeyStorageType.HUKS_STORAGE_PERSISTENT
767        },
768        {
769            tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
770            value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048
771        },
772        {
773            tag: huks.HuksTag.HUKS_TAG_PURPOSE,
774            value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
775        },
776        {
777            tag: huks.HuksTag.HUKS_TAG_DIGEST,
778            value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
779        },
780        {
781            tag: huks.HuksTag.HUKS_TAG_PADDING,
782            value: huks.HuksKeyPadding.HUKS_PADDING_PSS
783        },
784        {
785            tag: huks.HuksTag.HUKS_TAG_KEY_GENERATE_TYPE,
786            value: huks.HuksKeyGenerateType.HUKS_KEY_GENERATE_TYPE_DEFAULT
787        },
788        {
789            tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
790            value: huks.HuksCipherMode.HUKS_MODE_ECB
791        }
792    ];
793    let options: huks.HuksOptions = {
794        properties: properties
795    };
796    try {
797        await huks.generateKeyItem(alias, options)
798            .then((data) => {
799                console.info(`promise: generateKeyItem success`);
800            })
801            .catch((error: BusinessError) => {
802                console.error(`promise: generateKeyItem failed`);
803            });
804    } catch (error) {
805        console.error(`promise: generateKeyItem input arg invalid`);
806    }
807}
808async function attestKey() {
809    let aliasString = keyAliasString;
810    let aliasUint8 = stringToUint8Array(aliasString);
811    let properties: HuksProperties[] = [
812        {
813            tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO,
814            value: securityLevel
815        },
816        {
817            tag: huks.HuksTag.HUKS_TAG_ATTESTATION_CHALLENGE,
818            value: challenge
819        },
820        {
821            tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_VERSION_INFO,
822            value: versionInfo
823        },
824        {
825            tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_ALIAS,
826            value: aliasUint8
827        }
828    ];
829    let options: huks.HuksOptions = {
830        properties: properties
831    };
832    await generateKey(aliasString);
833    try {
834        await huks.attestKeyItem(aliasString, options)
835            .then((data) => {
836                console.info(`promise: attestKeyItem success`);
837            })
838            .catch((error: BusinessError) => {
839                console.error(`promise: attestKeyItem failed`);
840            });
841    } catch (error) {
842        console.error(`promise: attestKeyItem input arg invalid`);
843    }
844}
845```
846
847## huks.importWrappedKeyItem<sup>9+</sup>
848
849importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions, callback: AsyncCallback\<void>) : void
850
851导入加密密钥,使用Callback方式回调异步返回结果 。
852
853**系统能力**:SystemCapability.Security.Huks.Extension
854
855**参数:**
856
857| 参数名           | 类型                        | 必填 | 说明                                          |
858| ---------------- | --------------------------- | ---- | --------------------------------------------- |
859| keyAlias         | string                      | 是   | 密钥别名,存放待导入密钥的别名。              |
860| wrappingKeyAlias | string                      | 是   | 密钥别名,对应密钥用于解密加密的密钥数据。    |
861| options          | [HuksOptions](#huksoptions) | 是   | 用于导入时所需TAG和需要导入的加密的密钥数据。其中密钥使用的算法、密钥用途、密钥长度为必选参数。 |
862| callback         | AsyncCallback\<void>        | 是   | 回调函数。不返回err值时表示接口使用成功,其他时为错误。 |
863
864**错误码:**
865
866以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
867
868| 错误码ID | 错误信息      |
869| -------- | ------------- |
870| 401 | argument is invalid. |
871| 801 | api is not supported. |
872| 12000001 | algorithm mode is not supported. |
873| 12000002 | algorithm param is missing. |
874| 12000003 | algorithm param is invalid. |
875| 12000004 | operating file failed. |
876| 12000005 | IPC communication failed. |
877| 12000006 | error occured in crypto engine. |
878| 12000011 | queried entity does not exist. |
879| 12000012 | external error. |
880| 12000013 | queried credential does not exist. |
881| 12000014 | memory is insufficient. |
882| 12000015 | call service failed. |
883
884**示例:**
885
886```ts
887import huks from '@ohos.security.huks';
888import { BusinessError } from '@ohos.base';
889class HuksProperties {
890    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
891    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose |
892    huks.HuksKeyDigest | huks.HuksKeyPadding | huks.HuksUnwrapSuite |
893    huks.HuksCipherMode | huks.HuksImportKeyType = huks.HuksKeyAlg.HUKS_ALG_ECC
894}
895let alias1 = "importAlias";
896let alias2 = "wrappingKeyAlias";
897async function TestGenFunc(alias: string, options: huks.HuksOptions) {
898    try {
899        await genKey(alias, options)
900            .then((data) => {
901                console.info(`callback: generateKeyItem success`);
902            })
903            .catch((error: BusinessError) => {
904                console.error(`callback: generateKeyItem failed`);
905            });
906    } catch (error) {
907        console.error(`callback: generateKeyItem input arg invalid`);
908    }
909}
910function genKey(alias: string, options: huks.HuksOptions) {
911    return new Promise<void>((resolve, reject) => {
912        try {
913            huks.generateKeyItem(alias, options, (error, data) => {
914                if (error) {
915                    reject(error);
916                } else {
917                    resolve(data);
918                }
919            });
920        } catch (error) {
921            throw (new Error(error));
922        }
923    });
924}
925async function TestExportFunc(alias: string, options: huks.HuksOptions) {
926    try {
927        await exportKey(alias, options)
928            .then((data) => {
929                console.info(`callback: exportKeyItem success, data = ${JSON.stringify(data)}`);
930            })
931            .catch((error: BusinessError) => {
932                console.error(`callback: exportKeyItem failed`);
933            });
934    } catch (error) {
935        console.error(`callback: exportKeyItem input arg invalid`);
936    }
937}
938function exportKey(alias: string, options: huks.HuksOptions) {
939    return new Promise<huks.HuksReturnResult>((resolve, reject) => {
940        try {
941            huks.exportKeyItem(alias, options, (error, data) => {
942                if (error) {
943                    reject(error);
944                } else {
945                    resolve(data);
946                }
947            });
948        } catch (error) {
949            throw (new Error(error));
950        }
951    });
952}
953async function TestImportWrappedFunc(alias: string, wrappingAlias: string, options: huks.HuksOptions) {
954    try {
955        await importWrappedKey(alias, wrappingAlias, options)
956            .then((data) => {
957                console.info(`callback: importWrappedKeyItem success`);
958            })
959            .catch((error: BusinessError) => {
960                console.error(`callback: importWrappedKeyItem failed`);
961            });
962    } catch (error) {
963        console.error(`callback: importWrappedKeyItem input arg invalid`);
964    }
965}
966function importWrappedKey(alias: string, wrappingAlias: string, options: huks.HuksOptions) {
967    return new Promise<void>((resolve, reject) => {
968        try {
969            huks.importWrappedKeyItem(alias, wrappingAlias, options, (error, data) => {
970                if (error) {
971                    reject(error);
972                } else {
973                    resolve(data);
974                }
975            });
976        } catch (error) {
977            throw (new Error(error));
978        }
979    });
980}
981async function TestImportWrappedKeyFunc(
982        alias: string,
983        wrappingAlias: string,
984        genOptions: huks.HuksOptions,
985        importOptions: huks.HuksOptions
986) {
987    await TestGenFunc(wrappingAlias, genOptions);
988    await TestExportFunc(wrappingAlias, genOptions);
989
990    /* 以下操作不需要调用HUKS接口,此处不给出具体实现。
991     * 假设待导入的密钥为keyA
992     * 1.生成ECC公私钥keyB,公钥为keyB_pub, 私钥为keyB_pri
993     * 2.使用keyB_pri和wrappingAlias密钥中获取的公钥进行密钥协商,协商出共享密钥share_key
994     * 3.随机生成密钥kek,用于加密keyA,采用AES-GCM加密,加密过程中需要记录:nonce1、aad1、加密后的密文keyA_enc、加密后的tag1。
995     * 4.使用share_key加密kek,采用AES-GCM加密,加密过程中需要记录:nonce2、aad2、加密后的密文kek_enc、加密后的tag2。
996     * 5.拼接importOptions.inData字段,满足以下格式:
997     * keyB_pub的长度(4字节) + keyB_pub的数据 + aad2的长度(4字节) + aad2的数据 +
998     * nonce2的长度(4字节)   + nonce2的数据   + tag2的长度(4字节) + tag2的数据 +
999     * kek_enc的长度(4字节)  + kek_enc的数据  + aad1的长度(4字节) + aad1的数据 +
1000     * nonce1的长度(4字节)   + nonce1的数据   + tag1的长度(4字节) + tag1的数据 +
1001     * keyA长度占用的内存长度(4字节)  + keyA的长度     + keyA_enc的长度(4字节) + keyA_enc的数据
1002     */
1003    /* 该处为示例代码,实际运行过程中,应使用实际导入密钥数据。数据构造方式由上注释可见说明 */
1004    let inputKey = new Uint8Array([0x02, 0x00, 0x00, 0x00]);
1005    importOptions.inData = inputKey;
1006    await TestImportWrappedFunc(alias, wrappingAlias, importOptions);
1007}
1008function makeGenerateOptions() {
1009    let properties: HuksProperties[] = [
1010        {
1011            tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
1012            value: huks.HuksKeyAlg.HUKS_ALG_ECC
1013        },
1014        {
1015            tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
1016            value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256
1017        },
1018        {
1019            tag: huks.HuksTag.HUKS_TAG_PURPOSE,
1020            value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_UNWRAP
1021        },
1022        {
1023            tag: huks.HuksTag.HUKS_TAG_DIGEST,
1024            value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
1025        },
1026        {
1027            tag: huks.HuksTag.HUKS_TAG_IMPORT_KEY_TYPE,
1028            value: huks.HuksImportKeyType.HUKS_KEY_TYPE_KEY_PAIR,
1029        }
1030    ];
1031    let options: huks.HuksOptions = {
1032        properties: properties
1033    };
1034    return options;
1035};
1036function makeImportOptions() {
1037    let properties: HuksProperties[] = [
1038        {
1039            tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
1040            value: huks.HuksKeyAlg.HUKS_ALG_AES
1041        },
1042        {
1043            tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
1044            value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256
1045        },
1046        {
1047            tag: huks.HuksTag.HUKS_TAG_PURPOSE,
1048            value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
1049        },
1050        {
1051            tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
1052            value: huks.HuksCipherMode.HUKS_MODE_CBC
1053        },
1054        {
1055            tag: huks.HuksTag.HUKS_TAG_PADDING,
1056            value: huks.HuksKeyPadding.HUKS_PADDING_NONE
1057        },
1058        {
1059            tag: huks.HuksTag.HUKS_TAG_UNWRAP_ALGORITHM_SUITE,
1060            value: huks.HuksUnwrapSuite.HUKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING
1061        }
1062    ];
1063    let options: huks.HuksOptions = {
1064        properties: properties
1065    };
1066    return options;
1067};
1068function huksImportWrappedKey() {
1069    let genOptions = makeGenerateOptions();
1070    let importOptions = makeImportOptions();
1071    TestImportWrappedKeyFunc(
1072        alias1,
1073        alias2,
1074        genOptions,
1075        importOptions
1076    );
1077}
1078```
1079
1080## huks.importWrappedKeyItem<sup>9+</sup>
1081
1082importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions) : Promise\<void>
1083
1084导入加密密钥,使用Promise方式异步返回结果。
1085
1086**系统能力**:SystemCapability.Security.Huks.Extension
1087
1088**参数:**
1089
1090| 参数名           | 类型                        | 必填 | 说明                                          |
1091| ---------------- | --------------------------- | ---- | --------------------------------------------- |
1092| keyAlias         | string                      | 是   | 密钥别名,存放待导入密钥的别名。              |
1093| wrappingKeyAlias | string                      | 是   | 密钥别名,对应密钥用于解密加密的密钥数据。    |
1094| options          | [HuksOptions](#huksoptions) | 是   | 用于导入时所需TAG和需要导入的加密的密钥数据。其中密钥使用的算法、密钥用途、密钥长度为必选参数。 |
1095
1096**错误码:**
1097
1098以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1099
1100| 错误码ID | 错误信息      |
1101| -------- | ------------- |
1102| 401 | argument is invalid. |
1103| 801 | api is not supported. |
1104| 12000001 | algorithm mode is not supported. |
1105| 12000002 | algorithm param is missing. |
1106| 12000003 | algorithm param is invalid. |
1107| 12000004 | operating file failed. |
1108| 12000005 | IPC communication failed. |
1109| 12000006 | error occured in crypto engine. |
1110| 12000011 | queried entity does not exist. |
1111| 12000012 | external error. |
1112| 12000013 | queried credential does not exist. |
1113| 12000014 | memory is insufficient. |
1114| 12000015 | call service failed. |
1115
1116**示例:**
1117
1118```ts
1119import huks from '@ohos.security.huks';
1120import { BusinessError } from '@ohos.base';
1121/* 处理流程与callback类似,主要差异点为如下函数: */
1122/* 该处为示例代码,实际运行过程中,应使用实际导入密钥数据。数据构造方式由上注释可见说明 */
1123async function TestImportWrappedFunc(alias: string, wrappingAlias: string, options: huks.HuksOptions) {
1124    try {
1125        await huks.importWrappedKeyItem(alias, wrappingAlias, options)
1126            .then ((data) => {
1127                console.info(`promise: importWrappedKeyItem success`);
1128            })
1129            .catch((error: BusinessError) => {
1130                console.error(`promise: importWrappedKeyItem failed`);
1131            });
1132    } catch (error) {
1133        console.error(`promise: importWrappedKeyItem input arg invalid`);
1134    }
1135}
1136```
1137
1138## huks.exportKeyItem<sup>9+</sup>
1139
1140exportKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksReturnResult>) : void
1141
1142导出密钥,使用Callback方式回调异步返回的结果。
1143
1144**系统能力**:SystemCapability.Security.Huks.Extension
1145
1146**参数:**
1147
1148| 参数名   | 类型                                                 | 必填 | 说明                                                         |
1149| -------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------ |
1150| keyAlias | string                                               | 是   | 密钥别名,应与所用密钥生成时使用的别名相同。                 |
1151| options  | [HuksOptions](#huksoptions)                          | 是   | 空对象(此处传空即可)。                                     |
1152| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult9)> | 是   | 回调函数。不返回err值时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 |
1153
1154**错误码:**
1155
1156以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1157
1158| 错误码ID | 错误信息      |
1159| -------- | ------------- |
1160| 401 | argument is invalid. |
1161| 801 | api is not supported. |
1162| 12000001 | algorithm mode is not supported. |
1163| 12000002 | algorithm param is missing. |
1164| 12000003 | algorithm param is invalid. |
1165| 12000004 | operating file failed. |
1166| 12000005 | IPC communication failed. |
1167| 12000006 | error occured in crypto engine. |
1168| 12000011 | queried entity does not exist. |
1169| 12000012 | external error. |
1170| 12000014 | memory is insufficient. |
1171
1172**示例:**
1173
1174```ts
1175import huks from '@ohos.security.huks';
1176/* 此处options选择emptyOptions来传空 */
1177let keyAlias = 'keyAlias';
1178let emptyOptions: huks.HuksOptions = {
1179    properties: []
1180};
1181try {
1182    huks.exportKeyItem(keyAlias, emptyOptions, (error, data) => {
1183        if (error) {
1184            console.error(`callback: exportKeyItem failed`);
1185        } else {
1186            console.info(`callback: exportKeyItem success, data = ${JSON.stringify(data)}`);
1187        }
1188    });
1189} catch (error) {
1190    console.error(`callback: exportKeyItem input arg invalid`);
1191}
1192```
1193
1194## huks.exportKeyItem<sup>9+</sup>
1195
1196exportKeyItem(keyAlias: string, options: HuksOptions) : Promise\<HuksReturnResult>
1197
1198导出密钥,使用Promise方式回调异步返回的结果。
1199
1200**系统能力**:SystemCapability.Security.Huks.Extension
1201
1202**参数:**
1203
1204| 参数名   | 类型                        | 必填 | 说明                                         |
1205| -------- | --------------------------- | ---- | -------------------------------------------- |
1206| keyAlias | string                      | 是   | 密钥别名,应与所用密钥生成时使用的别名相同。 |
1207| options  | [HuksOptions](#huksoptions) | 是   | 空对象(此处传空即可)。                     |
1208
1209**返回值:**
1210
1211| 类型                                           | 说明                                                         |
1212| ---------------------------------------------- | ------------------------------------------------------------ |
1213| Promise<[HuksReturnResult](#huksreturnresult9)> | Promise对象。不返回err值时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 |
1214
1215**错误码:**
1216
1217以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1218
1219| 错误码ID | 错误信息      |
1220| -------- | ------------- |
1221| 401 | argument is invalid. |
1222| 801 | api is not supported. |
1223| 12000001 | algorithm mode is not supported. |
1224| 12000002 | algorithm param is missing. |
1225| 12000003 | algorithm param is invalid. |
1226| 12000004 | operating file failed. |
1227| 12000005 | IPC communication failed. |
1228| 12000006 | error occured in crypto engine. |
1229| 12000011 | queried entity does not exist. |
1230| 12000012 | external error. |
1231| 12000014 | memory is insufficient. |
1232
1233**示例:**
1234
1235```ts
1236import huks from '@ohos.security.huks';
1237import { BusinessError } from '@ohos.base';
1238/* 此处options选择emptyOptions来传空 */
1239let keyAlias = 'keyAlias';
1240let emptyOptions: huks.HuksOptions = {
1241    properties: []
1242};
1243try {
1244    huks.exportKeyItem(keyAlias, emptyOptions)
1245        .then ((data) => {
1246            console.info(`promise: exportKeyItem success, data = ${JSON.stringify(data)}`);
1247        })
1248        .catch((error: BusinessError) => {
1249            console.error(`promise: exportKeyItem failed`);
1250        });
1251} catch (error) {
1252    console.error(`promise: exportKeyItem input arg invalid`);
1253}
1254```
1255
1256## huks.getKeyItemProperties<sup>9+</sup>
1257
1258getKeyItemProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksReturnResult>) : void
1259
1260获取密钥属性,使用Callback回调异步返回结果。
1261
1262**系统能力**:SystemCapability.Security.Huks.Extension
1263
1264**参数:**
1265
1266| 参数名   | 类型                                                 | 必填 | 说明                                                         |
1267| -------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------ |
1268| keyAlias | string                                               | 是   | 密钥别名,应与所用密钥生成时使用的别名相同。                 |
1269| options  | [HuksOptions](#huksoptions)                          | 是   | 空对象(此处传空即可)。                                     |
1270| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult9)> | 是   | 回调函数。不返回err值时表示接口使用成功,其他时为错误。properties:返回值为生成密钥时所需参数。 |
1271
1272**错误码:**
1273
1274以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1275
1276| 错误码ID | 错误信息      |
1277| -------- | ------------- |
1278| 401 | argument is invalid. |
1279| 801 | api is not supported. |
1280| 12000001 | algorithm mode is not supported. |
1281| 12000002 | algorithm param is missing. |
1282| 12000003 | algorithm param is invalid. |
1283| 12000004 | operating file failed. |
1284| 12000005 | IPC communication failed. |
1285| 12000006 | error occured in crypto engine. |
1286| 12000011 | queried entity does not exist. |
1287| 12000012 | external error. |
1288| 12000014 | memory is insufficient. |
1289
1290**示例:**
1291
1292```ts
1293import huks from '@ohos.security.huks';
1294/* 此处options选择emptyOptions来传空 */
1295let keyAlias = 'keyAlias';
1296let emptyOptions: huks.HuksOptions = {
1297    properties: []
1298};
1299try {
1300    huks.getKeyItemProperties(keyAlias, emptyOptions, (error, data) => {
1301        if (error) {
1302            console.error(`callback: getKeyItemProperties failed`);
1303        } else {
1304            console.info(`callback: getKeyItemProperties success, data = ${JSON.stringify(data)}`);
1305        }
1306    });
1307} catch (error) {
1308    console.error(`callback: getKeyItemProperties input arg invalid`);
1309}
1310```
1311
1312## huks.getKeyItemProperties<sup>9+</sup>
1313
1314getKeyItemProperties(keyAlias: string, options: HuksOptions) : Promise\<HuksReturnResult>
1315
1316获取密钥属性,使用Promise回调异步返回结果。
1317
1318**系统能力**:SystemCapability.Security.Huks.Extension
1319
1320**参数:**
1321
1322| 参数名   | 类型                        | 必填 | 说明                                         |
1323| -------- | --------------------------- | ---- | -------------------------------------------- |
1324| keyAlias | string                      | 是   | 密钥别名,应与所用密钥生成时使用的别名相同。 |
1325| options  | [HuksOptions](#huksoptions) | 是   | 空对象(此处传空即可)。                     |
1326
1327**返回值:**
1328
1329| 类型                                            | 说明                                                         |
1330| ----------------------------------------------- | ------------------------------------------------------------ |
1331| Promise\<[HuksReturnResult](#huksreturnresult9)> | Promise对象。不返回err值时表示接口使用成功,其他时为错误。properties:返回值为生成密钥时所需参数。 |
1332
1333**错误码:**
1334
1335以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1336
1337| 错误码ID | 错误信息      |
1338| -------- | ------------- |
1339| 401 | argument is invalid. |
1340| 801 | api is not supported. |
1341| 12000001 | algorithm mode is not supported. |
1342| 12000002 | algorithm param is missing. |
1343| 12000003 | algorithm param is invalid. |
1344| 12000004 | operating file failed. |
1345| 12000005 | IPC communication failed. |
1346| 12000006 | error occured in crypto engine. |
1347| 12000011 | queried entity does not exist. |
1348| 12000012 | external error. |
1349| 12000014 | memory is insufficient. |
1350
1351**示例:**
1352
1353```ts
1354import huks from '@ohos.security.huks';
1355import { BusinessError } from '@ohos.base';
1356/* 此处options选择emptyOptions来传空 */
1357let keyAlias = 'keyAlias';
1358let emptyOptions: huks.HuksOptions = {
1359    properties: []
1360};
1361try {
1362    huks.getKeyItemProperties(keyAlias, emptyOptions)
1363        .then ((data) => {
1364            console.info(`promise: getKeyItemProperties success, data = ${JSON.stringify(data)}`);
1365        })
1366        .catch((error: BusinessError) => {
1367            console.error(`promise: getKeyItemProperties failed`);
1368        });
1369} catch (error) {
1370    console.error(`promise: getKeyItemProperties input arg invalid`);
1371}
1372```
1373
1374## huks.isKeyItemExist<sup>9+</sup>
1375
1376isKeyItemExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<boolean>) : void
1377
1378判断密钥是否存在,使用Callback回调异步返回结果 。
1379
1380**系统能力**:SystemCapability.Security.Huks.Core
1381
1382**参数:**
1383
1384| 参数名   | 类型                        | 必填 | 说明                                                     |
1385| -------- | --------------------------- | ---- |--------------------------------------------------------|
1386| keyAlias | string                      | 是   | 所需查找的密钥的别名。                                            |
1387| options  | [HuksOptions](#huksoptions) | 是   | 用于查询时指定密钥的属性TAG,比如查询的密钥范围(全量/单个),当查询单个时,TAG字段可传空。     |
1388| callback | AsyncCallback\<boolean>     | 是   | 回调函数。若密钥存在,data为true,若密钥不存在,则error中会输出密钥不存在的error code。 |
1389
1390**错误码:**
1391
1392以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1393
1394| 错误码ID | 错误信息      |
1395| -------- | ------------- |
1396| 401 | argument is invalid. |
1397| 801 | api is not supported. |
1398| 12000002 | algorithm param is missing. |
1399| 12000003 | algorithm param is invalid. |
1400| 12000004 | operating file failed. |
1401| 12000005 | IPC communication failed. |
1402| 12000006 | error occured in crypto engine. |
1403| 12000012 | external error. |
1404| 12000014 | memory is insufficient. |
1405
1406**示例:**
1407
1408```ts
1409import huks from '@ohos.security.huks';
1410import promptAction from '@ohos.promptAction';
1411/* 此处options选择emptyOptions来传空 */
1412let keyAlias = 'keyAlias';
1413let emptyOptions: huks.HuksOptions = {
1414    properties: []
1415};
1416huks.isKeyItemExist(keyAlias, emptyOptions, (error, data) => {
1417    if (data) {
1418        promptAction.showToast({
1419            message: "keyAlias: " + keyAlias +"is existed!",
1420            duration: 2500,
1421        })
1422    } else {
1423        promptAction.showToast({
1424            message: "find key failed",
1425            duration: 2500,
1426        })
1427    }
1428});
1429```
1430
1431## huks.isKeyItemExist<sup>9+</sup>
1432
1433isKeyItemExist(keyAlias: string, options: HuksOptions) : Promise\<boolean>
1434
1435判断密钥是否存在,使用Promise回调异步返回结果 。
1436
1437**系统能力**:SystemCapability.Security.Huks.Extension
1438
1439**参数:**
1440
1441| 参数名   | 类型                        | 必填 | 说明                     |
1442| -------- | --------------------------- | ---- | ------------------------ |
1443| keyAlias | string                      | 是   | 所需查找的密钥的别名。   |
1444| options  | [HuksOptions](#huksoptions) | 是   | 用于查询时指定密钥的属性TAG,比如查询的密钥范围(全量/单个),当查询单个时,TAG字段可传空。 |
1445
1446**返回值:**
1447
1448| 类型              | 说明                                    |
1449| ----------------- | --------------------------------------- |
1450| Promise\<boolean> | Promise对象。密钥存在时,可通过then进行密钥存在后的相关处理,若不存在,可通过error处理密钥不存在后的相关业务操作。 |
1451
1452**错误码:**
1453
1454以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1455
1456| 错误码ID | 错误信息      |
1457| -------- | ------------- |
1458| 401 | argument is invalid. |
1459| 801 | api is not supported. |
1460| 12000002 | algorithm param is missing. |
1461| 12000003 | algorithm param is invalid. |
1462| 12000004 | operating file failed. |
1463| 12000005 | IPC communication failed. |
1464| 12000006 | error occured in crypto engine. |
1465| 12000012 | external error. |
1466| 12000014 | memory is insufficient. |
1467
1468**示例:**
1469
1470```ts
1471import huks from '@ohos.security.huks';
1472import { BusinessError } from '@ohos.base';
1473import promptAction from '@ohos.promptAction';
1474
1475/* 此处options选择emptyOptions来传空 */
1476let keyAlias = 'keyAlias';
1477let emptyOptions: huks.HuksOptions = {
1478    properties: []
1479};
1480huks.isKeyItemExist(keyAlias, emptyOptions).then((data) => {
1481    promptAction.showToast({
1482        message: "keyAlias: " + keyAlias +"is existed!",
1483        duration: 500,
1484    })
1485}).catch((error: BusinessError)=>{
1486    promptAction.showToast({
1487        message: "find key failed",
1488        duration: 6500,
1489    })
1490})
1491```
1492
1493## huks.initSession<sup>9+</sup>
1494
1495initSession(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksSessionHandle>) : void
1496
1497initSession操作密钥接口,使用Callback回调异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。
1498
1499**系统能力**:SystemCapability.Security.Huks.Core
1500
1501**参数:**
1502
1503| 参数名   | 类型                                                    | 必填 | 说明                                                 |
1504| -------- | ------------------------------------------------------- | ---- | ---------------------------------------------------- |
1505| keyAlias | string                                                  | 是   | initSession操作密钥的别名。                                 |
1506| options  | [HuksOptions](#huksoptions)                             | 是   | initSession操作的参数集合。                                 |
1507| callback | AsyncCallback\<[HuksSessionHandle](#hukssessionhandle9)> | 是   | 回调函数。将initSession操作返回的handle添加到密钥管理系统的回调。 |
1508
1509**错误码:**
1510
1511以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1512
1513| 错误码ID | 错误信息      |
1514| -------- | ------------- |
1515| 401 | argument is invalid. |
1516| 801 | api is not supported. |
1517| 12000001 | algorithm mode is not supported. |
1518| 12000002 | algorithm param is missing. |
1519| 12000003 | algorithm param is invalid. |
1520| 12000004 | operating file failed. |
1521| 12000005 | IPC communication failed. |
1522| 12000006 | error occured in crypto engine. |
1523| 12000010 | the number of sessions has reached limit. |
1524| 12000011 | queried entity does not exist. |
1525| 12000012 | external error. |
1526| 12000014 | memory is insufficient. |
1527
1528## huks.initSession<sup>9+</sup>
1529
1530initSession(keyAlias: string, options: HuksOptions) : Promise\<HuksSessionHandle>
1531
1532initSession操作密钥接口,使用Promise方式异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。
1533
1534**系统能力**:SystemCapability.Security.Huks.Extension
1535
1536**参数:**
1537
1538| 参数名   | 类型                                              | 必填 | 说明                                             |
1539| -------- | ------------------------------------------------- | ---- | ------------------------------------------------ |
1540| keyAlias | string                                            | 是   | initSession操作密钥的别名。                             |
1541| options  | [HuksOptions](#huksoptions)                       | 是   | initSession参数集合。                                   |
1542
1543**返回值**:
1544
1545| 类型                                | 说明                                               |
1546| ----------------------------------- | -------------------------------------------------- |
1547| Promise\<[HuksSessionHandle](#hukssessionhandle9)> | Promise对象。将initSession操作返回的handle添加到密钥管理系统的回调。 |
1548
1549**错误码:**
1550
1551以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1552
1553| 错误码ID | 错误信息      |
1554| -------- | ------------- |
1555| 401 | argument is invalid. |
1556| 801 | api is not supported. |
1557| 12000001 | algorithm mode is not supported. |
1558| 12000002 | algorithm param is missing. |
1559| 12000003 | algorithm param is invalid. |
1560| 12000004 | operating file failed. |
1561| 12000005 | IPC communication failed. |
1562| 12000006 | error occured in crypto engine. |
1563| 12000010 | the number of sessions has reached limit. |
1564| 12000011 | queried entity does not exist. |
1565| 12000012 | external error. |
1566| 12000014 | memory is insufficient. |
1567
1568## huks.updateSession<sup>9+</sup>
1569
1570updateSession(handle: number, options: HuksOptions, callback: AsyncCallback\<HuksReturnResult>) : void
1571
1572updateSession操作密钥接口,使用Callback回调异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。
1573
1574**系统能力**:SystemCapability.Security.Huks.Core
1575
1576**参数:**
1577
1578| 参数名   | 类型                                                 | 必填 | 说明                                         |
1579| -------- | ---------------------------------------------------- | ---- | -------------------------------------------- |
1580| handle   | number                                               | 是   | updateSession操作的handle。                         |
1581| options  | [HuksOptions](#huksoptions)                          | 是   | updateSession的参数集合。                           |
1582| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult9)> | 是   | 回调函数。将updateSession操作的结果添加到密钥管理系统的回调。 |
1583
1584**错误码:**
1585
1586以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1587
1588| 错误码ID | 错误信息      |
1589| -------- | ------------- |
1590| 401 | argument is invalid. |
1591| 801 | api is not supported. |
1592| 12000001 | algorithm mode is not supported. |
1593| 12000002 | algorithm param is missing. |
1594| 12000003 | algorithm param is invalid. |
1595| 12000004 | operating file failed. |
1596| 12000005 | IPC communication failed. |
1597| 12000006 | error occured in crypto engine. |
1598| 12000007 | this credential is already invalidated permanently. |
1599| 12000008 | verify authtoken failed. |
1600| 12000009 | authtoken is already timeout. |
1601| 12000011 | queried entity does not exist. |
1602| 12000012 | external error. |
1603| 12000014 | memory is insufficient. |
1604
1605## huks.updateSession<sup>9+</sup>
1606
1607updateSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback\<HuksReturnResult>) : void
1608
1609updateSession操作密钥接口,使用Callback回调异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。
1610
1611**系统能力**:SystemCapability.Security.Huks.Extension
1612
1613**参数:**
1614
1615| 参数名   | 类型                                                 | 必填 | 说明                                         |
1616| -------- | ---------------------------------------------------- | ---- | -------------------------------------------- |
1617| handle   | number                                               | 是   | updateSession操作的handle。                         |
1618| options  | [HuksOptions](#huksoptions)                          | 是   | updateSession操作的参数集合。                       |
1619| token    | Uint8Array                                           | 是   | updateSession操作的token。                          |
1620| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult9)> | 是   | 回调函数。将updateSession操作的结果添加到密钥管理系统的回调。 |
1621
1622**错误码:**
1623
1624以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1625
1626| 错误码ID | 错误信息      |
1627| -------- | ------------- |
1628| 401 | argument is invalid. |
1629| 801 | api is not supported. |
1630| 12000001 | algorithm mode is not supported. |
1631| 12000002 | algorithm param is missing. |
1632| 12000003 | algorithm param is invalid. |
1633| 12000004 | operating file failed. |
1634| 12000005 | IPC communication failed. |
1635| 12000006 | error occured in crypto engine. |
1636| 12000007 | this credential is already invalidated permanently. |
1637| 12000008 | verify authtoken failed. |
1638| 12000009 | authtoken is already timeout. |
1639| 12000011 | queried entity does not exist. |
1640| 12000012 | external error. |
1641| 12000014 | memory is insufficient. |
1642
1643## huks.updateSession<sup>9+</sup>
1644
1645updateSession(handle: number, options: HuksOptions, token?: Uint8Array) : Promise\<HuksReturnResult>
1646
1647updateSession操作密钥接口,使用Promise方式异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。
1648
1649**系统能力**:SystemCapability.Security.Huks.Extension
1650
1651**参数:**
1652
1653| 参数名  | 类型                                           | 必填 | 说明                                         |
1654| ------- | ---------------------------------------------- | ---- | -------------------------------------------- |
1655| handle  | number                                         | 是   | updateSession操作的handle。                         |
1656| options | [HuksOptions](#huksoptions)                    | 是   | updateSession操作的参数集合。                       |
1657| token   | Uint8Array                                     | 否   | updateSession操作的token。                          |
1658
1659**返回值**:
1660
1661| 类型                                | 说明                                               |
1662| ----------------------------------- | -------------------------------------------------- |
1663| Promise<[HuksReturnResult](#huksreturnresult9)> | Promise对象。将updateSession操作的结果添加到密钥管理系统的回调。 |
1664
1665**错误码:**
1666
1667以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1668
1669| 错误码ID | 错误信息      |
1670| -------- | ------------- |
1671| 401 | argument is invalid. |
1672| 801 | api is not supported. |
1673| 12000001 | algorithm mode is not supported. |
1674| 12000002 | algorithm param is missing. |
1675| 12000003 | algorithm param is invalid. |
1676| 12000004 | operating file failed. |
1677| 12000005 | IPC communication failed. |
1678| 12000006 | error occured in crypto engine. |
1679| 12000007 | this credential is already invalidated permanently. |
1680| 12000008 | verify authtoken failed. |
1681| 12000009 | authtoken is already timeout. |
1682| 12000011 | queried entity does not exist. |
1683| 12000012 | external error. |
1684| 12000014 | memory is insufficient. |
1685
1686## huks.finishSession<sup>9+</sup>
1687
1688finishSession(handle: number, options: HuksOptions, callback: AsyncCallback\<HuksReturnResult>) : void
1689
1690finishSession操作密钥接口,使用Callback回调异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。
1691
1692**系统能力**:SystemCapability.Security.Huks.Core
1693
1694**参数:**
1695
1696| 参数名   | 类型                                                 | 必填 | 说明                                         |
1697| -------- | ---------------------------------------------------- | ---- | -------------------------------------------- |
1698| handle   | number                                               | 是   | finishSession操作的handle。                         |
1699| options  | [HuksOptions](#huksoptions)                          | 是   | finishSession的参数集合。                           |
1700| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult9)> | 是   | 回调函数。将finishSession操作的结果添加到密钥管理系统的回调。 |
1701
1702**错误码:**
1703
1704以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1705
1706| 错误码ID | 错误信息      |
1707| -------- | ------------- |
1708| 401 | argument is invalid. |
1709| 801 | api is not supported. |
1710| 12000001 | algorithm mode is not supported. |
1711| 12000002 | algorithm param is missing. |
1712| 12000003 | algorithm param is invalid. |
1713| 12000004 | operating file failed. |
1714| 12000005 | IPC communication failed. |
1715| 12000006 | error occured in crypto engine. |
1716| 12000007 | this credential is already invalidated permanently. |
1717| 12000008 | verify authtoken failed. |
1718| 12000009 | authtoken is already timeout. |
1719| 12000011 | queried entity does not exist. |
1720| 12000012 | external error. |
1721| 12000014 | memory is insufficient. |
1722
1723## huks.finishSession<sup>9+</sup>
1724
1725finishSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback\<HuksReturnResult>) : void
1726
1727finishSession操作密钥接口,使用Callback回调异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。
1728
1729**系统能力**:SystemCapability.Security.Huks.Extension
1730
1731**参数:**
1732
1733| 参数名   | 类型                                                  | 必填 | 说明                                         |
1734| -------- | ----------------------------------------------------- | ---- | -------------------------------------------- |
1735| handle   | number                                                | 是   | finishSession操作的handle。                         |
1736| options  | [HuksOptions](#huksoptions)                           | 是   | finishSession的参数集合。                           |
1737| token    | Uint8Array                                            | 是   | finishSession操作的token。                          |
1738| callback | AsyncCallback\<[HuksReturnResult](#huksreturnresult9)> | 是   | 回调函数。将finishSession操作的结果添加到密钥管理系统的回调。 |
1739
1740**错误码:**
1741
1742以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1743
1744| 错误码ID | 错误信息      |
1745| -------- | ------------- |
1746| 401 | argument is invalid. |
1747| 801 | api is not supported. |
1748| 12000001 | algorithm mode is not supported. |
1749| 12000002 | algorithm param is missing. |
1750| 12000003 | algorithm param is invalid. |
1751| 12000004 | operating file failed. |
1752| 12000005 | IPC communication failed. |
1753| 12000006 | error occured in crypto engine. |
1754| 12000007 | this credential is already invalidated permanently. |
1755| 12000008 | verify authtoken failed. |
1756| 12000009 | authtoken is already timeout. |
1757| 12000011 | queried entity does not exist. |
1758| 12000012 | external error. |
1759| 12000014 | memory is insufficient. |
1760
1761## huks.finishSession<sup>9+</sup>
1762
1763finishSession(handle: number, options: HuksOptions, token?: Uint8Array) : Promise\<HuksReturnResult>
1764
1765finishSession操作密钥接口,使用Promise方式异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。
1766
1767**系统能力**:SystemCapability.Security.Huks.Extension
1768
1769**参数:**
1770
1771| 参数名  | 类型                                            | 必填 | 说明                                |
1772| ------- | ----------------------------------------------- | ---- | ----------------------------------- |
1773| handle  | number                                          | 是   | finishSession操作的handle。                |
1774| options | [HuksOptions](#huksoptions)                     | 是   | finishSession操作的参数集合。              |
1775| token   | Uint8Array                                      | 否   | finishSession操作的token。                 |
1776
1777**返回值**:
1778
1779| 类型                                | 说明                                               |
1780| ----------------------------------- | -------------------------------------------------- |
1781| Promise\<[HuksReturnResult](#huksreturnresult9)> | Promise对象,用于获取异步返回结果。 |
1782
1783**错误码:**
1784
1785以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1786
1787| 错误码ID | 错误信息      |
1788| -------- | ------------- |
1789| 401 | argument is invalid. |
1790| 801 | api is not supported. |
1791| 12000001 | algorithm mode is not supported. |
1792| 12000002 | algorithm param is missing. |
1793| 12000003 | algorithm param is invalid. |
1794| 12000004 | operating file failed. |
1795| 12000005 | IPC communication failed. |
1796| 12000006 | error occured in crypto engine. |
1797| 12000007 | this credential is already invalidated permanently. |
1798| 12000008 | verify authtoken failed. |
1799| 12000009 | authtoken is already timeout. |
1800| 12000011 | queried entity does not exist. |
1801| 12000012 | external error. |
1802| 12000014 | memory is insufficient. |
1803
1804## huks.abortSession<sup>9+</sup>
1805
1806abortSession(handle: number, options: HuksOptions, callback: AsyncCallback\<void>) : void
1807
1808abortSession操作密钥接口,使用Callback回调异步返回结果 。
1809
1810**系统能力**:SystemCapability.Security.Huks.Core
1811
1812**参数:**
1813
1814| 参数名   | 类型                        | 必填 | 说明                                        |
1815| -------- | --------------------------- | ---- | ------------------------------------------- |
1816| handle   | number                      | 是   | abortSession操作的handle。                         |
1817| options  | [HuksOptions](#huksoptions) | 是   | abortSession操作的参数集合。                       |
1818| callback | AsyncCallback\<void>        | 是   | 回调函数。将abortSession操作的结果添加到密钥管理系统的回调。 |
1819
1820**错误码:**
1821
1822以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1823
1824| 错误码ID | 错误信息      |
1825| -------- | ------------- |
1826| 401 | argument is invalid. |
1827| 801 | api is not supported. |
1828| 12000004 | operating file failed. |
1829| 12000005 | IPC communication failed. |
1830| 12000006 | error occured in crypto engine. |
1831| 12000012 | external error. |
1832| 12000014 | memory is insufficient. |
1833
1834**示例:**
1835
1836```ts
1837import huks from '@ohos.security.huks';
1838/* huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用,当
1839 * huks.initSessionhuks.updateSession
1840 * 以及huks.finishSession操作中的任一阶段发生错误时,
1841 * 都需要调用huks.abortSession来终止密钥的使用。
1842 *
1843 * 以下以RSA1024密钥的callback功能使用为例
1844 */
1845class HuksProperties {
1846    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
1847    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose | huks.HuksKeyDigest |
1848    huks.HuksKeyPadding | huks.HuksCipherMode = huks.HuksKeyAlg.HUKS_ALG_ECC
1849}
1850function stringToUint8Array(str: string) {
1851    let arr: number[] = [];
1852    for (let i = 0, j = str.length; i < j; ++i) {
1853        arr.push(str.charCodeAt(i));
1854    }
1855    let tmpUint8Array = new Uint8Array(arr);
1856    return tmpUint8Array;
1857}
1858let keyAlias = "HuksDemoRSA";
1859let properties: HuksProperties[] = []
1860let options: huks.HuksOptions = {
1861    properties: properties,
1862    inData: new Uint8Array(0)
1863};
1864let handle: number = 0;
1865async function generateKey() {
1866    properties[0] = {
1867        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
1868        value: huks.HuksKeyAlg.HUKS_ALG_RSA
1869    };
1870    properties[1] = {
1871        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
1872        value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024
1873    };
1874    properties[2] = {
1875        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
1876        value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
1877    };
1878    properties[3] = {
1879        tag: huks.HuksTag.HUKS_TAG_PADDING,
1880        value: huks.HuksKeyPadding.HUKS_PADDING_PKCS1_V1_5
1881    };
1882    properties[4] = {
1883        tag: huks.HuksTag.HUKS_TAG_DIGEST,
1884        value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
1885    };
1886    properties[5] = {
1887        tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
1888        value: huks.HuksCipherMode.HUKS_MODE_ECB,
1889    }
1890    try {
1891        await huks.generateKeyItem(keyAlias, options, (error, data) => {
1892            if (error) {
1893                console.error(`callback: generateKeyItem failed`);
1894            } else {
1895                console.info(`callback: generateKeyItem success`);
1896            }
1897        });
1898    } catch (error) {
1899        console.error(`callback: generateKeyItem input arg invalid`);
1900    }
1901}
1902async function huksInit() {
1903    console.log('enter huksInit');
1904    try {
1905        huks.initSession(keyAlias, options, (error, data) => {
1906            if (error) {
1907                console.error(`callback: initSession failed`);
1908            } else {
1909                console.info(`callback: initSession success, data = ${JSON.stringify(data)}`);
1910                handle = data.handle;
1911            }
1912        });
1913    } catch (error) {
1914        console.error(`callback: initSession input arg invalid`);
1915    }
1916}
1917async function huksUpdate() {
1918    console.log('enter huksUpdate');
1919    options.inData = stringToUint8Array("huksHmacTest");
1920    try {
1921        huks.updateSession(handle, options, (error, data) => {
1922            if (error) {
1923                console.error(`callback: updateSession failed`);
1924            } else {
1925                console.info(`callback: updateSession success, data = ${JSON.stringify(data)}`);
1926            }
1927        });
1928    } catch (error) {
1929        console.error(`callback: updateSession input arg invalid`);
1930    }
1931}
1932async function huksFinish() {
1933    console.log('enter huksFinish');
1934    options.inData = new Uint8Array(0);
1935    try {
1936        huks.finishSession(handle, options, (error, data) => {
1937            if (error) {
1938                console.error(`callback: finishSession failed`);
1939            } else {
1940                console.info(`callback: finishSession success, data = ${JSON.stringify(data)}`);
1941            }
1942        });
1943    } catch (error) {
1944        console.error(`callback: finishSession input arg invalid`);
1945    }
1946}
1947async function huksAbort() {
1948    console.log('enter huksAbort');
1949    try {
1950        huks.abortSession(handle, options, (error, data) => {
1951            if (error) {
1952                console.error(`callback: abortSession failed`);
1953            } else {
1954                console.info(`callback: abortSession success`);
1955            }
1956        });
1957    } catch (error) {
1958        console.error(`callback: abortSession input arg invalid`);
1959    }
1960}
1961```
1962
1963## huks.abortSession<sup>9+</sup>
1964
1965abortSession(handle: number, options: HuksOptions) : Promise\<void>;
1966
1967abortSession操作密钥接口,使用Promise方式异步返回结果。
1968
1969**系统能力**:SystemCapability.Security.Huks.Extension
1970
1971**参数:**
1972
1973| 参数名  | 类型                        | 必填 | 说明                                        |
1974| ------- | --------------------------- | ---- | ------------------------------------------- |
1975| handle  | number                      | 是   | abortSession操作的handle。                         |
1976| options | [HuksOptions](#huksoptions) | 是   | abortSession操作的参数集合。                       |
1977
1978**返回值**:
1979
1980| 类型                                | 说明                                               |
1981| ----------------------------------- | -------------------------------------------------- |
1982| Promise\<void>             | Promise对象。将abortSession操作的结果添加到密钥管理系统的回调。 |
1983
1984**错误码:**
1985
1986以下错误码的详细介绍请参见[HUKS错误码](../errorcodes/errorcode-huks.md)。
1987
1988| 错误码ID | 错误信息      |
1989| -------- | ------------- |
1990| 401 | argument is invalid. |
1991| 801 | api is not supported. |
1992| 12000004 | operating file failed. |
1993| 12000005 | IPC communication failed. |
1994| 12000006 | error occured in crypto engine. |
1995| 12000012 | external error. |
1996| 12000014 | memory is insufficient. |
1997
1998**示例:**
1999
2000```ts
2001import huks from '@ohos.security.huks';
2002import { BusinessError } from '@ohos.base';
2003/* huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用,当
2004 * huks.initSessionhuks.updateSession
2005 * 以及huks.finishSession操作中的任一阶段发生错误时,
2006 * 都需要调用huks.abortSession来终止密钥的使用。
2007 *
2008 * 以下以RSA1024密钥的callback功能使用为例
2009 */
2010class HuksProperties {
2011    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
2012    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose |
2013    huks.HuksKeyDigest | huks.HuksKeyPadding | huks.HuksKeyGenerateType |
2014    huks.HuksCipherMode = huks.HuksKeyAlg.HUKS_ALG_ECC
2015}
2016
2017function stringToUint8Array(str: string) {
2018    let arr: number[] = [];
2019    for (let i = 0, j = str.length; i < j; ++i) {
2020        arr.push(str.charCodeAt(i));
2021    }
2022    let tmpUint8Array = new Uint8Array(arr);
2023    return tmpUint8Array;
2024}
2025
2026let keyAlias = "HuksDemoRSA";
2027let properties: HuksProperties[] = []
2028let options: huks.HuksOptions = {
2029    properties: properties,
2030    inData: new Uint8Array(0)
2031};
2032let handle: number = 0;
2033
2034async function generateKey() {
2035    properties[0] = {
2036        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
2037        value: huks.HuksKeyAlg.HUKS_ALG_RSA
2038    };
2039    properties[1] = {
2040        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
2041        value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024
2042    };
2043    properties[2] = {
2044        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
2045        value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
2046    };
2047    properties[3] = {
2048        tag: huks.HuksTag.HUKS_TAG_PADDING,
2049        value: huks.HuksKeyPadding.HUKS_PADDING_PKCS1_V1_5
2050    };
2051    properties[4] = {
2052        tag: huks.HuksTag.HUKS_TAG_DIGEST,
2053        value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
2054    };
2055    properties[5] = {
2056        tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
2057        value: huks.HuksCipherMode.HUKS_MODE_ECB,
2058    }
2059
2060    try {
2061        await huks.generateKeyItem(keyAlias, options)
2062            .then((data) => {
2063                console.info(`promise: generateKeyItem success`);
2064            })
2065            .catch((error: BusinessError) => {
2066                console.error(`promise: generateKeyItem failed`);
2067            });
2068    } catch (error) {
2069        console.error(`promise: generateKeyItem input arg invalid`);
2070    }
2071}
2072
2073async function huksInit() {
2074    console.log('enter huksInit');
2075    try {
2076        await huks.initSession(keyAlias, options)
2077            .then((data) => {
2078                console.info(`promise: initSession success, data = ${JSON.stringify(data)}`);
2079                handle = data.handle;
2080            })
2081            .catch((error: BusinessError) => {
2082                console.error(`promise: initSession key failed`);
2083            });
2084    } catch (error) {
2085        console.error(`promise: initSession input arg invalid`);
2086    }
2087}
2088
2089async function huksUpdate() {
2090    console.log('enter huksUpdate');
2091    options.inData = stringToUint8Array("huksHmacTest");
2092    try {
2093        await huks.updateSession(handle, options)
2094            .then((data) => {
2095                console.info(`promise: updateSession success, data = ${JSON.stringify(data)}`);
2096            })
2097            .catch((error: BusinessError) => {
2098                console.error(`promise: updateSession failed`);
2099            });
2100    } catch (error) {
2101        console.error(`promise: updateSession input arg invalid`);
2102    }
2103}
2104
2105async function huksFinish() {
2106    console.log('enter huksFinish');
2107    options.inData = new Uint8Array(0);
2108    try {
2109        await huks.finishSession(handle, options)
2110            .then((data) => {
2111                console.info(`promise: finishSession success, data = ${JSON.stringify(data)}`);
2112            })
2113            .catch((error: BusinessError) => {
2114                console.error(`promise: finishSession failed`);
2115            });
2116    } catch (error) {
2117        console.error(`promise: finishSession input arg invalid`);
2118    }
2119}
2120
2121async function huksAbort() {
2122    console.log('enter huksAbort');
2123    try {
2124        await huks.abortSession(handle, options)
2125            .then((data) => {
2126                console.info(`promise: abortSession success`);
2127            })
2128            .catch((error: BusinessError) => {
2129                console.error(`promise: abortSession failed`);
2130            });
2131    } catch (error) {
2132        console.error(`promise: abortSession input arg invalid`);
2133    }
2134}
2135```
2136
2137
2138## HuksExceptionErrCode<sup>9+</sup>
2139
2140表示错误码的枚举以及对应的错误信息, 错误码表示错误类型,错误信息展示错误详情。
2141
2142关于错误码的具体信息,可在[错误码参考文档](../errorcodes/errorcode-huks.md)中查看。
2143
2144**系统能力**:SystemCapability.Security.Huks.Core
2145
2146| 名称                                           | 值 |  说明                        |
2147| ---------------------------------------------- | -------- |--------------------------- |
2148| HUKS_ERR_CODE_PERMISSION_FAIL                  | 201      | 权限错误导致失败。          |
2149| HUKS_ERR_CODE_ILLEGAL_ARGUMENT                 | 401      | 参数错误导致失败。          |
2150| HUKS_ERR_CODE_NOT_SUPPORTED_API                | 801      | 不支持的API。               |
2151| HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED            | 12000001 | 不支持的功能/特性。         |
2152| HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT      | 12000002 | 缺少密钥算法参数。          |
2153| HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT      | 12000003 | 无效密钥算法参数。          |
2154| HUKS_ERR_CODE_FILE_OPERATION_FAIL              | 12000004 | 文件操作失败。              |
2155| HUKS_ERR_CODE_COMMUNICATION_FAIL               | 12000005 | 通信失败。                  |
2156| HUKS_ERR_CODE_CRYPTO_FAIL                      | 12000006 | 算法库操作失败。            |
2157| HUKS_ERR_CODE_KEY_AUTH_PERMANENTLY_INVALIDATED | 12000007 | 密钥访问失败-密钥访问失效。 |
2158| HUKS_ERR_CODE_KEY_AUTH_VERIFY_FAILED           | 12000008 | 密钥访问失败-密钥认证失败。 |
2159| HUKS_ERR_CODE_KEY_AUTH_TIME_OUT                | 12000009 | 密钥访问失败-密钥访问超时。 |
2160| HUKS_ERR_CODE_SESSION_LIMIT                    | 12000010 | 密钥操作会话数已达上限。    |
2161| HUKS_ERR_CODE_ITEM_NOT_EXIST                   | 12000011 | 目标对象不存在。            |
2162| HUKS_ERR_CODE_EXTERNAL_ERROR                   | 12000012 | 外部错误。                  |
2163| HUKS_ERR_CODE_CREDENTIAL_NOT_EXIST             | 12000013 | 缺失所需凭据。              |
2164| HUKS_ERR_CODE_INSUFFICIENT_MEMORY              | 12000014 | 内存不足。                  |
2165| HUKS_ERR_CODE_CALL_SERVICE_FAILED              | 12000015 | 调用其他系统服务失败。      |
2166
2167## HuksKeyPurpose
2168
2169表示密钥用途。
2170
2171**系统能力**:SystemCapability.Security.Huks.Core
2172
2173| 名称                     | 值   | 说明                             |
2174| ------------------------ | ---- | -------------------------------- |
2175| HUKS_KEY_PURPOSE_ENCRYPT | 1    | 表示密钥用于对明文进行加密操作。 <br> **系统能力:** SystemCapability.Security.Huks.Core|
2176| HUKS_KEY_PURPOSE_DECRYPT | 2    | 表示密钥用于对密文进行解密操作。 <br> **系统能力:** SystemCapability.Security.Huks.Core|
2177| HUKS_KEY_PURPOSE_SIGN    | 4    | 表示密钥用于对数据进行签名。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2178| HUKS_KEY_PURPOSE_VERIFY  | 8    | 表示密钥用于验证签名后的数据。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2179| HUKS_KEY_PURPOSE_DERIVE  | 16   | 表示密钥用于派生密钥。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2180| HUKS_KEY_PURPOSE_WRAP    | 32   | 表示密钥用于加密导出。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2181| HUKS_KEY_PURPOSE_UNWRAP  | 64   | 表示密钥加密导入。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2182| HUKS_KEY_PURPOSE_MAC     | 128  | 表示密钥用于生成mac消息验证码。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2183| HUKS_KEY_PURPOSE_AGREE   | 256  | 表示密钥用于进行密钥协商。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2184
2185## HuksKeyDigest
2186
2187表示摘要算法。
2188
2189**系统能力**:SystemCapability.Security.Huks.Extension
2190
2191| 名称                   | 值   | 说明                                     |
2192| ---------------------- | ---- | ---------------------------------------- |
2193| HUKS_DIGEST_NONE       | 0   | 表示无摘要算法。 |
2194| HUKS_DIGEST_MD5        | 1    | 表示MD5摘要算法。 |
2195| HUKS_DIGEST_SM3<sup>9+</sup> | 2 | 表示SM3摘要算法。 |
2196| HUKS_DIGEST_SHA1       | 10   | 表示SHA1摘要算法。 |
2197| HUKS_DIGEST_SHA224 | 11   | 表示SHA224摘要算法。 |
2198| HUKS_DIGEST_SHA256 | 12  | 表示SHA256摘要算法。 |
2199| HUKS_DIGEST_SHA384  | 13  | 表示SHA384摘要算法。 |
2200| HUKS_DIGEST_SHA512 | 14  | 表示SHA512摘要算法。 |
2201
2202## HuksKeyPadding
2203
2204表示补齐算法。
2205
2206**系统能力**:SystemCapability.Security.Huks.Core
2207
2208| 名称                   | 值   | 说明                                     |
2209| ---------------------- | ---- | ---------------------------------------- |
2210| HUKS_PADDING_NONE | 0    | 表示不使用补齐算法。 <br> **系统能力:** SystemCapability.Security.Huks.Core|
2211| HUKS_PADDING_OAEP | 1    | 表示使用OAEP补齐算法。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2212| HUKS_PADDING_PSS | 2    | 表示使用PSS补齐算法。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2213| HUKS_PADDING_PKCS1_V1_5 | 3    | 表示使用PKCS1_V1_5补齐算法。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2214| HUKS_PADDING_PKCS5 | 4   | 表示使用PKCS5补齐算法。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2215| HUKS_PADDING_PKCS7 | 5   | 表示使用PKCS7补齐算法。 <br> **系统能力:** SystemCapability.Security.Huks.Core|
2216
2217## HuksCipherMode
2218
2219表示加密模式。
2220
2221**系统能力**:SystemCapability.Security.Huks.Core
2222
2223| 名称          | 值   | 说明                  |
2224| ------------- | ---- | --------------------- |
2225| HUKS_MODE_ECB | 1    | 表示使用ECB加密模式。 <br> **系统能力:** SystemCapability.Security.Huks.Core|
2226| HUKS_MODE_CBC | 2    | 表示使用CBC加密模式。 <br> **系统能力:** SystemCapability.Security.Huks.Core|
2227| HUKS_MODE_CTR | 3    | 表示使用CTR加密模式。 <br> **系统能力:** SystemCapability.Security.Huks.Core|
2228| HUKS_MODE_OFB | 4    | 表示使用OFB加密模式。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2229| HUKS_MODE_CCM | 31   | 表示使用CCM加密模式。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2230| HUKS_MODE_GCM | 32   | 表示使用GCM加密模式。 <br> **系统能力:** SystemCapability.Security.Huks.Core|
2231
2232## HuksKeySize
2233
2234表示密钥长度。
2235
2236**系统能力**:SystemCapability.Security.Huks.Core
2237
2238| 名称                               | 值   | 说明                                       |
2239| ---------------------------------- | ---- | ------------------------------------------ |
2240| HUKS_RSA_KEY_SIZE_512              | 512  | 表示使用RSA算法的密钥长度为512bit。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2241| HUKS_RSA_KEY_SIZE_768              | 768  | 表示使用RSA算法的密钥长度为768bit。  <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2242| HUKS_RSA_KEY_SIZE_1024             | 1024 | 表示使用RSA算法的密钥长度为1024bit。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2243| HUKS_RSA_KEY_SIZE_2048             | 2048 | 表示使用RSA算法的密钥长度为2048bit。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2244| HUKS_RSA_KEY_SIZE_3072             | 3072 | 表示使用RSA算法的密钥长度为3072bit。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2245| HUKS_RSA_KEY_SIZE_4096             | 4096 | 表示使用RSA算法的密钥长度为4096bit。  <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2246| HUKS_ECC_KEY_SIZE_224              | 224  | 表示使用ECC算法的密钥长度为224bit。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2247| HUKS_ECC_KEY_SIZE_256              | 256  | 表示使用ECC算法的密钥长度为256bit。  <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2248| HUKS_ECC_KEY_SIZE_384              | 384  | 表示使用ECC算法的密钥长度为384bit。  <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2249| HUKS_ECC_KEY_SIZE_521              | 521  | 表示使用ECC算法的密钥长度为521bit。   <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2250| HUKS_AES_KEY_SIZE_128              | 128  | 表示使用AES算法的密钥长度为128bit。 <br> **系统能力:** SystemCapability.Security.Huks.Core|
2251| HUKS_AES_KEY_SIZE_192              | 192  | 表示使用AES算法的密钥长度为192bit。  <br> **系统能力:** SystemCapability.Security.Huks.Core|
2252| HUKS_AES_KEY_SIZE_256              | 256  | 表示使用AES算法的密钥长度为256bit。  <br> **系统能力:** SystemCapability.Security.Huks.Core|
2253| HUKS_AES_KEY_SIZE_512              | 512  | 表示使用AES算法的密钥长度为512bit。  <br> **系统能力:** SystemCapability.Security.Huks.Core|
2254| HUKS_CURVE25519_KEY_SIZE_256       | 256  | 表示使用CURVE25519算法的密钥长度为256bit。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2255| HUKS_DH_KEY_SIZE_2048              | 2048 | 表示使用DH算法的密钥长度为2048bit。  <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2256| HUKS_DH_KEY_SIZE_3072              | 3072 | 表示使用DH算法的密钥长度为3072bit。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2257| HUKS_DH_KEY_SIZE_4096              | 4096 | 表示使用DH算法的密钥长度为4096bit。  <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2258| HUKS_SM2_KEY_SIZE_256<sup>9+</sup> | 256  | 表示SM2算法的密钥长度为256bit。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2259| HUKS_SM4_KEY_SIZE_128<sup>9+</sup> | 128  | 表示SM4算法的密钥长度为128bit。  <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2260
2261## HuksKeyAlg
2262
2263表示密钥使用的算法。
2264
2265**系统能力**:SystemCapability.Security.Huks.Core
2266
2267| 名称                      | 值   | 说明                  |
2268| ------------------------- | ---- | --------------------- |
2269| HUKS_ALG_RSA              | 1    | 表示使用RSA算法。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2270| HUKS_ALG_ECC              | 2    | 表示使用ECC算法。  <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2271| HUKS_ALG_DSA              | 3    | 表示使用DSA算法。  <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2272| HUKS_ALG_AES              | 20   | 表示使用AES算法。  <br> **系统能力:** SystemCapability.Security.Huks.Core|
2273| HUKS_ALG_HMAC             | 50   | 表示使用HMAC算法。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2274| HUKS_ALG_HKDF             | 51   | 表示使用HKDF算法。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2275| HUKS_ALG_PBKDF2           | 52   | 表示使用PBKDF2算法。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2276| HUKS_ALG_ECDH             | 100  | 表示使用ECDH算法。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2277| HUKS_ALG_X25519           | 101  | 表示使用X25519算法。  <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2278| HUKS_ALG_ED25519          | 102  | 表示使用ED25519算法。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2279| HUKS_ALG_DH               | 103  | 表示使用DH算法。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2280| HUKS_ALG_SM2<sup>9+</sup> | 150  | 表示使用SM2算法。 <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2281| HUKS_ALG_SM3<sup>9+</sup> | 151  | 表示使用SM3算法。  <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2282| HUKS_ALG_SM4<sup>9+</sup> | 152  | 表示使用SM4算法。  <br> **系统能力:** SystemCapability.Security.Huks.Extension|
2283
2284## HuksKeyGenerateType
2285
2286表示生成密钥的类型。
2287
2288**系统能力**:SystemCapability.Security.Huks.Extension
2289
2290| 名称                           | 值   | 说明             |
2291| ------------------------------ | ---- | ---------------- |
2292| HUKS_KEY_GENERATE_TYPE_DEFAULT | 0    | 默认生成的密钥。 |
2293| HUKS_KEY_GENERATE_TYPE_DERIVE  | 1    | 派生生成的密钥。 |
2294| HUKS_KEY_GENERATE_TYPE_AGREE   | 2    | 协商生成的密钥。 |
2295
2296## HuksKeyFlag
2297
2298表示密钥的产生方式。
2299
2300**系统能力**:SystemCapability.Security.Huks.Core
2301
2302| 名称                       | 值   | 说明                                 |
2303| -------------------------- | ---- | ------------------------------------ |
2304| HUKS_KEY_FLAG_IMPORT_KEY   | 1    | 表示通过导入公钥接口导入的密钥。     |
2305| HUKS_KEY_FLAG_GENERATE_KEY | 2    | 表示通过生成密钥接口生成的密钥。     |
2306| HUKS_KEY_FLAG_AGREE_KEY    | 3    | 表示通过生成密钥协商接口生成的密钥。 |
2307| HUKS_KEY_FLAG_DERIVE_KEY   | 4    | 表示通过生成密钥派生接口生成的密钥。 |
2308
2309## HuksKeyStorageType
2310
2311表示密钥存储方式。
2312
2313**系统能力**:SystemCapability.Security.Huks.Core
2314
2315| 名称                                          | 值   | 说明                           |
2316| --------------------------------------------  | ---- | ------------------------------ |
2317| HUKS_STORAGE_TEMP<sup>(deprecated)</sup>      | 0    | 表示通过本地直接管理密钥。<br/> > **说明:** 从API version 10开始废弃,由于开发者正常使用密钥管理过程中并不需要使用此TAG,故无替代接口。针对针对密钥派生场景,可使用HUKS_STORAGE_ONLY_USED_IN_HUKS 与 HUKS_STORAGE_KEY_EXPORT_ALLOWED。 <br> **系统能力:** SystemCapability.Security.Huks.Core|
2318| HUKS_STORAGE_PERSISTENT<sup>(deprecated)</sup>      | 1    | 表示通过HUKS service管理密钥。<br/> > **说明:** 从API version 10开始废弃,由于开发者正常使用密钥管理过程中并不需要使用此TAG,故无替代接口。针对密钥派生场景,可使用HUKS_STORAGE_ONLY_USED_IN_HUKS 与 HUKS_STORAGE_KEY_EXPORT_ALLOWED。 <br> **系统能力:** SystemCapability.Security.Huks.Core|
2319| HUKS_STORAGE_ONLY_USED_IN_HUKS<sup>10+</sup>  | 2    | 表示主密钥派生的密钥存储于huks中,由HUKS进行托管。<br> **系统能力:** SystemCapability.Security.Huks.Extension|
2320| HUKS_STORAGE_KEY_EXPORT_ALLOWED<sup>10+</sup> | 3    | 表示主密钥派生的密钥直接导出给业务方,HUKS不对其进行托管服务。<br> **系统能力:** SystemCapability.Security.Huks.Extension|
2321
2322## HuksSendType
2323
2324表示发送Tag的方式。
2325
2326**系统能力**:SystemCapability.Security.Huks.Extension
2327
2328| 名称                 | 值   | 说明              |
2329| -------------------- | ---- | ----------------- |
2330| HUKS_SEND_TYPE_ASYNC | 0    | 表示异步发送TAG。 |
2331| HUKS_SEND_TYPE_SYNC  | 1    | 表示同步发送TAG。 |
2332
2333## HuksUnwrapSuite<sup>9+</sup>
2334
2335表示导入加密密钥的算法套件。
2336
2337**系统能力**:SystemCapability.Security.Huks.Extension
2338
2339| 名称                                           | 值   | 说明                                                  |
2340| ---------------------------------------------- | ---- | ----------------------------------------------------- |
2341| HUKS_UNWRAP_SUITE_X25519_AES_256_GCM_NOPADDING | 1    | 导入加密密钥时,X25519密钥协商后使用AES-256 GCM加密。 |
2342| HUKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING   | 2    | 导入加密密钥时,ECDH密钥协商后使用AES-256 GCM加密。   |
2343
2344## HuksImportKeyType<sup>9+</sup>
2345
2346表示导入密钥的密钥类型,默认为导入公钥,导入对称密钥时不需要该字段。
2347
2348**系统能力**:SystemCapability.Security.Huks.Extension
2349
2350| 名称                      | 值   | 说明                           |
2351| ------------------------- | ---- | ------------------------------ |
2352| HUKS_KEY_TYPE_PUBLIC_KEY  | 0    | 表示导入的密钥类型为公钥。     |
2353| HUKS_KEY_TYPE_PRIVATE_KEY | 1    | 表示导入的密钥类型为私钥。     |
2354| HUKS_KEY_TYPE_KEY_PAIR    | 2    | 表示导入的密钥类型为公私钥对。 |
2355
2356## HuksRsaPssSaltLenType<sup>10+</sup>
2357
2358表示Rsa在签名验签、padding为pss时需指定的salt_len类型。
2359
2360**系统能力**:SystemCapability.Security.Huks.Extension
2361
2362| 名称                                       | 值   | 说明                         |
2363| ------------------------------------------ | ---- | ---------------------------- |
2364| HUKS_RSA_PSS_SALT_LEN_DIGEST<sup>10+</sup> | 0    | 表示以摘要长度设置salt_len。 |
2365| HUKS_RSA_PSS_SALT_LEN_MAX<sup>10+</sup>    | 1    | 表示以最大长度设置salt_len。 |
2366
2367## HuksUserAuthType<sup>9+</sup>
2368
2369表示用户认证类型。
2370
2371**系统能力**:SystemCapability.Security.Huks.Extension
2372
2373| 名称                            | 值   | 说明                      |
2374| ------------------------------- | ---- | ------------------------- |
2375| HUKS_USER_AUTH_TYPE_FINGERPRINT | 1 << 0 | 表示用户认证类型为指纹。  |
2376| HUKS_USER_AUTH_TYPE_FACE        | 1 << 1 | 表示用户认证类型为人脸 。 |
2377| HUKS_USER_AUTH_TYPE_PIN         | 1 << 2  | 表示用户认证类型为PIN码。 |
2378
2379## HuksAuthAccessType<sup>9+</sup>
2380
2381表示安全访问控制类型。
2382
2383**系统能力**:SystemCapability.Security.Huks.Extension
2384
2385| 名称                                    | 值   | 说明                                             |
2386| --------------------------------------- | ---- | ------------------------------------------------ |
2387| HUKS_AUTH_ACCESS_INVALID_CLEAR_PASSWORD | 1 << 0 | 表示安全访问控制类型为清除密码后密钥无效。       |
2388| HUKS_AUTH_ACCESS_INVALID_NEW_BIO_ENROLL | 1 << 1 | 表示安全访问控制类型为新录入生物特征后密钥无效。 |
2389
2390## HuksChallengeType<sup>9+</sup>
2391
2392表示密钥使用时生成challenge的类型。
2393
2394**系统能力**:SystemCapability.Security.Huks.Extension
2395
2396| 名称                            | 值   | 说明                           |
2397| ------------------------------- | ---- | ------------------------------ |
2398| HUKS_CHALLENGE_TYPE_NORMAL | 0    | 表示challenge为普通类型,默认32字节。 |
2399| HUKS_CHALLENGE_TYPE_CUSTOM        | 1    | 表示challenge为用户自定义类型。支持使用多个密钥仅一次认证。 |
2400| HUKS_CHALLENGE_TYPE_NONE         | 2    | 表示免challenge类型。 |
2401
2402## HuksChallengePosition<sup>9+</sup>
2403
2404表示challenge类型为用户自定义类型时,生成的challenge有效长度仅为8字节连续的数据,且仅支持4种位置 。
2405
2406**系统能力**:SystemCapability.Security.Huks.Extension
2407
2408| 名称                            | 值   | 说明                           |
2409| ------------------------------- | ---- | ------------------------------ |
2410| HUKS_CHALLENGE_POS_0 | 0    | 表示0~7字节为当前密钥的有效challenge。 |
2411| HUKS_CHALLENGE_POS_1        | 1    | 表示8~15字节为当前密钥的有效challenge。 |
2412| HUKS_CHALLENGE_POS_2         | 2    | 表示16~23字节为当前密钥的有效challenge。 |
2413| HUKS_CHALLENGE_POS_3        | 3   | 表示24~31字节为当前密钥的有效challenge。 |
2414
2415## HuksSecureSignType<sup>9+</sup>
2416
2417表示生成或导入密钥时,指定该密钥的签名类型。
2418
2419**系统能力**:SystemCapability.Security.Huks.Extension
2420
2421| 名称                           | 值   | 说明                                                         |
2422| ------------------------------ | ---- | ------------------------------------------------------------ |
2423| HUKS_SECURE_SIGN_WITH_AUTHINFO | 1    | 表示签名类型为携带认证信息。生成或导入密钥时指定该字段,则在使用密钥进行签名时,对待签名的数据添加认证信息后进行签名。 |
2424
2425## HuksTagType
2426
2427表示Tag的数据类型。
2428
2429**系统能力**:SystemCapability.Security.Huks.Core
2430
2431| 名称                  | 值      | 说明                                    |
2432| --------------------- | ------- | --------------------------------------- |
2433| HUKS_TAG_TYPE_INVALID | 0 << 28 | 表示非法的Tag类型。                     |
2434| HUKS_TAG_TYPE_INT     | 1 << 28 | 表示该Tag的数据类型为int类型的number。  |
2435| HUKS_TAG_TYPE_UINT    | 2 << 28 | 表示该Tag的数据类型为uint类型的number。 |
2436| HUKS_TAG_TYPE_ULONG   | 3 << 28 | 表示该Tag的数据类型为bigint。           |
2437| HUKS_TAG_TYPE_BOOL    | 4 << 28 | 表示该Tag的数据类型为boolean。          |
2438| HUKS_TAG_TYPE_BYTES   | 5 << 28 | 表示该Tag的数据类型为Uint8Array。       |
2439
2440## HuksTag
2441
2442表示调用参数的Tag。
2443
2444**系统能力**:SystemCapability.Security.Huks.Core
2445
2446| 名称                                                        | 值                                       | 说明                                                         |
2447| ----------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------------------ |
2448| HUKS_TAG_INVALID<sup>(deprecated)</sup>                     | HuksTagType.HUKS_TAG_TYPE_INVALID \| 0   | 表示非法的Tag。从API version 9开始废弃。 <br> **系统能力:** SystemCapability.Security.Huks.Core |
2449| HUKS_TAG_ALGORITHM                                          | HuksTagType.HUKS_TAG_TYPE_UINT \| 1      | 表示算法的Tag。    <br> **系统能力:** SystemCapability.Security.Huks.Core |
2450| HUKS_TAG_PURPOSE                                            | HuksTagType.HUKS_TAG_TYPE_UINT \| 2      | 表示密钥用途的Tag。    <br> **系统能力:** SystemCapability.Security.Huks.Core |
2451| HUKS_TAG_KEY_SIZE                                           | HuksTagType.HUKS_TAG_TYPE_UINT \| 3      | 表示密钥长度的Tag。   <br> **系统能力:** SystemCapability.Security.Huks.Core |
2452| HUKS_TAG_DIGEST                                             | HuksTagType.HUKS_TAG_TYPE_UINT \| 4      | 表示摘要算法的Tag。    <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2453| HUKS_TAG_PADDING                                            | HuksTagType.HUKS_TAG_TYPE_UINT \| 5      | 表示补齐算法的Tag。    <br> **系统能力:** SystemCapability.Security.Huks.Core |
2454| HUKS_TAG_BLOCK_MODE                                         | HuksTagType.HUKS_TAG_TYPE_UINT \| 6      | 表示加密模式的Tag。     <br> **系统能力:** SystemCapability.Security.Huks.Core |
2455| HUKS_TAG_KEY_TYPE                                           | HuksTagType.HUKS_TAG_TYPE_UINT \| 7      | 表示密钥类型的Tag。     <br> **系统能力:** SystemCapability.Security.Huks.Core |
2456| HUKS_TAG_ASSOCIATED_DATA                                    | HuksTagType.HUKS_TAG_TYPE_BYTES \| 8     | 表示附加身份验证数据的Tag。    <br> **系统能力:** SystemCapability.Security.Huks.Core |
2457| HUKS_TAG_NONCE                                              | HuksTagType.HUKS_TAG_TYPE_BYTES \| 9     | 表示密钥加解密的字段。     <br> **系统能力:** SystemCapability.Security.Huks.Core |
2458| HUKS_TAG_IV                                                 | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10    | 表示密钥初始化的向量。   <br> **系统能力:** SystemCapability.Security.Huks.Core |
2459| HUKS_TAG_INFO                                               | HuksTagType.HUKS_TAG_TYPE_BYTES \| 11    | 表示密钥派生时的info。    <br> **系统能力:** SystemCapability.Security.Huks.Core |
2460| HUKS_TAG_SALT                                               | HuksTagType.HUKS_TAG_TYPE_BYTES \| 12    | 表示密钥派生时的盐值。  <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2461| HUKS_TAG_PWD<sup>(deprecated)</sup>                         | HuksTagType.HUKS_TAG_TYPE_BYTES \| 13    | 表示密钥派生时的password。从API version 9开始废弃。   <br> **系统能力:** SystemCapability.Security.Huks.Core |
2462| HUKS_TAG_ITERATION                                          | HuksTagType.HUKS_TAG_TYPE_UINT \| 14     | 表示密钥派生时的迭代次数。 <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2463| HUKS_TAG_KEY_GENERATE_TYPE                                  | HuksTagType.HUKS_TAG_TYPE_UINT \| 15     | 表示生成密钥类型的Tag。   <br> **系统能力:** SystemCapability.Security.Huks.Core |
2464| HUKS_TAG_DERIVE_MAIN_KEY<sup>(deprecated)</sup>             | HuksTagType.HUKS_TAG_TYPE_BYTES \| 16    | 表示密钥派生时的主密钥。从API version 9开始废弃。   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2465| HUKS_TAG_DERIVE_FACTOR<sup>(deprecated)</sup>               | HuksTagType.HUKS_TAG_TYPE_BYTES \| 17    | 表示密钥派生时的派生因子。从API version 9开始废弃。   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2466| HUKS_TAG_DERIVE_ALG<sup>(deprecated)</sup>                  | HuksTagType.HUKS_TAG_TYPE_UINT \| 18     | 表示密钥派生时的算法类型。从API version 9开始废弃。   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2467| HUKS_TAG_AGREE_ALG                                          | HuksTagType.HUKS_TAG_TYPE_UINT \| 19     | 表示密钥协商时的算法类型。   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2468| HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS                      | HuksTagType.HUKS_TAG_TYPE_BOOL \| 20     | 表示密钥协商时的公钥别名。   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2469| HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS                            | HuksTagType.HUKS_TAG_TYPE_BYTES \| 21    | 表示密钥协商时的私钥别名。    <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2470| HUKS_TAG_AGREE_PUBLIC_KEY                                   | HuksTagType.HUKS_TAG_TYPE_BYTES \| 22    | 表示密钥协商时的公钥。     <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2471| HUKS_TAG_KEY_ALIAS                                          | HuksTagType.HUKS_TAG_TYPE_BYTES \| 23    | 表示密钥别名。        <br> **系统能力:** SystemCapability.Security.Huks.Core |
2472| HUKS_TAG_DERIVE_KEY_SIZE                                    | HuksTagType.HUKS_TAG_TYPE_UINT \| 24     | 表示派生密钥的大小。     <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2473| HUKS_TAG_IMPORT_KEY_TYPE<sup>9+</sup>                       | HuksTagType.HUKS_TAG_TYPE_UINT \| 25     | 表示导入的密钥类型。      <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2474| HUKS_TAG_UNWRAP_ALGORITHM_SUITE<sup>9+</sup>                | HuksTagType.HUKS_TAG_TYPE_UINT \| 26     | 表示导入加密密钥的套件。        <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2475| HUKS_TAG_DERIVED_AGREED_KEY_STORAGE_FLAG<sup>10+</sup>      | HuksTagType.HUKS_TAG_TYPE_UINT \|29      | 表示派生密钥/协商密钥的存储类型。  <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2476| HUKS_TAG_RSA_PSS_SALT_LEN_TYPE<sup>10+</sup>                | HuksTagType.HUKS_TAG_TYPE_UINT \|30      | 表示rsa_pss_salt_length的类型。  <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2477| HUKS_TAG_ACTIVE_DATETIME<sup>(deprecated)</sup>             | HuksTagType.HUKS_TAG_TYPE_ULONG \| 201   | 原为证书业务预留字段,当前证书管理已独立,此字段废弃,不再预留。        <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2478| HUKS_TAG_ORIGINATION_EXPIRE_DATETIME<sup>(deprecated)</sup> | HuksTagType.HUKS_TAG_TYPE_ULONG \| 202   | 原为证书业务预留字段,当前证书管理已独立,此字段废弃,不再预留。                           <br> **系统能力:** SystemCapability.Security.Huks.Core |
2479| HUKS_TAG_USAGE_EXPIRE_DATETIME<sup>(deprecated)</sup>       | HuksTagType.HUKS_TAG_TYPE_ULONG \| 203   | 原为证书业务预留字段,当前证书管理已独立,此字段废弃,不再预留。               <br> **系统能力:** SystemCapability.Security.Huks.Core |
2480| HUKS_TAG_CREATION_DATETIME<sup>(deprecated)</sup>           | HuksTagType.HUKS_TAG_TYPE_ULONG \| 204   | 原为证书业务预留字段,当前证书管理已独立,此字段废弃,不再预留。     <br> **系统能力:** SystemCapability.Security.Huks.Core |
2481| HUKS_TAG_ALL_USERS                                          | HuksTagType.HUKS_TAG_TYPE_BOOL \| 301    | 预留               <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2482| HUKS_TAG_USER_ID                                            | HuksTagType.HUKS_TAG_TYPE_UINT \| 302    | 表示当前密钥属于哪个userID                  <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2483| HUKS_TAG_NO_AUTH_REQUIRED                                   | HuksTagType.HUKS_TAG_TYPE_BOOL \| 303    | 预留。                   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2484| HUKS_TAG_USER_AUTH_TYPE                                     | HuksTagType.HUKS_TAG_TYPE_UINT \| 304    | 表示用户认证类型。从[HuksUserAuthType](#huksuserauthtype9)中选择,需要与安全访问控制类型同时设置。支持同时指定两种用户认证类型,如:安全访问控制类型指定为HUKS_SECURE_ACCESS_INVALID_NEW_BIO_ENROLL时,密钥访问认证类型可以指定以下三种: HUKS_USER_AUTH_TYPE_FACE 、HUKS_USER_AUTH_TYPE_FINGERPRINT、HUKS_USER_AUTH_TYPE_FACE \| HUKS_USER_AUTH_TYPE_FINGERPRINT   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2485| HUKS_TAG_AUTH_TIMEOUT                                       | HuksTagType.HUKS_TAG_TYPE_UINT \| 305    | 表示authtoken单次有效期。               <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2486| HUKS_TAG_AUTH_TOKEN                                         | HuksTagType.HUKS_TAG_TYPE_BYTES \| 306   | 用于传入authToken的字段                <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2487| HUKS_TAG_KEY_AUTH_ACCESS_TYPE<sup>9+</sup>                  | HuksTagType.HUKS_TAG_TYPE_UINT \| 307    | 表示安全访问控制类型。从[HuksAuthAccessType](#huksauthaccesstype9)中选择,需要和用户认证类型同时设置。  <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2488| HUKS_TAG_KEY_SECURE_SIGN_TYPE<sup>9+</sup>                  | HuksTagType.HUKS_TAG_TYPE_UINT \| 308    | 表示生成或导入密钥时,指定该密钥的签名类型。  <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2489| HUKS_TAG_CHALLENGE_TYPE<sup>9+</sup>                        | HuksTagType.HUKS_TAG_TYPE_UINT \| 309    | 表示密钥使用时生成的challenge类型。从[HuksChallengeType](#hukschallengetype9)中选择   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2490| HUKS_TAG_CHALLENGE_POS<sup>9+</sup>                         | HuksTagType.HUKS_TAG_TYPE_UINT \| 310    | 表示challenge类型为用户自定义类型时,huks产生的challenge有效长度仅为8字节连续的数据。从[HuksChallengePosition](#hukschallengeposition9)中选择。   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2491| HUKS_TAG_KEY_AUTH_PURPOSE<sup>10+</sup>                     | HuksTagType.HUKS_TAG_TYPE_UINT \|311     | 表示密钥认证用途的tag   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2492| HUKS_TAG_ATTESTATION_CHALLENGE                              | HuksTagType.HUKS_TAG_TYPE_BYTES \| 501   | 表示attestation时的挑战值。            <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2493| HUKS_TAG_ATTESTATION_APPLICATION_ID                         | HuksTagType.HUKS_TAG_TYPE_BYTES \| 502   | 表示attestation时拥有该密钥的application的Id。     <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2494| HUKS_TAG_ATTESTATION_ID_BRAND<sup>(deprecated)</sup>        | HuksTagType.HUKS_TAG_TYPE_BYTES \| 503   | 表示设备的品牌。从API version 9开始废弃。                      <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2495| HUKS_TAG_ATTESTATION_ID_DEVICE<sup>(deprecated)</sup>       | HuksTagType.HUKS_TAG_TYPE_BYTES \| 504   | 表示设备的设备ID。从API version 9开始废弃。                   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2496| HUKS_TAG_ATTESTATION_ID_PRODUCT<sup>(deprecated)</sup>      | HuksTagType.HUKS_TAG_TYPE_BYTES \| 505   | 表示设备的产品名。从API version 9开始废弃。                  <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2497| HUKS_TAG_ATTESTATION_ID_SERIAL<sup>(deprecated)</sup>       | HuksTagType.HUKS_TAG_TYPE_BYTES \| 506   | 表示设备的SN号。从API version 9开始废弃。                    <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2498| HUKS_TAG_ATTESTATION_ID_IMEI<sup>(deprecated)</sup>         | HuksTagType.HUKS_TAG_TYPE_BYTES \| 507   | 表示设备的IMEI号。从API version 9开始废弃。                  <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2499| HUKS_TAG_ATTESTATION_ID_MEID<sup>(deprecated)</sup>         | HuksTagType.HUKS_TAG_TYPE_BYTES \| 508   | 表示设备的MEID号。从API version 9开始废弃。                  <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2500| HUKS_TAG_ATTESTATION_ID_MANUFACTURER<sup>(deprecated)</sup> | HuksTagType.HUKS_TAG_TYPE_BYTES \| 509   | 表示设备的制造商。从API version 9开始废弃。                  <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2501| HUKS_TAG_ATTESTATION_ID_MODEL<sup>(deprecated)</sup>        | HuksTagType.HUKS_TAG_TYPE_BYTES \| 510   | 表示设备的型号。从API version 9开始废弃。                     <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2502| HUKS_TAG_ATTESTATION_ID_ALIAS                               | HuksTagType.HUKS_TAG_TYPE_BYTES \| 511   | 表示attestation时的密钥别名。        <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2503| HUKS_TAG_ATTESTATION_ID_SOCID<sup>(deprecated)</sup>        | HuksTagType.HUKS_TAG_TYPE_BYTES \| 512   | 表示设备的SOCID。从API version 9开始废弃。                     <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2504| HUKS_TAG_ATTESTATION_ID_UDID<sup>(deprecated)</sup>         | HuksTagType.HUKS_TAG_TYPE_BYTES \| 513   | 表示设备的UDID。从API version 9开始废弃。                   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2505| HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO                      | HuksTagType.HUKS_TAG_TYPE_BYTES \| 514   | 表示attestation时的安全凭据。        <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2506| HUKS_TAG_ATTESTATION_ID_VERSION_INFO                        | HuksTagType.HUKS_TAG_TYPE_BYTES \| 515   | 表示attestation时的版本号。         <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2507| HUKS_TAG_IS_KEY_ALIAS                                       | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1001   | 表示是否使用生成key时传入的别名的Tag。  <br> **系统能力:** SystemCapability.Security.Huks.Core |
2508| HUKS_TAG_KEY_STORAGE_FLAG                                   | HuksTagType.HUKS_TAG_TYPE_UINT \| 1002   | 表示密钥存储方式的Tag。          <br> **系统能力:** SystemCapability.Security.Huks.Core |
2509| HUKS_TAG_IS_ALLOWED_WRAP                                    | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1003   | 预留。            <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2510| HUKS_TAG_KEY_WRAP_TYPE                                      | HuksTagType.HUKS_TAG_TYPE_UINT \| 1004   | 预留。                <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2511| HUKS_TAG_KEY_AUTH_ID                                        | HuksTagType.HUKS_TAG_TYPE_BYTES \| 1005  | 预留。                   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2512| HUKS_TAG_KEY_ROLE                                           | HuksTagType.HUKS_TAG_TYPE_UINT \| 1006   | 预留。                      <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2513| HUKS_TAG_KEY_FLAG                                           | HuksTagType.HUKS_TAG_TYPE_UINT \| 1007   | 表示密钥标志的Tag。         <br> **系统能力:** SystemCapability.Security.Huks.Core |
2514| HUKS_TAG_IS_ASYNCHRONIZED                                   | HuksTagType.HUKS_TAG_TYPE_UINT \| 1008   | 预留。                           <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2515| HUKS_TAG_SECURE_KEY_ALIAS<sup>(deprecated)</sup>            | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1009   | 原为预留字段,从API version 9开始废弃。                          <br> **系统能力:** SystemCapability.Security.Huks.Core |
2516| HUKS_TAG_SECURE_KEY_UUID<sup>(deprecated)</sup>             | HuksTagType.HUKS_TAG_TYPE_BYTES \| 1010  | 原为预留字段,从API version 9开始废弃。                            <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2517| HUKS_TAG_KEY_DOMAIN                                         | HuksTagType.HUKS_TAG_TYPE_UINT \| 1011   | 预留。                      <br> **系统能力:** SystemCapability.Security.Huks.Core |
2518| HUKS_TAG_PROCESS_NAME<sup>(deprecated)</sup>                | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10001 | 表示进程名称的Tag。从API version 9开始废弃。          <br> **系统能力:** SystemCapability.Security.Huks.Core |
2519| HUKS_TAG_PACKAGE_NAME<sup>(deprecated)</sup>                | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10002 | 原为预留字段,从API version 9开始废弃。             <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2520| HUKS_TAG_ACCESS_TIME<sup>(deprecated)</sup>                 | HuksTagType.HUKS_TAG_TYPE_UINT \| 10003  | 原为预留字段,从API version 9开始废弃。                    <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2521| HUKS_TAG_USES_TIME<sup>(deprecated)</sup>                   | HuksTagType.HUKS_TAG_TYPE_UINT \| 10004  | 原为预留字段,从API version 9开始废弃。                 <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2522| HUKS_TAG_CRYPTO_CTX<sup>(deprecated)</sup>                  | HuksTagType.HUKS_TAG_TYPE_ULONG \| 10005 | 原为预留字段,从API version 9开始废弃。                <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2523| HUKS_TAG_KEY                                                | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10006 | 预留。                           <br> **系统能力:** SystemCapability.Security.Huks.Core |
2524| HUKS_TAG_KEY_VERSION<sup>(deprecated)</sup>                 | HuksTagType.HUKS_TAG_TYPE_UINT \| 10007  | 表示密钥版本的Tag。从API version 9开始废弃。                   <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2525| HUKS_TAG_PAYLOAD_LEN<sup>(deprecated)</sup>                 | HuksTagType.HUKS_TAG_TYPE_UINT \| 10008  | 原为预留字段,从API version 9开始废弃。                          <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2526| HUKS_TAG_AE_TAG                                             | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10009 | 用于传入GCM模式中的AEAD数据的字段。      <br> **系统能力:** SystemCapability.Security.Huks.Core |
2527| HUKS_TAG_IS_KEY_HANDLE<sup>(deprecated)</sup>               | HuksTagType.HUKS_TAG_TYPE_ULONG \| 10010 | 原为预留字段,从API version 9开始废弃。              <br> **系统能力:** SystemCapability.Security.Huks.Core |
2528| HUKS_TAG_OS_VERSION<sup>(deprecated)</sup>                  | HuksTagType.HUKS_TAG_TYPE_UINT \| 10101  | 表示操作系统版本的Tag。从API version 9开始废弃。      <br> **系统能力:** SystemCapability.Security.Huks.Core |
2529| HUKS_TAG_OS_PATCHLEVEL<sup>(deprecated)</sup>               | HuksTagType.HUKS_TAG_TYPE_UINT \| 10102  | 表示操作系统补丁级别的Tag。从API version 9开始废弃。    <br> **系统能力:** SystemCapability.Security.Huks.Core |
2530| HUKS_TAG_SYMMETRIC_KEY_DATA                                 | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20001 | 预留。        <br> **系统能力:** SystemCapability.Security.Huks.Core |
2531| HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA                         | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20002 | 预留。             <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2532| HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA                        | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20003 | 预留。         <br> **系统能力:** SystemCapability.Security.Huks.Extension |
2533
2534## huks.generateKey<sup>(deprecated)</sup>
2535
2536generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
2537
2538生成密钥,使用Callback回调异步返回结果。
2539
2540> **说明:**
2541>
2542> 从API version 9开始废弃,建议使用[huks.generateKeyItem<sup>9+</sup>](#huksgeneratekeyitem9)替代。
2543
2544**系统能力**:SystemCapability.Security.Huks.Extension
2545
2546**参数:**
2547
2548| 参数名   | 类型                                      | 必填 | 说明                                                         |
2549| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
2550| keyAlias | string                                    | 是   | 别名。                                                       |
2551| options  | [HuksOptions](#huksoptions)               | 是   | 用于存放生成key所需TAG。                                     |
2552| callback | AsyncCallback\<[HuksResult](#huksresultdeprecated)> | 是   | 回调函数。返回HUKS_SUCCESS时表示接口使用成功,其余结果请参考HuksResult进行错误码查询。 |
2553
2554**示例:**
2555
2556```ts
2557import huks from '@ohos.security.huks';
2558/* 以生成RSA512密钥为例 */
2559class HuksProperties {
2560    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
2561    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose |
2562    huks.HuksKeyDigest | huks.HuksKeyPadding = huks.HuksKeyAlg.HUKS_ALG_ECC
2563}
2564let keyAlias = 'keyAlias';
2565let properties: HuksProperties[] = [
2566    {
2567        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
2568        value: huks.HuksKeyAlg.HUKS_ALG_RSA
2569    },
2570    {
2571        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
2572        value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_512
2573    },
2574    {
2575        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
2576        value:
2577        huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT |
2578        huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
2579    },
2580    {
2581        tag: huks.HuksTag.HUKS_TAG_PADDING,
2582        value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
2583    },
2584    {
2585        tag: huks.HuksTag.HUKS_TAG_DIGEST,
2586        value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
2587    }
2588];
2589let options: huks.HuksOptions = {
2590    properties: properties
2591};
2592huks.generateKey(keyAlias, options, (err, data) => {
2593});
2594```
2595
2596## huks.generateKey<sup>(deprecated)</sup>
2597
2598generateKey(keyAlias: string, options: HuksOptions) : Promise\<HuksResult>
2599
2600生成密钥,使用Promise方式异步返回结果。
2601
2602> **说明:**
2603>
2604> 从API version 9开始废弃,建议使用[huks.generateKeyItem<sup>9+</sup>](#huksgeneratekeyitem9-1)替代。
2605
2606**系统能力**:SystemCapability.Security.Huks.Extension
2607
2608**参数:**
2609
2610| 参数名   | 类型                        | 必填 | 说明                     |
2611| -------- | --------------------------- | ---- | ------------------------ |
2612| keyAlias | string                      | 是   | 密钥别名。               |
2613| options  | [HuksOptions](#huksoptions) | 是   | 用于存放生成key所需TAG。 |
2614
2615**返回值**:
2616
2617| 类型                                | 说明                                               |
2618| ----------------------------------- | -------------------------------------------------- |
2619| Promise\<[HuksResult](#huksresultdeprecated)> | Promise对象。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
2620
2621**示例:**
2622
2623```ts
2624import huks from '@ohos.security.huks';
2625/* 以生成ECC256密钥为例 */
2626class HuksProperties {
2627    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
2628    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose |
2629    huks.HuksKeyDigest = huks.HuksKeyAlg.HUKS_ALG_ECC
2630}
2631
2632let keyAlias = 'keyAlias';
2633let properties: HuksProperties[] = [
2634    {
2635        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
2636        value: huks.HuksKeyAlg.HUKS_ALG_ECC
2637    },
2638    {
2639        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
2640        value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256
2641    },
2642    {
2643        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
2644        value:
2645        huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN |
2646        huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
2647    },
2648    {
2649        tag: huks.HuksTag.HUKS_TAG_DIGEST,
2650        value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
2651    }
2652];
2653let options: huks.HuksOptions = {
2654    properties: properties
2655};
2656let result = huks.generateKey(keyAlias, options);
2657```
2658
2659## huks.deleteKey<sup>(deprecated)</sup>
2660
2661deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
2662
2663删除密钥,使用Callback回调异步返回结果。
2664
2665> **说明:**
2666>
2667> 从API version 9开始废弃,建议使用[huks.deleteKeyItem<sup>9+</sup>](#huksdeletekeyitem9)替代。
2668
2669**系统能力**:SystemCapability.Security.Huks.Extension
2670
2671**参数:**
2672
2673| 参数名   | 类型                                      | 必填 | 说明                                                 |
2674| -------- | ----------------------------------------- | ---- |----------------------------------------------------|
2675| keyAlias | string                                    | 是   | 密钥别名,应为生成key时传入的别名。                                |
2676| options  | [HuksOptions](#huksoptions)               | 是   | 用于删除时指定密钥的属性TAG,比如删除的密钥范围(全量/单个),当删除单个时,TAG字段可传空。 |
2677| callback | AsyncCallback\<[HuksResult](#huksresultdeprecated)> | 是   | 回调函数。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。               |
2678
2679**示例:**
2680
2681```ts
2682import huks from '@ohos.security.huks';
2683/* 此处options选择emptyOptions传空 */
2684let keyAlias = 'keyAlias';
2685let emptyOptions: huks.HuksOptions = {
2686    properties: []
2687};
2688huks.deleteKey(keyAlias, emptyOptions, (err, data) => {
2689});
2690```
2691
2692## huks.deleteKey<sup>(deprecated)</sup>
2693
2694deleteKey(keyAlias: string, options: HuksOptions) : Promise\<HuksResult>
2695
2696删除密钥,使用Promise方式异步返回结果。
2697
2698> **说明:**
2699>
2700> 从API version 9开始废弃,建议使用[huks.deleteKeyItem<sup>9+</sup>](#huksdeletekeyitem9-1)替代。
2701
2702**系统能力**:SystemCapability.Security.Huks.Extension
2703
2704**参数:**
2705
2706| 参数名   | 类型        | 必填 | 说明                                                  |
2707| -------- | ----------- | ---- | ----------------------------------------------------- |
2708| keyAlias | string      | 是   | 密钥别名,应为生成key时传入的别名。 |
2709| options | [HuksOptions](#huksoptions) | 是   | 用于删除时指定密钥的属性TAG,比如删除的密钥范围(全量/单个),当删除单个时,TAG字段可传空。 |
2710
2711**返回值:**
2712
2713| 类型                                | 说明                                               |
2714| ----------------------------------- | -------------------------------------------------- |
2715| Promise\<[HuksResult](#huksresultdeprecated)> | Promise对象。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
2716
2717**示例:**
2718
2719```ts
2720import huks from '@ohos.security.huks';
2721/* 此处options选择emptyOptions传空 */
2722let keyAlias = 'keyAlias';
2723let emptyOptions: huks.HuksOptions = {
2724    properties: []
2725};
2726let result = huks.deleteKey(keyAlias, emptyOptions);
2727```
2728
2729## huks.importKey<sup>(deprecated)</sup>
2730
2731importKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
2732
2733导入明文密钥,使用Callback方式回调异步返回结果 。
2734
2735> **说明:**
2736>
2737> 从API version 9开始废弃,建议使用[huks.importKeyItem<sup>9+</sup>](#huksimportkeyitem9)替代。
2738
2739**系统能力**:SystemCapability.Security.Huks.Extension
2740
2741**参数:**
2742
2743| 参数名   | 类型                     | 必填 | 说明                                              |
2744| -------- | ------------------------ | ---- | ------------------------------------------------- |
2745| keyAlias | string                   | 是   | 密钥别名。 |
2746| options  | [HuksOptions](#huksoptions) | 是   | 用于导入时所需TAG和需要导入的密钥。 |
2747| callback | AsyncCallback\<[HuksResult](#huksresultdeprecated)> | 是   | 回调函数。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
2748
2749**示例:**
2750
2751```ts
2752import huks from '@ohos.security.huks';
2753/* 以导入AES256密钥为例 */
2754class HuksProperties {
2755    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
2756    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose |
2757    huks.HuksKeyPadding | huks.HuksCipherMode = huks.HuksKeyAlg.HUKS_ALG_ECC
2758}
2759let plainTextSize32 = makeRandomArr(32);
2760function makeRandomArr(size: number) {
2761    let arr = new Uint8Array(size);
2762    for (let i = 0; i < size; i++) {
2763        arr[i] = Math.floor(Math.random() * 10);
2764    }
2765    return arr;
2766};
2767let keyAlias = 'keyAlias';
2768let properties: HuksProperties[] = [
2769    {
2770        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
2771        value: huks.HuksKeyAlg.HUKS_ALG_AES
2772    },
2773    {
2774        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
2775        value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256
2776    },
2777    {
2778        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
2779        value:
2780        huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
2781    },
2782    {
2783        tag: huks.HuksTag.HUKS_TAG_PADDING,
2784        value: huks.HuksKeyPadding.HUKS_PADDING_PKCS7
2785    },
2786    {
2787        tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
2788        value: huks.HuksCipherMode.HUKS_MODE_ECB
2789    }
2790];
2791let options: huks.HuksOptions = {
2792    properties: properties,
2793    inData: plainTextSize32
2794};
2795huks.importKey(keyAlias, options, (err, data) => {
2796});
2797```
2798
2799## huks.importKey<sup>(deprecated)</sup>
2800
2801importKey(keyAlias: string, options: HuksOptions) : Promise\<HuksResult>
2802
2803导入明文密钥,使用Promise方式异步返回结果。
2804
2805> **说明:**
2806>
2807> 从API version 9开始废弃,建议使用[huks.importKeyItem<sup>9+</sup>](#huksimportkeyitem9-1)替代。
2808
2809**系统能力**:SystemCapability.Security.Huks.Extension
2810
2811**参数:**
2812
2813| 参数名   | 类型        | 必填 | 说明                                 |
2814| -------- | ----------- | ---- | ------------------------------------ |
2815| keyAlias | string      | 是   | 密钥别名。 |
2816| options  | [HuksOptions](#huksoptions) | 是   | 用于导入时所需TAG和需要导入的密钥。 |
2817
2818**返回值:**
2819
2820| 类型                                | 说明                                               |
2821| ----------------------------------- | -------------------------------------------------- |
2822| Promise\<[HuksResult](#huksresultdeprecated)> | Promise对象。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
2823
2824**示例:**
2825
2826```ts
2827import huks from '@ohos.security.huks';
2828/* 以导入AES128为例 */
2829class HuksProperties {
2830    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
2831    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose |
2832    huks.HuksKeyPadding | huks.HuksCipherMode = huks.HuksKeyAlg.HUKS_ALG_ECC
2833}
2834let plainTextSize32 = makeRandomArr(32);
2835function makeRandomArr(size: number) {
2836    let arr = new Uint8Array(size);
2837    for (let i = 0; i < size; i++) {
2838        arr[i] = Math.floor(Math.random() * 10);
2839    }
2840    return arr;
2841};
2842/*第一步:生成密钥*/
2843let keyAlias = 'keyAlias';
2844let properties: HuksProperties[] = [
2845    {
2846        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
2847        value: huks.HuksKeyAlg.HUKS_ALG_AES
2848    },
2849    {
2850        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
2851        value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128
2852    },
2853    {
2854        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
2855        value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
2856    },
2857    {
2858        tag: huks.HuksTag.HUKS_TAG_PADDING,
2859        value: huks.HuksKeyPadding.HUKS_PADDING_PKCS7
2860    },
2861    {
2862        tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
2863        value: huks.HuksCipherMode.HUKS_MODE_ECB
2864    }
2865];
2866let huksoptions: huks.HuksOptions = {
2867    properties: properties,
2868    inData: plainTextSize32
2869};
2870let result = huks.importKey(keyAlias, huksoptions);
2871```
2872
2873## huks.exportKey<sup>(deprecated)</sup>
2874
2875exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
2876
2877导出密钥,使用Callback方式回调异步返回的结果。
2878
2879> **说明:**
2880>
2881> 从API version 9开始废弃,建议使用[huks.exportKeyItem<sup>9+</sup>](#huksexportkeyitem9)替代。
2882
2883**系统能力**:SystemCapability.Security.Huks.Extension
2884
2885**参数:**
2886
2887| 参数名   | 类型                                      | 必填 | 说明                                                         |
2888| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
2889| keyAlias | string                                    | 是   | 密钥别名,应与所用密钥生成时使用的别名相同。                 |
2890| options  | [HuksOptions](#huksoptions)               | 是   | 空对象(此处传空即可)。                                     |
2891| callback | AsyncCallback\<[HuksResult](#huksresultdeprecated)> | 是   | 回调函数。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 |
2892
2893**示例:**
2894
2895```ts
2896import huks from '@ohos.security.huks';
2897/* 此处options选择emptyOptions来传空 */
2898let keyAlias = 'keyAlias';
2899let emptyOptions: huks.HuksOptions = {
2900    properties: []
2901};
2902huks.exportKey(keyAlias, emptyOptions, (err, data) => {
2903});
2904```
2905
2906## huks.exportKey<sup>(deprecated)</sup>
2907
2908exportKey(keyAlias: string, options: HuksOptions) : Promise\<HuksResult>
2909
2910导出密钥,使用Promise方式回调异步返回的结果。
2911
2912> **说明:**
2913>
2914> 从API version 9开始废弃,建议使用[huks.exportKeyItem<sup>9+</sup>](#huksexportkeyitem9-1)替代。
2915
2916**系统能力**:SystemCapability.Security.Huks.Extension
2917
2918**参数:**
2919
2920| 参数名   | 类型        | 必填 | 说明                                                         |
2921| -------- | ----------- | ---- | ------------------------------------------------------------ |
2922| keyAlias | string      | 是   | 密钥别名,应与所用密钥生成时使用的别名相同。 |
2923| options  | [HuksOptions](#huksoptions) | 是   | 空对象(此处传空即可)。 |
2924
2925**返回值:**
2926
2927| 类型                                | 说明                                                         |
2928| ----------------------------------- | ------------------------------------------------------------ |
2929| Promise\<[HuksResult](#huksresultdeprecated)> | Promise对象。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 |
2930
2931**示例:**
2932
2933```ts
2934import huks from '@ohos.security.huks';
2935/* 此处options选择emptyOptions来传空 */
2936let keyAlias = 'keyAlias';
2937let emptyOptions: huks.HuksOptions = {
2938    properties: []
2939};
2940let result = huks.exportKey(keyAlias, emptyOptions);
2941```
2942
2943## huks.getKeyProperties<sup>(deprecated)</sup>
2944
2945getKeyProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
2946
2947获取密钥属性,使用Callback回调异步返回结果。
2948
2949> **说明:**
2950>
2951> 从API version 9开始废弃,建议使用[huks.getKeyItemProperties<sup>9+</sup>](#huksgetkeyitemproperties9)替代。
2952
2953**系统能力**:SystemCapability.Security.Huks.Extension
2954
2955**参数:**
2956
2957| 参数名   | 类型                                      | 必填 | 说明                                                         |
2958| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
2959| keyAlias | string                                    | 是   | 密钥别名,应与所用密钥生成时使用的别名相同。                 |
2960| options  | [HuksOptions](#huksoptions)               | 是   | 空对象(此处传空即可)。                                     |
2961| callback | AsyncCallback\<[HuksResult](#huksresultdeprecated)> | 是   | 回调函数。errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
2962
2963**示例:**
2964
2965```ts
2966import huks from '@ohos.security.huks';
2967/* 此处options选择emptyOptions来传空 */
2968let keyAlias = 'keyAlias';
2969let emptyOptions: huks.HuksOptions = {
2970    properties: []
2971};
2972huks.getKeyProperties(keyAlias, emptyOptions, (err, data) => {
2973});
2974```
2975
2976## huks.getKeyProperties<sup>(deprecated)</sup>
2977
2978getKeyProperties(keyAlias: string, options: HuksOptions) : Promise\<HuksResult>
2979
2980获取密钥属性,使用Promise回调异步返回结果。
2981
2982> **说明:**
2983>
2984> 从API version 9开始废弃,建议使用[huks.getKeyItemProperties<sup>9+</sup>](#huksgetkeyitemproperties9-1)替代。
2985
2986**系统能力**:SystemCapability.Security.Huks.Extension
2987
2988**参数:**
2989
2990| 参数名   | 类型        | 必填 | 说明                                                         |
2991| -------- | ----------- | ---- | ------------------------------------------------------------ |
2992| keyAlias | string      | 是   | 密钥别名,应与所用密钥生成时使用的别名相同。 |
2993| options  | [HuksOptions](#huksoptions) | 是   | 空对象(此处传空即可)。 |
2994
2995**返回值:**
2996
2997| 类型               | 说明                                                         |
2998| ------------------ | ------------------------------------------------------------ |
2999| Promise\<[HuksResult](#huksoptions)> | Promise对象。errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。properties:返回值为生成密钥时所需参数。 |
3000
3001**示例:**
3002
3003```ts
3004import huks from '@ohos.security.huks';
3005/* 此处options选择emptyOptions来传空 */
3006let keyAlias = 'keyAlias';
3007let emptyOptions: huks.HuksOptions = {
3008    properties: []
3009};
3010let result = huks.getKeyProperties(keyAlias, emptyOptions);
3011```
3012
3013## huks.isKeyExist<sup>(deprecated)</sup>
3014
3015isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<boolean>) : void
3016
3017判断密钥是否存在,使用Callback回调异步返回结果 。
3018
3019> **说明:**
3020>
3021> 从API version 9开始废弃,建议使用[huks.isKeyItemExist<sup>9+</sup>](#huksiskeyitemexist9)替代。
3022
3023**系统能力**:SystemCapability.Security.Huks.Extension
3024
3025**参数:**
3026
3027| 参数名   | 类型                   | 必填 | 说明                                  |
3028| -------- | ---------------------- | ---- | ------------------------------------- |
3029| keyAlias | string                 | 是   | 所需查找的密钥的别名。 |
3030| options  | [HuksOptions](#huksoptions) | 是   | 用于查询时指定密钥的属性TAG,比如查询的密钥范围(全量/单个),当查询单个时,TAG字段可传空。 |
3031| callback | AsyncCallback\<boolean> | 是   | 回调函数。false代表密钥不存在,true代表密钥存在。 |
3032
3033**示例:**
3034
3035```ts
3036import huks from '@ohos.security.huks';
3037/* 此处options选择emptyOptions来传空 */
3038let keyAlias = 'keyAlias';
3039let emptyOptions: huks.HuksOptions = {
3040    properties: []
3041};
3042huks.isKeyExist(keyAlias, emptyOptions, (err, data) => {
3043});
3044```
3045
3046## huks.isKeyExist<sup>(deprecated)</sup>
3047
3048isKeyExist(keyAlias: string, options: HuksOptions) : Promise\<boolean>
3049
3050判断密钥是否存在,使用Promise回调异步返回结果 。
3051
3052> **说明:**
3053>
3054> 从API version 9开始废弃,建议使用[huks.isKeyItemExist<sup>9+</sup>](#huksiskeyitemexist9-1)替代。
3055
3056**系统能力**:SystemCapability.Security.Huks.Extension
3057
3058**参数:**
3059
3060| 参数名   | 类型        | 必填 | 说明                             |
3061| -------- | ----------- | ---- | -------------------------------- |
3062| keyAlias | string      | 是   | 所需查找的密钥的别名。 |
3063| options  | [HuksOptions](#huksoptions) | 是   | 用于查询时指定密钥的属性TAG,比如查询的密钥范围(全量/单个),当查询单个时,TAG字段可传空。 |
3064
3065**返回值:**
3066
3067| 类型              | 说明                                    |
3068| ----------------- | --------------------------------------- |
3069| Promise\<boolean> | Promise对象。false代表密钥不存在,true代表密钥存在。 |
3070
3071**示例:**
3072
3073```ts
3074import huks from '@ohos.security.huks';
3075/* 此处options选择emptyOptions来传空 */
3076let keyAlias = 'keyAlias';
3077let emptyOptions: huks.HuksOptions = {
3078    properties: []
3079};
3080let result = huks.isKeyExist(keyAlias, emptyOptions);
3081```
3082
3083## huks.init<sup>(deprecated)</sup>
3084
3085init(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksHandle>) : void
3086
3087init操作密钥接口,使用Callback回调异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。
3088
3089> **说明:**
3090>
3091> 从API version 9开始废弃,建议使用[huks.initSession<sup>9+</sup>](#huksinitsession9-1)替代。
3092
3093**系统能力**:SystemCapability.Security.Huks.Extension
3094
3095**参数:**
3096
3097| 参数名   | 类型                   | 必填 | 说明                                  |
3098| -------- | ---------------------- | ---- | ------------------------------------- |
3099| keyAlias | string                 | 是   | Init操作密钥的别名。 |
3100| options  | [HuksOptions](#huksoptions) | 是   | Init操作的参数集合。 |
3101| callback | AsyncCallback\<[HuksHandle](#hukshandledeprecated)> | 是   | 回调函数。将Init操作操作返回的handle添加到密钥管理系统的回调。 |
3102
3103## huks.init<sup>(deprecated)</sup>
3104
3105init(keyAlias: string, options: HuksOptions) : Promise\<HuksHandle>
3106
3107init操作密钥接口,使用Promise方式异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。
3108
3109> **说明:**
3110>
3111> 从API version 9开始废弃,建议使用[huks.initSession<sup>9+</sup>](#huksinitsession9-1)替代。
3112
3113**系统能力**:SystemCapability.Security.Huks.Extension
3114
3115**参数:**
3116
3117| 参数名   | 类型                   | 必填 | 说明                                  |
3118| -------- | ---------------------- | ---- | ------------------------------------- |
3119| keyAlias | string                 | 是   | Init操作密钥的别名。 |
3120| options  | [HuksOptions](#huksoptions) | 是   | Init参数集合。 |
3121
3122**返回值**:
3123
3124| 类型                                | 说明                                               |
3125| ----------------------------------- | -------------------------------------------------- |
3126| Promise\<[HuksHandle](#hukshandledeprecated)> | Promise对象。将Init操作返回的handle添加到密钥管理系统的回调。 |
3127
3128## huks.update<sup>(deprecated)</sup>
3129
3130update(handle: number, token?: Uint8Array, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
3131
3132update操作密钥接口,使用Callback回调异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。
3133
3134> **说明:**
3135>
3136> 从API version 9开始废弃,建议使用[huks.updateSession<sup>9+</sup>](#huksupdatesession9-1)替代。
3137
3138**系统能力**: SystemCapability.Security.Huks.Extension
3139
3140**参数:**
3141
3142| 参数名   | 类型                                      | 必填 | 说明                                         |
3143| -------- | ----------------------------------------- | ---- | -------------------------------------------- |
3144| handle   | number                                    | 是   | Update操作的handle。                         |
3145| token    | Uint8Array                                | 否   | Update操作的token。                          |
3146| options  | [HuksOptions](#huksoptions)               | 是   | Update操作的参数集合。                       |
3147| callback | AsyncCallback\<[HuksResult](#huksresultdeprecated)> | 是   | 回调函数。将Update操作的结果添加到密钥管理系统的回调。 |
3148
3149## huks.update<sup>(deprecated)</sup>
3150
3151update(handle: number, token?: Uint8Array, options: HuksOptions) : Promise\<HuksResult>;
3152
3153update操作密钥接口,使用Promise方式异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。
3154
3155> **说明:**
3156>
3157> 从API version 9开始废弃,建议使用[huks.updateSession<sup>9+</sup>](#huksupdatesession9-2)替代。
3158
3159**系统能力**: SystemCapability.Security.Huks.Extension
3160
3161**参数:**
3162
3163| 参数名  | 类型                                | 必填 | 说明                                         |
3164| ------- | ----------------------------------- | ---- | -------------------------------------------- |
3165| handle  | number                              | 是   | Update操作的handle。                         |
3166| token   | Uint8Array                          | 否   | Update操作的token。                          |
3167| options | [HuksOptions](#huksoptions)         | 是   | Update操作的参数集合。                       |
3168
3169**返回值**:
3170
3171| 类型                                | 说明                                               |
3172| ----------------------------------- | -------------------------------------------------- |
3173| Promise\<[HuksResult](#huksresultdeprecated)> | Promise对象。将Update操作的结果添加到密钥管理系统的回调。 |
3174
3175## huks.finish<sup>(deprecated)</sup>
3176
3177finish(handle: number, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
3178
3179finish操作密钥接口,使用Callback回调异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。
3180
3181> **说明:**
3182>
3183> 从API version 9开始废弃,建议使用[huks.finishSession<sup>9+</sup>](#huksfinishsession9)替代。
3184
3185**系统能力**:SystemCapability.Security.Huks.Extension
3186
3187**参数:**
3188
3189| 参数名   | 类型                   | 必填 | 说明                                  |
3190| -------- | ---------------------- | ---- | ------------------------------------- |
3191| handle | number           | 是   | Finish操作的handle。 |
3192| options  | [HuksOptions](#huksoptions) | 是   | Finish的参数集合。 |
3193| callback | AsyncCallback\<[HuksResult](#huksresultdeprecated)> | 是 | 回调函数。将Finish操作的结果添加到密钥管理系统的回调。 |
3194
3195## huks.finish<sup>(deprecated)</sup>
3196
3197finish(handle: number, options: HuksOptions) : Promise\<HuksResult>
3198
3199finish操作密钥接口,使用Promise方式异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。
3200
3201> **说明:**
3202>
3203> 从API version 9开始废弃,建议使用[huks.finishSession<sup>9+</sup>](#huksfinishsession9-1)替代。
3204
3205**系统能力**:SystemCapability.Security.Huks.Extension
3206
3207**参数:**
3208
3209| 参数名   | 类型                   | 必填 | 说明                                  |
3210| -------- | ---------------------- | ---- | ------------------------------------- |
3211| handle | number           | 是   | Finish操作的handle。 |
3212| options  | [HuksOptions](#huksoptions) | 是   | Finish操作的参数集合。 |
3213
3214**返回值**:
3215
3216| 类型                                | 说明                                               |
3217| ----------------------------------- | -------------------------------------------------- |
3218| Promise\<[HuksResult](#huksresultdeprecated)> | Promise对象,用于获取异步返回结果。 |
3219
3220## huks.abort<sup>(deprecated)</sup>
3221
3222abort(handle: number, options: HuksOptions, callback: AsyncCallback\<HuksResult>) : void
3223
3224abort操作密钥接口,使用Callback回调异步返回结果。
3225
3226> **说明:**
3227>
3228> 从API version 9开始废弃,建议使用[huks.abortSession<sup>9+</sup>](#huksabortsession9)替代。
3229
3230**系统能力**:SystemCapability.Security.Huks.Extension
3231
3232**参数:**
3233
3234| 参数名   | 类型                   | 必填 | 说明                                  |
3235| -------- | ---------------------- | ---- | ------------------------------------- |
3236| handle | number           | 是   | Abort操作的handle。 |
3237| options  | [HuksOptions](#huksoptions) | 是   | Abort操作的参数集合。 |
3238| callback | AsyncCallback\<[HuksResult](#huksresultdeprecated)> | 是 | 回调函数。将Abort操作的结果添加到密钥管理系统的回调。 |
3239
3240**示例:**
3241
3242```ts
3243import huks from '@ohos.security.huks';
3244import { BusinessError } from '@ohos.base';
3245/* huks.init, huks.update, huks.finish为三段式接口,需要一起使用,当huks.inithuks.update
3246 * 以及huks.finish操作中的任一阶段发生错误时,都需要调用huks.abort来终止密钥的使用。
3247 *
3248 * 以下以RSA1024密钥的callback操作使用为例
3249 */
3250class HuksProperties {
3251    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
3252    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose |
3253    huks.HuksKeyDigest | huks.HuksKeyPadding = huks.HuksKeyAlg.HUKS_ALG_ECC
3254}
3255let keyalias = "HuksDemoRSA";
3256let properties: HuksProperties[] = [];
3257let options: huks.HuksOptions = {
3258    properties: properties,
3259    inData: new Uint8Array(0)
3260};
3261let handle: number = 0;
3262let resultMessage = "";
3263async function generateKey() {
3264    properties[0] = {
3265        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
3266        value: huks.HuksKeyAlg.HUKS_ALG_RSA
3267    };
3268    properties[1] = {
3269        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
3270        value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024
3271    };
3272    properties[2] = {
3273        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
3274        value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
3275    };
3276    properties[3] = {
3277        tag: huks.HuksTag.HUKS_TAG_PADDING,
3278        value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
3279    };
3280    properties[4] = {
3281        tag: huks.HuksTag.HUKS_TAG_DIGEST,
3282        value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
3283    };
3284    huks.generateKey(keyalias, options);
3285}
3286function stringToUint8Array(str: string) {
3287    let arr: number[] = [];
3288    for (let i = 0, j = str.length; i < j; ++i) {
3289        arr.push(str.charCodeAt(i));
3290    }
3291    let tmpUint8Array = new Uint8Array(arr);
3292    return tmpUint8Array;
3293}
3294async function huksInit() {
3295    await huks.init(keyalias, options).then((data) => {
3296        console.log(`test init data: ${JSON.stringify(data)}`);
3297        handle = data.handle;
3298    }).catch((err: BusinessError) => {
3299        console.log("test init err information: " + JSON.stringify(err))
3300    })
3301}
3302async function huksUpdate() {
3303    options.inData = stringToUint8Array("huksHmacTest");
3304    await huks.update(handle, options.inData, options).then((data) => {
3305        if (data.errorCode === 0) {
3306            resultMessage += "update success!";
3307        } else {
3308            resultMessage += "update fail!";
3309        }
3310    });
3311    console.log(resultMessage);
3312}
3313function huksFinish() {
3314    options.inData = stringToUint8Array("HuksDemoHMAC");
3315    huks.finish(handle, options).then((data) => {
3316        if (data.errorCode === 0) {
3317            resultMessage = "finish success!";
3318        } else {
3319            resultMessage = "finish fail errorCode: " + data.errorCode;
3320        }
3321    }).catch((err: BusinessError) => {
3322        resultMessage = "finish fail, catch errorMessage:" + JSON.stringify(err)
3323    });
3324    console.log(resultMessage);
3325}
3326async function huksAbort() {
3327    new Promise<huks.HuksResult>((resolve, reject) => {
3328        huks.abort(handle, options, (err, data) => {
3329            console.log(`Huks_Demo hmac huksAbort1 data ${JSON.stringify(data)}`);
3330            console.log(`Huks_Demo hmac huksAbort1 err ${JSON.stringify(err)}`);
3331        });
3332    });
3333}
3334```
3335
3336## huks.abort<sup>(deprecated)</sup>
3337
3338abort(handle: number, options: HuksOptions) : Promise\<HuksResult>;
3339
3340abort操作密钥接口,使用Promise方式异步返回结果。
3341
3342> **说明:**
3343>
3344> 从API version 9开始废弃,建议使用[huks.abortSession<sup>9+</sup>](#huksabortsession9-1)替代。
3345
3346**系统能力**:SystemCapability.Security.Huks.Extension
3347
3348**参数:**
3349
3350| 参数名   | 类型                   | 必填 | 说明                                  |
3351| -------- | ---------------------- | ---- | ------------------------------------- |
3352| handle | number           | 是   | Abort操作的handle。 |
3353| options  | [HuksOptions](#huksoptions) | 是   | Abort操作的参数集合。 |
3354
3355**返回值**:
3356
3357| 类型                                | 说明                                               |
3358| ----------------------------------- | -------------------------------------------------- |
3359| Promise\<[HuksResult](#huksresultdeprecated)> | Promise对象。将Abort操作的结果添加到密钥管理系统的回调。 |
3360
3361**示例:**
3362
3363```ts
3364import huks from '@ohos.security.huks';
3365import { BusinessError } from '@ohos.base';
3366/* huks.init, huks.update, huks.finish为三段式接口,需要一起使用,当huks.inithuks.update
3367 * 以及huks.finish操作中的任一阶段发生错误时,都需要调用huks.abort来终止密钥的使用。
3368 *
3369 * 以下以RSA1024密钥的promise操作使用为例
3370 */
3371class HuksProperties {
3372    tag: huks.HuksTag = huks.HuksTag.HUKS_TAG_ALGORITHM
3373    value: huks.HuksKeyAlg | huks.HuksKeySize | huks.HuksKeyPurpose |
3374    huks.HuksKeyPadding | huks.HuksKeyDigest = huks.HuksKeyAlg.HUKS_ALG_ECC
3375}
3376let keyalias = "HuksDemoRSA";
3377let properties: HuksProperties[] = [];
3378let options: huks.HuksOptions = {
3379    properties: properties,
3380    inData: new Uint8Array(0)
3381};
3382let handle: number = 0;
3383let resultMessage = "";
3384
3385function stringToUint8Array(str: string) {
3386    let arr: number[] = [];
3387    for (let i = 0, j = str.length; i < j; ++i) {
3388        arr.push(str.charCodeAt(i));
3389    }
3390    let tmpUint8Array = new Uint8Array(arr);
3391    return tmpUint8Array;
3392}
3393
3394async function generateKey() {
3395    properties[0] = {
3396        tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
3397        value: huks.HuksKeyAlg.HUKS_ALG_RSA
3398    };
3399    properties[1] = {
3400        tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
3401        value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024
3402    };
3403    properties[2] = {
3404        tag: huks.HuksTag.HUKS_TAG_PURPOSE,
3405        value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
3406    };
3407    properties[3] = {
3408        tag: huks.HuksTag.HUKS_TAG_PADDING,
3409        value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
3410    };
3411    properties[4] = {
3412        tag: huks.HuksTag.HUKS_TAG_DIGEST,
3413        value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
3414    };
3415    huks.generateKey(keyalias, options, (err, data) => {
3416    });
3417}
3418
3419async function huksInit() {
3420    return new Promise<huks.HuksHandle>((resolve, reject) => {
3421        huks.init(keyalias, options, async (err, data) => {
3422            if (data.errorCode === 0) {
3423                resultMessage = "init success!"
3424                handle = data.handle;
3425            } else {
3426                resultMessage = "init fail errorCode: " + data.errorCode
3427            }
3428        });
3429    });
3430}
3431
3432async function huksUpdate() {
3433    options.inData = stringToUint8Array("huksHmacTest");
3434    new Promise<huks.HuksResult>((resolve, reject) => {
3435        huks.update(handle, options.inData, options, (err, data) => {
3436            if (data.errorCode === 0) {
3437                resultMessage += "update success!";
3438            } else {
3439                resultMessage += "update fail!";
3440            }
3441        });
3442    });
3443    console.log(resultMessage);
3444
3445}
3446
3447async function huksFinish() {
3448    options.inData = stringToUint8Array("0");
3449    new Promise<huks.HuksResult>((resolve, reject) => {
3450        huks.finish(handle, options, (err, data) => {
3451            if (data.errorCode === 0) {
3452                resultMessage = "finish success!";
3453            } else {
3454                resultMessage = "finish fail errorCode: " + data.errorCode;
3455            }
3456        });
3457    });
3458}
3459
3460function huksAbort() {
3461    huks.abort(handle, options).then((data) => {
3462        if (data.errorCode === 0) {
3463            resultMessage = "abort success!";
3464        } else {
3465            resultMessage = "abort fail errorCode: " + data.errorCode;
3466        }
3467    }).catch((err: BusinessError) => {
3468        resultMessage = "abort fail, catch errorMessage:" + JSON.stringify(err)
3469    });
3470    console.log(resultMessage);
3471}
3472```
3473
3474## HuksHandle<sup>(deprecated)</sup>
3475
3476huks Handle结构体。
3477
3478**系统能力**:SystemCapability.Security.Huks.Extension
3479> **说明:**
3480>
3481> 从API version 9开始废弃,建议使用[HuksSessionHandle<sup>9+</sup>](#hukssessionhandle9)替代。
3482
3483| 名称     | 类型             | 必填 | 说明     |
3484| ---------- | ---------------- | ---- | -------- |
3485| errorCode  | number           | 是   | 表示错误码。 |
3486| handle    | number       | 是 | 表示handle值。 |
3487| token | Uint8Array | 否 | 表示[init](#huksinitdeprecated)操作之后获取到的challenge信息。 |
3488
3489## HuksResult<sup>(deprecated)</sup>
3490
3491调用接口返回的result。
3492
3493**系统能力**:SystemCapability.Security.Huks.Extension
3494
3495> **说明:**
3496>
3497> - 从API version 9开始废弃,建议使用[HuksReturnResult<sup>9+</sup>](#huksreturnresult9)替代。
3498> - errorCode的具体信息,请参考[错误码文档](../errorcodes/errorcode-huks.md)。
3499
3500| 名称     | 类型                            | 必填 | 说明             |
3501| ---------- | ------------------------------- | ---- | ---------------- |
3502| errorCode  | number                          | 是   | 表示错误码。     |
3503| outData    | Uint8Array                      | 否   | 表示输出数据。   |
3504| properties | Array\<[HuksParam](#huksparam)> | 否   | 表示属性信息。   |
3505| certChains | Array\<string>                  | 否   | 表示证书链数据。 |
3506
3507## HuksErrorCode<sup>(deprecated)</sup>
3508
3509表示错误码的枚举。
3510
3511**系统能力**:SystemCapability.Security.Huks.Extension
3512> **说明:**
3513>
3514> 从API version 9开始废弃,建议使用[HuksExceptionErrCode<sup>9+</sup>](#huksexceptionerrcode9)替代。
3515
3516| 名称                       | 值    | 说明 |
3517| -------------------------- | ----- | ---- |
3518| HUKS_SUCCESS | 0     |表示成功。|
3519| HUKS_FAILURE | -1    |表示失败。|
3520| HUKS_ERROR_BAD_STATE | -2    |表示错误的状态。|
3521| HUKS_ERROR_INVALID_ARGUMENT | -3    |表示无效的数据。|
3522| HUKS_ERROR_NOT_SUPPORTED | -4    |表示不支持。|
3523| HUKS_ERROR_NO_PERMISSION | -5    |表示没有许可。|
3524| HUKS_ERROR_INSUFFICIENT_DATA | -6    |表示数据不足。|
3525| HUKS_ERROR_BUFFER_TOO_SMALL | -7    |表示缓冲区太小。|
3526| HUKS_ERROR_INSUFFICIENT_MEMORY | -8    |表示内存不足。|
3527| HUKS_ERROR_COMMUNICATION_FAILURE | -9    |表示通讯失败。|
3528| HUKS_ERROR_STORAGE_FAILURE | -10   |表示存储故障。|
3529| HUKS_ERROR_HARDWARE_FAILURE | -11   |表示硬件故障。|
3530| HUKS_ERROR_ALREADY_EXISTS | -12   |表示已经存在。|
3531| HUKS_ERROR_NOT_EXIST | -13   |表示不存在。|
3532| HUKS_ERROR_NULL_POINTER | -14   |表示空指针。|
3533| HUKS_ERROR_FILE_SIZE_FAIL | -15   |表示文件大小失败。|
3534| HUKS_ERROR_READ_FILE_FAIL | -16   |表示读取文件失败。|
3535| HUKS_ERROR_INVALID_PUBLIC_KEY | -17   |表示无效的公钥。|
3536| HUKS_ERROR_INVALID_PRIVATE_KEY | -18   |表示无效的私钥。|
3537| HUKS_ERROR_INVALID_KEY_INFO | -19   |表示无效的密钥信息。|
3538| HUKS_ERROR_HASH_NOT_EQUAL | -20   |表示哈希不相等。|
3539| HUKS_ERROR_MALLOC_FAIL | -21   |表示MALLOC 失败。|
3540| HUKS_ERROR_WRITE_FILE_FAIL | -22   |表示写文件失败。|
3541| HUKS_ERROR_REMOVE_FILE_FAIL | -23   |表示删除文件失败。|
3542| HUKS_ERROR_OPEN_FILE_FAIL | -24   |表示打开文件失败。|
3543| HUKS_ERROR_CLOSE_FILE_FAIL | -25   |表示关闭文件失败。|
3544| HUKS_ERROR_MAKE_DIR_FAIL | -26   |表示创建目录失败。|
3545| HUKS_ERROR_INVALID_KEY_FILE | -27   |表示无效的密钥文件。|
3546| HUKS_ERROR_IPC_MSG_FAIL | -28   |表示IPC 信息失败。|
3547| HUKS_ERROR_REQUEST_OVERFLOWS | -29   |表示请求溢出。|
3548| HUKS_ERROR_PARAM_NOT_EXIST | -30   |表示参数不存在。|
3549| HUKS_ERROR_CRYPTO_ENGINE_ERROR | -31   |表示CRYPTO ENGINE错误。|
3550| HUKS_ERROR_COMMUNICATION_TIMEOUT | -32   |表示通讯超时。|
3551| HUKS_ERROR_IPC_INIT_FAIL | -33   |表示IPC 初始化失败。|
3552| HUKS_ERROR_IPC_DLOPEN_FAIL | -34   |表示IPC DLOPEN 失败。|
3553| HUKS_ERROR_EFUSE_READ_FAIL | -35   |表示EFUSE 读取失败。|
3554| HUKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST | -36   |表示存在新的根密钥材料。|
3555| HUKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL | -37   |表示更新根密钥材料失败。|
3556| HUKS_ERROR_VERIFICATION_FAILED | -38   |表示验证证书链失败。|
3557| HUKS_ERROR_CHECK_GET_ALG_FAIL | -100  |表示检查获取 ALG 失败。|
3558| HUKS_ERROR_CHECK_GET_KEY_SIZE_FAIL | -101  |表示检查获取密钥大小失败。|
3559| HUKS_ERROR_CHECK_GET_PADDING_FAIL | -102  |表示检查获取填充失败。|
3560| HUKS_ERROR_CHECK_GET_PURPOSE_FAIL | -103  |表示检查获取目的失败。|
3561| HUKS_ERROR_CHECK_GET_DIGEST_FAIL | -104  |表示检查获取摘要失败。|
3562| HUKS_ERROR_CHECK_GET_MODE_FAIL | -105  |表示检查获取模式失败。|
3563| HUKS_ERROR_CHECK_GET_NONCE_FAIL | -106  |表示检查获取随机数失败。|
3564| HUKS_ERROR_CHECK_GET_AAD_FAIL | -107  |表示检查获取 AAD 失败。|
3565| HUKS_ERROR_CHECK_GET_IV_FAIL | -108  |表示检查 GET IV 失败。|
3566| HUKS_ERROR_CHECK_GET_AE_TAG_FAIL | -109  |表示检查获取 AE 标记失败。|
3567| HUKS_ERROR_CHECK_GET_SALT_FAIL | -110  |表示检查获取SALT失败。|
3568| HUKS_ERROR_CHECK_GET_ITERATION_FAIL | -111  |表示检查获取迭代失败。|
3569| HUKS_ERROR_INVALID_ALGORITHM | -112  |表示无效的算法。|
3570| HUKS_ERROR_INVALID_KEY_SIZE | -113  |表示无效的密钥大小。|
3571| HUKS_ERROR_INVALID_PADDING | -114  |表示无效的填充。|
3572| HUKS_ERROR_INVALID_PURPOSE | -115  |表示无效的目的。|
3573| HUKS_ERROR_INVALID_MODE | -116  |表示无效模式。|
3574| HUKS_ERROR_INVALID_DIGEST | -117  |表示无效的摘要。|
3575| HUKS_ERROR_INVALID_SIGNATURE_SIZE | -118  |表示签名大小无效。|
3576| HUKS_ERROR_INVALID_IV | -119  |表示无效的 IV。|
3577| HUKS_ERROR_INVALID_AAD | -120  |表示无效的 AAD。|
3578| HUKS_ERROR_INVALID_NONCE | -121  |表示无效的随机数。|
3579| HUKS_ERROR_INVALID_AE_TAG | -122  |表示无效的 AE 标签。|
3580| HUKS_ERROR_INVALID_SALT | -123  |表示无效SALT。|
3581| HUKS_ERROR_INVALID_ITERATION | -124  |表示无效的迭代。|
3582| HUKS_ERROR_INVALID_OPERATION | -125  |表示无效操作。|
3583| HUKS_ERROR_INTERNAL_ERROR | -999  |表示内部错误。|
3584| HUKS_ERROR_UNKNOWN_ERROR | -1000 |表示未知错误。|