• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# HUKS开发指导
2
3## 场景介绍
4
5 HUKS(OpenHarmony Universal KeyStore,OpenHarmony通用密钥库系统)向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。
6
7
8## 接口说明
9
10| 接口名                                                       | 描述             |
11| ------------------------------------------------------------ | ---------------- |
12| generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void| 生成密钥         |
13| generateKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>| 生成密钥         |
14| exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void| 导出公钥         |
15| exportKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>| 导出公钥         |
16| isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback<boolean>) : void | 查询密钥是否存在 |
17| isKeyExist(keyAlias: string, options: HuksOptions) : Promise<boolean> | 查询密钥是否存在 |
18| deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void| 删除密钥         |
19| deleteKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>| 删除密钥         |
20
21## 开发步骤
22
231. 引入HUKS模块
24
25   ```js
26   import huks from '@ohos.security.huks'
27   ```
28
292. 使用generateKey接口生成密钥。
30
31   keyAlias为生成的密钥别名,options为生成密钥时使用到的参数,需根据具体需要到的算法设定options中的参数。
32
33   generateKey接口会返回密钥的生成是否成功。
34
35   ```js
36   var alias = 'testAlias';
37   var properties = new Array();
38   properties[0] = {
39     tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
40     value: huks.HuksKeyAlg.HUKS_ALG_ECC
41   };
42   properties[1] = {
43     tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
44     value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_224
45   };
46   properties[2] = {
47     tag: huks.HuksTag.HUKS_TAG_PURPOSE,
48     value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_AGREE
49   };
50   properties[3] = {
51     tag: huks.HuksTag.HUKS_TAG_DIGEST,
52     value: huks.HuksKeyDigest.HUKS_DIGEST_NONE
53   };
54   var options = {
55     properties: properties
56   }
57   var resultA = huks.generateKey(alias, options);
58   ```
59
603. 使用Init接口进行init操作。
61
62   Alias为初始化密钥的别名,options为初始化密钥用的参数集合,需根据具体需要到的算法设定options中的参数。
63
64   init接口会返回init操作是否成功。
65
66   ```js
67   var alias = 'test001'
68   var properties = new Array();
69   properties[0] = {
70     tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
71     value: huks.HuksKeyAlg.HUKS_ALG_DH
72   };
73   properties[1] = {
74     tag: huks.HuksTag.HUKS_TAG_PURPOSE,
75     value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_AGREE
76   };
77   properties[2] = {
78     tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
79     value: huks.HuksKeySize.HUKS_DH_KEY_SIZE_4096
80   };
81   var options = {
82     properties: properties
83   };
84   huks.init(alias, options, function(err, data) {
85       if (err.code !== 0) {
86           console.log("test init err information: " + JSON.stringify(err));
87       } else {
88           console.log(`test init data: ${JSON.stringify(data)}`);
89       }
90   })
91   ```
92
934. 使用Update接口进行update操作。
94
95   handle为更新密钥的session id,options为更新密钥用的参数集合,需根据具体需要到的算法设定options中的参数。
96
97   update接口会返回update操作是否成功。
98
99   ```js
100   var properties = new Array();
101   properties[0] = {
102     tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
103     value: huks.HuksKeyAlg.HUKS_ALG_DH
104   };
105   properties[1] = {
106     tag: huks.HuksTag.HUKS_TAG_PURPOSE,
107     value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_AGREE
108   };
109   properties[2] = {
110     tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
111     value: huks.HuksKeySize.HUKS_DH_KEY_SIZE_4096
112   };
113   var options = {
114     properties: properties
115   };
116   var result = huks.update(handle, options)
117   ```
118
1195. 使用Finish接口进行finish操作。
120
121   handle为 结束密钥的session id,options为结束密钥用的参数集合,需根据具体需要到的算法设定options中的参数。
122
123   finish接口会返回finish操作是否成功。
124
125   ```js
126   var properties = new Array();
127   properties[0] = {
128     tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
129     value: huks.HuksKeyAlg.HUKS_ALG_DH
130   };
131   properties[1] = {
132     tag: huks.HuksTag.HUKS_TAG_PURPOSE,
133     value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_AGREE
134   };
135   properties[2] = {
136     tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
137     value: huks.HuksKeySize.HUKS_DH_KEY_SIZE_4096
138   };
139   var options = {
140     properties: properties
141   };
142   var result = huks.finish(handle, options)
143   ```
144
145
146
147