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