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