• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Deleting a Key (ArkTS)
2
3<!--Kit: Universal Keystore Kit-->
4<!--Subsystem: Security-->
5<!--Owner: @wutiantian-gitee-->
6<!--Designer: @HighLowWorld-->
7<!--Tester: @wxy1234564846-->
8<!--Adviser: @zengyawen-->
9
10To ensure data security, delete the key that is no longer required.
11
12## How to Develop
13
14For example, delete a 256-bit HKDF key.
15
161. Specify the key alias. For details about the naming rules, see [Key Generation Overview and Algorithm Specifications](huks-key-generation-overview.md).
17
182. Initialize the key property set to specify [the property tags of keys](../../reference/apis-universal-keystore-kit/js-apis-huks.md#hukstag). When a single key is to be deleted, **TAG** can be empty.
19
203. Use [deleteKeyItem](../../reference/apis-universal-keystore-kit/js-apis-huks.md#huksdeletekeyitem9) to delete the key.
21
22```ts
23/*
24 * Delete a 256-bit HKDF key. This example uses promise-based APIs.
25 */
26import { huks } from '@kit.UniversalKeystoreKit';
27/* 1. Set the key alias. */
28let keyAlias = 'test_Key';
29/* 2. Initialize the key property set. */
30let generateProperties: huks.HuksParam[] = [
31  {
32    tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
33    value: huks.HuksKeyAlg.HUKS_ALG_DH
34  },
35  {
36    tag: huks.HuksTag.HUKS_TAG_PURPOSE,
37    value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_AGREE
38  },
39  {
40    tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
41    value: huks.HuksKeySize.HUKS_DH_KEY_SIZE_2048
42  }
43];
44let generateHuksOptions: huks.HuksOptions = {
45  properties: generateProperties,
46  inData: new Uint8Array([])
47}
48/* 3. Generate a key. */
49function generateKeyItem(keyAlias: string, huksOptions: huks.HuksOptions) {
50  return new Promise<void>((resolve, reject) => {
51    try {
52      huks.generateKeyItem(keyAlias, huksOptions, (error, data) => {
53        if (error) {
54          reject(error);
55        } else {
56          resolve(data);
57        }
58      });
59    } catch (error) {
60      throw (error as Error);
61    }
62  });
63}
64async function publicGenKeyFunc(keyAlias: string, huksOptions: huks.HuksOptions): Promise<string> {
65  console.info(`enter promise generateKeyItem`);
66  try {
67    await generateKeyItem(keyAlias, huksOptions)
68      .then((data) => {
69        console.info(`promise: generateKeyItem success, data = ${JSON.stringify(data)}`);
70      })
71      .catch((error: Error) => {
72        console.error(`promise: generateKeyItem failed, ${JSON.stringify(error)}`);
73      });
74    return 'Success';
75  } catch (error) {
76    console.error(`promise: generateKeyItem input arg invalid, ${JSON.stringify(error)}`);
77    return 'Failed';
78  }
79}
80async function testGenKey(): Promise<string> {
81  let ret = await publicGenKeyFunc(keyAlias, generateHuksOptions);
82  return ret;
83}
84let deleteHuksOptions: huks.HuksOptions = {
85  properties: []
86}
87class ThrowObject {
88  public isThrow = false;
89}
90/*4. Delete a key.*/
91function deleteKeyItem(keyAlias: string, huksOptions: huks.HuksOptions, throwObject: ThrowObject) {
92  return new Promise<void>((resolve, reject) => {
93    try {
94      huks.deleteKeyItem(keyAlias, huksOptions, (error, data) => {
95        if (error) {
96          reject(error);
97        } else {
98          resolve(data);
99        }
100      });
101    } catch (error) {
102      throwObject.isThrow = true;
103      throw (error as Error);
104    }
105  });
106}
107async function publicDeleteKeyFunc(keyAlias: string, huksOptions: huks.HuksOptions): Promise<string> {
108  console.info(`enter promise deleteKeyItem`);
109  let throwObject: ThrowObject = { isThrow: false };
110  try {
111    await testGenKey();
112    await deleteKeyItem(keyAlias, huksOptions, throwObject)
113      .then((data) => {
114        console.info(`promise: deleteKeyItem key success, data = ${JSON.stringify(data)}`);
115      })
116      .catch((error: Error) => {
117        if (throwObject.isThrow) {
118          throw (error as Error);
119        } else {
120          console.error(`promise: deleteKeyItem failed, ${JSON.stringify(error)}`);
121        }
122      });
123    return 'Success';
124  } catch (error) {
125    console.error(`promise: deleteKeyItem input arg invalid, ${JSON.stringify(error)}`);
126    return 'Failed';
127  }
128}
129async function testDelete(): Promise<string> {
130  let ret = await publicDeleteKeyFunc(keyAlias, deleteHuksOptions);
131  return ret;
132}
133```
134