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