向應(yīng)用提供密鑰庫能力,包括密鑰管理及密鑰的密碼學(xué)操作等功能。
HUKS所管理的密鑰可以由應(yīng)用導(dǎo)入或者由應(yīng)用調(diào)用HUKS接口生成。
本模塊首批接口從API version 8開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨標(biāo)記接口的起始版本。
調(diào)用接口使用的options中的properties數(shù)組中的param。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
tag | 是 | 標(biāo)簽。 | |
value | boolean|number|bigint|Uint8Array | 是 | 標(biāo)簽對應(yīng)值。 |
調(diào)用接口使用的options。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
properties | Array<HuksParam> | 否 | 屬性,用于存HuksParam的數(shù)組。 |
inData | Uint8Array | 否 | 輸入數(shù)據(jù)。 |
huks Handle結(jié)構(gòu)體。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | 表示handle值。 |
challenge | Uint8Array | 否 | 表示initSession操作之后獲取到的challenge信息。 |
調(diào)用接口返回的result。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
outData | Uint8Array | 否 | 表示輸出數(shù)據(jù)。 |
properties | Array<HuksParam> | 否 | 表示屬性信息。 |
certChains | Array<string> | 否 | 表示證書鏈數(shù)據(jù)。 |
generateKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback<void>) : void
生成密鑰,使用Callback回調(diào)異步返回結(jié)果。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 別名。 |
options | 是 | 用于存放生成key所需TAG。其中密鑰使用的算法、密鑰用途、密鑰長度為必選參數(shù)。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。未捕獲error時代表用戶指定別名的密鑰生成成功,基于密鑰不出TEE原則,此接口不會返回密鑰材料內(nèi)容,若捕獲error,則為生成階段出現(xiàn)異常。 |
示例:
- /* 以生成ECC256密鑰為例 */
- let keyAlias = 'keyAlias';
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_ECC
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value:
- huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN |
- huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_DIGEST,
- value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
- };
- let options = {
- properties: properties
- };
- try {
- huks.generateKeyItem(keyAlias, options, function (error, data) {
- if (error) {
- console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- } else {
- console.info(`callback: generateKeyItem key success`);
- }
- });
- } catch (error) {
- console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
generateKeyItem(keyAlias: string, options: HuksOptions) : Promise<void>
生成密鑰,使用Promise方式異步返回結(jié)果。基于密鑰不出TEE原則,通過promise不會返回密鑰材料內(nèi)容,只用于表示此次調(diào)用是否成功。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名。 |
options | 是 | 用于存放生成key所需TAG。其中密鑰使用的算法、密鑰用途、密鑰長度為必選參數(shù)。 |
示例:
- /* 以生成ECC256密鑰為例 */
- let keyAlias = 'keyAlias';
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_ECC
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value:
- huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN |
- huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_DIGEST,
- value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
- };
- let options = {
- properties: properties
- };
- try {
- huks.generateKeyItem(keyAlias, options)
- .then((data) => {
- console.info(`promise: generateKeyItem success`);
- })
- .catch(error => {
- console.error(`promise: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
deleteKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback<void>) : void
刪除密鑰,使用Callback回調(diào)異步返回結(jié)果。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應(yīng)為生成key時傳入的別名。 |
options | 是 | 空對象(此處傳空即可)。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。不返回err值時表示接口使用成功,其他時為錯誤。 |
示例:
- /* 此處options選擇emptyOptions傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- try {
- huks.deleteKeyItem(keyAlias, emptyOptions, function (error, data) {
- if (error) {
- console.error(`callback: deleteKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- } else {
- console.info(`callback: deleteKeyItem key success`);
- }
- });
- } catch (error) {
- console.error(`callback: deleteKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
deleteKeyItem(keyAlias: string, options: HuksOptions) : Promise<void>
刪除密鑰,使用Promise方式異步返回結(jié)果。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應(yīng)為生成key時傳入的別名。 |
options | 是 | 空對象(此處傳空即可)。 |
示例:
- /* 此處options選擇emptyOptions傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- try {
- huks.deleteKeyItem(keyAlias, emptyOptions)
- .then ((data) => {
- console.info(`promise: deleteKeyItem key success`);
- })
- .catch(error => {
- console.error(`promise: deleteKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: deleteKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
getSdkVersion(options: HuksOptions) : string
獲取當(dāng)前系統(tǒng)sdk版本。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | 空對象,用于存放sdk版本。 |
返回值:
類型 | 說明 |
---|---|
string | 返回sdk版本。 |
示例:
- /* 此處options選擇emptyOptions傳空 */
- let emptyOptions = {
- properties: []
- };
- let result = huks.getSdkVersion(emptyOptions);
importKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback<void>) : void
導(dǎo)入明文密鑰,使用Callback方式回調(diào)異步返回結(jié)果 。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名。 |
options | 是 | 用于導(dǎo)入時所需TAG和需要導(dǎo)入的密鑰。其中密鑰使用的算法、密鑰用途、密鑰長度為必選參數(shù)。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。不返回err值時表示接口使用成功,其他時為錯誤。 |
示例:
- /* 以導(dǎo)入AES256密鑰為例 */
- let plainTextSize32 = makeRandomArr(32);
- function makeRandomArr(size) {
- let arr = new Uint8Array(size);
- for (let i = 0; i < size; i++) {
- arr[i] = Math.floor(Math.random() * 10);
- }
- return arr;
- };
- let keyAlias = 'keyAlias';
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_AES
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value:
- huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_PADDING,
- value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7
- };
- properties[4] = {
- tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
- value: huks.HuksCipherMode.HUKS_MODE_CBC
- };
- let options = {
- properties: properties,
- inData: plainTextSize32
- };
- try {
- huks.importKeyItem(keyAlias, options, function (error, data) {
- if (error) {
- console.error(`callback: importKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- } else {
- console.info(`callback: importKeyItem success`);
- }
- });
- } catch (error) {
- console.error(`callback: importKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
importKeyItem(keyAlias: string, options: HuksOptions) : Promise<void>
導(dǎo)入明文密鑰,使用Promise方式異步返回結(jié)果。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名。 |
options | 是 | 用于導(dǎo)入時所需TAG和需要導(dǎo)入的密鑰。其中密鑰使用的算法、密鑰用途、密鑰長度為必選參數(shù)。 |
示例:
- /* 以導(dǎo)入AES128為例 */
- let plainTextSize32 = makeRandomArr(32);
- function makeRandomArr(size) {
- let arr = new Uint8Array(size);
- for (let i = 0; i < size; i++) {
- arr[i] = Math.floor(Math.random() * 10);
- }
- return arr;
- };
- /*第一步:生成密鑰*/
- let keyAlias = 'keyAlias';
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_AES
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_PADDING,
- value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7
- };
- properties[4] = {
- tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
- value: huks.HuksCipherMode.HUKS_MODE_CBC
- };
- let huksoptions = {
- properties: properties,
- inData: plainTextSize32
- };
- try {
- huks.importKeyItem(keyAlias, huksoptions)
- .then ((data) => {
- console.info(`promise: importKeyItem success`);
- })
- .catch(error => {
- console.error(`promise: importKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: importKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
attestKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksReturnResult>) : void
獲取密鑰證書,使用Callback方式回調(diào)異步返回結(jié)果 。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,存放待獲取證書密鑰的別名。 |
options | 是 | 用于獲取證書時指定所需參數(shù)與數(shù)據(jù)。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。不返回err值時表示接口使用成功,其他時為錯誤。 |
示例:
- let securityLevel = stringToUint8Array('sec_level');
- let challenge = stringToUint8Array('challenge_data');
- let versionInfo = stringToUint8Array('version_info');
- let keyAliasString = "key attest";
- function stringToUint8Array(str) {
- let arr = [];
- for (let i = 0, j = str.length; i < j; ++i) {
- arr.push(str.charCodeAt(i));
- }
- let tmpUint8Array = new Uint8Array(arr);
- return tmpUint8Array;
- }
- async function generateKey(alias) {
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_RSA
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_STORAGE_FLAG,
- value: huks.HuksKeyStorageType.HUKS_STORAGE_PERSISTENT
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
- };
- properties[4] = {
- tag: huks.HuksTag.HUKS_TAG_DIGEST,
- value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
- };
- properties[5] = {
- tag: huks.HuksTag.HUKS_TAG_PADDING,
- value: huks.HuksKeyPadding.HUKS_PADDING_PSS
- };
- properties[6] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_GENERATE_TYPE,
- value: huks.HuksKeyGenerateType.HUKS_KEY_GENERATE_TYPE_DEFAULT
- };
- properties[7] = {
- tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
- value: huks.HuksCipherMode.HUKS_MODE_ECB
- };
- let options = {
- properties: properties
- };
- try {
- huks.generateKeyItem(alias, options, function (error, data) {
- if (error) {
- console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- } else {
- console.info(`callback: generateKeyItem success`);
- }
- });
- } catch (error) {
- console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- async function attestKey() {
- let aliasString = keyAliasString;
- let aliasUint8 = stringToUint8Array(aliasString);
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO,
- value: securityLevel
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_ATTESTATION_CHALLENGE,
- value: challenge
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_VERSION_INFO,
- value: versionInfo
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_ALIAS,
- value: aliasUint8
- };
- let options = {
- properties: properties
- };
- await generateKey(aliasString);
- try {
- huks.attestKeyItem(aliasString, options, function (error, data) {
- if (error) {
- console.error(`callback: attestKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- } else {
- console.info(`callback: attestKeyItem success`);
- }
- });
- } catch (error) {
- console.error(`callback: attestKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
attestKeyItem(keyAlias: string, options: HuksOptions) : Promise<HuksReturnResult>
獲取密鑰證書,使用Promise方式異步返回結(jié)果 。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,存放待獲取證書密鑰的別名。 |
options | 是 | 用于獲取證書時指定所需參數(shù)與數(shù)據(jù)。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksReturnResult> | Promise對象。不返回err值時表示接口使用成功,其他時為錯誤。 |
示例:
- let securityLevel = stringToUint8Array('sec_level');
- let challenge = stringToUint8Array('challenge_data');
- let versionInfo = stringToUint8Array('version_info');
- let keyAliasString = "key attest";
- function stringToUint8Array(str) {
- let arr = [];
- for (let i = 0, j = str.length; i < j; ++i) {
- arr.push(str.charCodeAt(i));
- }
- let tmpUint8Array = new Uint8Array(arr);
- return tmpUint8Array;
- }
- async function generateKey(alias) {
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_RSA
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_STORAGE_FLAG,
- value: huks.HuksKeyStorageType.HUKS_STORAGE_PERSISTENT
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
- };
- properties[4] = {
- tag: huks.HuksTag.HUKS_TAG_DIGEST,
- value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
- };
- properties[5] = {
- tag: huks.HuksTag.HUKS_TAG_PADDING,
- value: huks.HuksKeyPadding.HUKS_PADDING_PSS
- };
- properties[6] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_GENERATE_TYPE,
- value: huks.HuksKeyGenerateType.HUKS_KEY_GENERATE_TYPE_DEFAULT
- };
- properties[7] = {
- tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
- value: huks.HuksCipherMode.HUKS_MODE_ECB
- };
- let options = {
- properties: properties
- };
- try {
- await huks.generateKeyItem(alias, options)
- .then((data) => {
- console.info(`promise: generateKeyItem success`);
- })
- .catch(error => {
- console.error(`promise: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- async function attestKey() {
- let aliasString = keyAliasString;
- let aliasUint8 = stringToUint8Array(aliasString);
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO,
- value: securityLevel
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_ATTESTATION_CHALLENGE,
- value: challenge
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_VERSION_INFO,
- value: versionInfo
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_ALIAS,
- value: aliasUint8
- };
- let options = {
- properties: properties
- };
- await generateKey(aliasString);
- try {
- await huks.attestKeyItem(aliasString, options)
- .then ((data) => {
- console.info(`promise: attestKeyItem success`);
- })
- .catch(error => {
- console.error(`promise: attestKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: attestKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions, callback: AsyncCallback<void>) : void
導(dǎo)入加密密鑰,使用Callback方式回調(diào)異步返回結(jié)果 。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,存放待導(dǎo)入密鑰的別名。 |
wrappingKeyAlias | string | 是 | 密鑰別名,對應(yīng)密鑰用于解密加密的密鑰數(shù)據(jù)。 |
options | 是 | 用于導(dǎo)入時所需TAG和需要導(dǎo)入的加密的密鑰數(shù)據(jù)。其中密鑰使用的算法、密鑰用途、密鑰長度為必選參數(shù)。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。不返回err值時表示接口使用成功,其他時為錯誤。 |
示例:
- /*
- * 以下以SM2密鑰的Callback操作驗證為例
- */
- import huks from '@ohos.security.huks';
- /*
- * 確定密鑰別名
- */
- let importAlias = "importAlias";
- let wrapAlias = "wrappingKeyAlias";
- let exportKey;
- /*
- * 加密導(dǎo)入用途的密鑰材料原文:轉(zhuǎn)換成HUKS ECC-P-256密鑰對格式的密鑰材料
- */
- let inputEccPair = new Uint8Array([
- 0x02, 0x00, 0x00, 0x00, // 密鑰算法:huks.HuksKeyAlg.HUKS_ALG_ECC = 2
- 0x00, 0x01, 0x00, 0x00, // 密鑰大?。ū忍兀?56
- 0x20, 0x00, 0x00, 0x00, // 坐標(biāo)x長度(字節(jié)):32
- 0x20, 0x00, 0x00, 0x00, // 坐標(biāo)y長度(字節(jié)):32
- 0x20, 0x00, 0x00, 0x00, // 坐標(biāo)z長度(字節(jié)):32
- // 坐標(biāo)x
- 0xa5, 0xb8, 0xa3, 0x78, 0x1d, 0x6d, 0x76, 0xe0, 0xb3, 0xf5, 0x6f, 0x43, 0x9d, 0xcf, 0x60, 0xf6,
- 0x0b, 0x3f, 0x64, 0x45, 0xa8, 0x3f, 0x1a, 0x96, 0xf1, 0xa1, 0xa4, 0x5d, 0x3e, 0x2c, 0x3f, 0x13,
- // 坐標(biāo)y
- 0xd7, 0x81, 0xf7, 0x2a, 0xb5, 0x8d, 0x19, 0x3d, 0x9b, 0x96, 0xc7, 0x6a, 0x10, 0xf0, 0xaa, 0xbc,
- 0x91, 0x6f, 0x4d, 0xa7, 0x09, 0xb3, 0x57, 0x88, 0x19, 0x6f, 0x00, 0x4b, 0xad, 0xee, 0x34, 0x35,
- // 坐標(biāo)z
- 0xfb, 0x8b, 0x9f, 0x12, 0xa0, 0x83, 0x19, 0xbe, 0x6a, 0x6f, 0x63, 0x2a, 0x7c, 0x86, 0xba, 0xca,
- 0x64, 0x0b, 0x88, 0x96, 0xe2, 0xfa, 0x77, 0xbc, 0x71, 0xe3, 0x0f, 0x0f, 0x9e, 0x3c, 0xe5, 0xf9
- ]);
- /*
- * 封裝密鑰屬性參數(shù)集
- */
- // 生成加密導(dǎo)入用途的密鑰的屬性集
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_ECC
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_UNWRAP
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_DIGEST,
- value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
- };
- properties[4] = {
- tag: huks.HuksTag.HUKS_TAG_IMPORT_KEY_TYPE,
- value: huks.HuksImportKeyType.HUKS_KEY_TYPE_KEY_PAIR,
- };
- let huksOptions = {
- properties: properties,
- inData: inputEccPair
- };
- // 待導(dǎo)入密鑰的屬性集:AES256
- let importProperties = new Array();
- importProperties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_AES
- };
- importProperties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256
- };
- importProperties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
- };
- importProperties[3] = {
- tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
- value: huks.HuksCipherMode.HUKS_MODE_CBC
- };
- importProperties[4] = {
- tag: huks.HuksTag.HUKS_TAG_PADDING,
- value: huks.HuksKeyPadding.HUKS_PADDING_NONE
- };
- importProperties[5] = {
- tag: huks.HuksTag.HUKS_TAG_UNWRAP_ALGORITHM_SUITE,
- value: huks.HuksUnwrapSuite.HUKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING // 使用“ECDH+AES256GCM”加密導(dǎo)入套件
- };
- let importOptions = {
- properties: importProperties,
- inData: new Uint8Array(new Array())
- };
- // 導(dǎo)出加密導(dǎo)入用途的公鑰
- function exportKeyItem(keyAlias:string, huksOptions:huks.HuksOptions, throwObject) : Promise<huks.HuksReturnResult> {
- return new Promise((resolve, reject) => {
- try {
- huks.exportKeyItem(keyAlias, huksOptions, function (error, data) {
- if (error) {
- reject(error);
- } else {
- resolve(data);
- }
- });
- } catch (error) {
- throwObject.isThrow = true;
- throw(error);
- }
- });
- }
- async function publicExportKeyFunc(keyAlias:string, huksOptions:huks.HuksOptions) {
- console.info(`enter callback export`);
- let throwObject = {isThrow: false};
- try {
- await exportKeyItem(keyAlias, huksOptions, throwObject)
- .then ((data) => {
- console.info(`callback: exportKeyItem success, data = ${JSON.stringify(data)}`);
- exportKey = data.outData;
- })
- .catch(error => {
- if (throwObject.isThrow) {
- throw(error);
- } else {
- console.error(`callback: exportKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- }
- });
- } catch (error) {
- console.error(`callback: exportKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- // 此處用導(dǎo)入密鑰來模擬“生成加密導(dǎo)入用途的密鑰”
- function importKeyItem(keyAlias:string, huksOptions:huks.HuksOptions, throwObject) {
- return new Promise((resolve, reject) => {
- try {
- huks.importKeyItem(keyAlias, huksOptions, function (error, data) {
- if (error) {
- reject(error);
- } else {
- resolve(data);
- }
- });
- } catch (error) {
- throwObject.isThrow = true;
- throw(error);
- }
- });
- }
- async function publicImportKeyFunc(keyAlias:string, huksOptions:huks.HuksOptions) {
- console.info(`enter promise importKeyItem`);
- let throwObject = {isThrow: false};
- try {
- await importKeyItem(keyAlias, huksOptions, throwObject)
- .then ((data) => {
- console.info(`callback: importKeyItem success, data = ${JSON.stringify(data)}`);
- })
- .catch(error => {
- if (throwObject.isThrow) {
- throw(error);
- } else {
- console.error(`callback: importKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- }
- });
- } catch (error) {
- console.error(`callback: importKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- // 執(zhí)行加密導(dǎo)入
- async function publicImportWrappedKey(keyAlias:string, wrappingKeyAlias:string, huksOptions:huks.HuksOptions) {
- console.info(`enter callback importWrappedKeyItem`);
- var throwObject = {isThrow: false};
- try {
- await importWrappedKeyItem(keyAlias, wrappingKeyAlias, huksOptions, throwObject)
- .then ((data) => {
- console.info(`callback: importWrappedKeyItem success, data = ${JSON.stringify(data)}`);
- })
- .catch(error => {
- if (throwObject.isThrow) {
- throw(error);
- } else {
- console.error(`callback: importWrappedKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- }
- });
- } catch (error) {
- console.error(`callback: importWrappedKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- function importWrappedKeyItem(keyAlias:string, wrappingKeyAlias:string, huksOptions:huks.HuksOptions, throwObject) {
- return new Promise((resolve, reject) => {
- try {
- huks.importWrappedKeyItem(keyAlias, wrappingKeyAlias, huksOptions, function (error, data) {
- if (error) {
- reject(error);
- } else {
- resolve(data);
- }
- });
- } catch (error) {
- throwObject.isThrow = true;
- throw(error);
- }
- });
- }
- // 刪除加密導(dǎo)入用途的密鑰
- function deleteKeyItem(keyAlias:string, huksOptions:huks.HuksOptions, throwObject) {
- return new Promise((resolve, reject) => {
- try {
- huks.deleteKeyItem(keyAlias, huksOptions, function (error, data) {
- if (error) {
- reject(error);
- } else {
- resolve(data);
- }
- });
- } catch (error) {
- throwObject.isThrow = true;
- throw(error);
- }
- });
- }
- async function publicDeleteKeyFunc(keyAlias:string, huksOptions:huks.HuksOptions) {
- console.info(`enter callback deleteKeyItem`);
- let throwObject = {isThrow: false};
- try {
- await deleteKeyItem(keyAlias, huksOptions, throwObject)
- .then ((data) => {
- console.info(`callback: deleteKeyItem key success, data = ${JSON.stringify(data)}`);
- })
- .catch(error => {
- if (throwObject.isThrow) {
- throw(error);
- } else {
- console.error(`callback: deleteKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- }
- });
- } catch (error) {
- console.error(`callback: deletKeeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- async function ImportWrappedKeyNormalTest() {
- console.info(`enter ImportWrapKey test`);
- /*
- * 生成加密導(dǎo)入用途的密鑰(此處使用導(dǎo)入進行模擬)
- */
- await publicImportKeyFunc(wrapAlias, huksOptions);
- /*
- * 導(dǎo)出加密導(dǎo)入用途密鑰的公鑰材料
- */
- await publicExportKeyFunc(wrapAlias, huksOptions);
- /*----------------------------------------------------------------------------------------------
- * 此處省略業(yè)務(wù)本地生成ECC密鑰對、業(yè)務(wù)本地ECDH密鑰協(xié)商、業(yè)務(wù)本地生成密鑰加密密鑰K3、業(yè)務(wù)本地加密K1'和K3的流程
- *----------------------------------------------------------------------------------------------*/
- /* 封裝加密導(dǎo)入密鑰材料:參考加密導(dǎo)入
- * 拼接importOptions.inData字段,滿足以下格式:
- * PK2長度(4字節(jié)) + PK2的數(shù)據(jù) + AAD2的長度(4字節(jié)) + AAD2的數(shù)據(jù) +
- * Nonce2的長度(4字節(jié))+ Nonce2的數(shù)據(jù) + AEAD2的長度(4字節(jié)) + AEAD2的數(shù)據(jù) +
- * K3密文的長度(4字節(jié)) + K3密文的數(shù)據(jù) + AAD3的長度(4字節(jié)) + AAD3的數(shù)據(jù) +
- * Nonce3的長度(4字節(jié)) + Nonce3的數(shù)據(jù) + AEAD3的長度(4字節(jié)) + AEAD3的數(shù)據(jù) +
- * K1'_size的長度(4字節(jié)) + K1'_size + K1'_enc的長度(4字節(jié)) + K1'_enc的數(shù)據(jù)
- */
- let inputKey = new Uint8Array([
- 0x5b, 0x00, 0x00, 0x00, // ECC-P-256 公鑰長度(X.509規(guī)范DER格式):91
- // ECC-P-256 公鑰
- 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a,
- 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xa5, 0xb8, 0xa3, 0x78, 0x1d,
- 0x6d, 0x76, 0xe0, 0xb3, 0xf5, 0x6f, 0x43, 0x9d, 0xcf, 0x60, 0xf6, 0x0b, 0x3f, 0x64, 0x45, 0xa8,
- 0x3f, 0x1a, 0x96, 0xf1, 0xa1, 0xa4, 0x5d, 0x3e, 0x2c, 0x3f, 0x13, 0xd7, 0x81, 0xf7, 0x2a, 0xb5,
- 0x8d, 0x19, 0x3d, 0x9b, 0x96, 0xc7, 0x6a, 0x10, 0xf0, 0xaa, 0xbc, 0x91, 0x6f, 0x4d, 0xa7, 0x09,
- 0xb3, 0x57, 0x88, 0x19, 0x6f, 0x00, 0x4b, 0xad, 0xee, 0x34, 0x35,
- 0x10, 0x00, 0x00, 0x00, // AAD2長度:16
- // AAD2
- 0x61, 0x62, 0x61, 0x62, 0x61, 0x62, 0x61, 0x62, 0x61, 0x62, 0x61, 0x62, 0x61, 0x62, 0x61, 0x00,
- 0x0c, 0x00, 0x00, 0x00, // Nonce2長度:16
- // Nonce2
- 0x68, 0x61, 0x68, 0x61, 0x68, 0x61, 0x68, 0x61, 0x68, 0x61, 0x68, 0x00,
- 0x10, 0x00, 0x00, 0x00, // AEAD2長度:16
- // AEAD2
- 0x85, 0xfe, 0xff, 0x5b, 0x47, 0x30, 0xbe, 0x10, 0xea, 0x3c, 0x30, 0x94, 0x8a, 0x99, 0xc4, 0x86,
- 0x20, 0x00, 0x00, 0x00, // K3密文長度:32
- // K3密文
- 0xb4, 0xa9, 0x31, 0x5f, 0x28, 0x39, 0x53, 0x12, 0xa0, 0xfd, 0x8c, 0x9e, 0xfd, 0x36, 0xb8, 0xcb,
- 0x73, 0xb3, 0x08, 0xce, 0x16, 0xc9, 0x3b, 0xea, 0xd5, 0xca, 0x41, 0x85, 0xb8, 0x25, 0x7d, 0x1b,
- 0x10, 0x00, 0x00, 0x00, // AAD3長度:16
- // AAD3
- 0x61, 0x62, 0x61, 0x62, 0x61, 0x62, 0x61, 0x62, 0x61, 0x62, 0x61, 0x62, 0x61, 0x62, 0x61, 0x00,
- 0x0c, 0x00, 0x00, 0x00, // Nonce3長度:16
- // Nonce3
- 0x68, 0x61, 0x68, 0x61, 0x68, 0x61, 0x68, 0x61, 0x68, 0x61, 0x68, 0x00,
- 0x10, 0x00, 0x00, 0x00, // AEAD3長度:16
- // AEAD3
- 0x23, 0xe2, 0xdb, 0xb5, 0x2e, 0xa7, 0xbb, 0x2d, 0xc5, 0x57, 0x05, 0xd8, 0x9d, 0x0e, 0xcf, 0x62,
- 0x04, 0x00, 0x00, 0x00, // “密鑰明文材料長度”的長度(字節(jié)):4
- // 密鑰明文材料的長度:32字節(jié)
- 0x20, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, // 待導(dǎo)入密鑰密文長度(字節(jié)):32
- // 待導(dǎo)入密鑰密文
- 0xf4, 0x17, 0xbb, 0x90, 0x88, 0x62, 0x3d, 0x6e, 0xd8, 0x5f, 0x03, 0x51, 0x7f, 0xf5, 0x8b, 0x97,
- 0x8a, 0x41, 0x33, 0x64, 0xf5, 0x6f, 0x61, 0x16, 0xf9, 0x3c, 0x7a, 0x0b, 0xee, 0x3d, 0x92, 0xbb,
- ]);
- importOptions.inData = inputKey;
- /*
- * 導(dǎo)入封裝的加密密鑰材料
- */
- await publicImportWrappedKey(importAlias, wrapAlias, importOptions);
- /*
- * 刪除用于加密導(dǎo)入的密鑰
- */
- await publicDeleteKeyFunc(wrapAlias, huksOptions);
- }
importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions) : Promise<void>
導(dǎo)入加密密鑰,使用Promise方式異步返回結(jié)果。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,存放待導(dǎo)入密鑰的別名。 |
wrappingKeyAlias | string | 是 | 密鑰別名,對應(yīng)密鑰用于解密加密的密鑰數(shù)據(jù)。 |
options | 是 | 用于導(dǎo)入時所需TAG和需要導(dǎo)入的加密的密鑰數(shù)據(jù)。其中密鑰使用的算法、密鑰用途、密鑰長度為必選參數(shù)。 |
示例:
- /* 處理流程與callback類似,主要差異點為如下函數(shù): */
- async function TestImportWrappedFunc(alias, wrappingAlias, options) {
- try {
- await huks.importWrappedKeyItem(alias, wrappingAlias, options)
- .then ((data) => {
- console.info(`promise: importWrappedKeyItem success`);
- })
- .catch(error => {
- console.error(`promise: importWrappedKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: importWrappedKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
exportKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksReturnResult>) : void
導(dǎo)出密鑰,使用Callback方式回調(diào)異步返回的結(jié)果。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應(yīng)與所用密鑰生成時使用的別名相同。 |
options | 是 | 空對象(此處傳空即可)。 | |
callback | AsyncCallback<HuksReturnResult> | 是 | 回調(diào)函數(shù)。不返回err值時表示接口使用成功,其他時為錯誤。outData:返回從密鑰中導(dǎo)出的公鑰。 |
示例:
- /* 此處options選擇emptyOptions來傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- try {
- huks.exportKeyItem(keyAlias, emptyOptions, function (error, data) {
- if (error) {
- console.error(`callback: exportKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- } else {
- console.info(`callback: exportKeyItem success, data = ${JSON.stringify(data)}`);
- }
- });
- } catch (error) {
- console.error(`callback: exportKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
exportKeyItem(keyAlias: string, options: HuksOptions) : Promise<HuksReturnResult>
導(dǎo)出密鑰,使用Promise方式回調(diào)異步返回的結(jié)果。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應(yīng)與所用密鑰生成時使用的別名相同。 |
options | 是 | 空對象(此處傳空即可)。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksReturnResult> | Promise對象。不返回err值時表示接口使用成功,其他時為錯誤。outData:返回從密鑰中導(dǎo)出的公鑰。 |
示例:
- /* 此處options選擇emptyOptions來傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- try {
- huks.exportKeyItem(keyAlias, emptyOptions)
- .then ((data) => {
- console.info(`promise: exportKeyItem success, data = ${JSON.stringify(data)}`);
- })
- .catch(error => {
- console.error(`promise: exportKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: exportKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
getKeyItemProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksReturnResult>) : void
獲取密鑰屬性,使用Callback回調(diào)異步返回結(jié)果。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應(yīng)與所用密鑰生成時使用的別名相同。 |
options | 是 | 空對象(此處傳空即可)。 | |
callback | AsyncCallback<HuksReturnResult> | 是 | 回調(diào)函數(shù)。不返回err值時表示接口使用成功,其他時為錯誤。properties:返回值為生成密鑰時所需參數(shù)。 |
示例:
- /* 此處options選擇emptyOptions來傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- try {
- huks.getKeyItemProperties(keyAlias, emptyOptions, function (error, data) {
- if (error) {
- console.error(`callback: getKeyItemProperties failed, code: ${error.code}, msg: ${error.message}`);
- } else {
- console.info(`callback: getKeyItemProperties success, data = ${JSON.stringify(data)}`);
- }
- });
- } catch (error) {
- console.error(`callback: getKeyItemProperties input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
getKeyItemProperties(keyAlias: string, options: HuksOptions) : Promise<HuksReturnResult>
獲取密鑰屬性,使用Promise回調(diào)異步返回結(jié)果。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應(yīng)與所用密鑰生成時使用的別名相同。 |
options | 是 | 空對象(此處傳空即可)。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksReturnResult> | Promise對象。不返回err值時表示接口使用成功,其他時為錯誤。properties:返回值為生成密鑰時所需參數(shù)。 |
示例:
- /* 此處options選擇emptyOptions來傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- try {
- huks.getKeyItemProperties(keyAlias, emptyOptions)
- .then ((data) => {
- console.info(`promise: getKeyItemProperties success, data = ${JSON.stringify(data)}`);
- })
- .catch(error => {
- console.error(`promise: getKeyItemProperties failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: getKeyItemProperties input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
isKeyItemExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback<boolean>) : void
判斷密鑰是否存在,使用Callback回調(diào)異步返回結(jié)果 。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 所需查找的密鑰的別名。 |
options | 是 | 空對象(此處傳空即可)。 | |
callback | AsyncCallback<boolean> | 是 | 回調(diào)函數(shù)。若密鑰存在,data為true,若密鑰不存在,則error中會輸出密鑰不存在的error code。 |
示例:
- /* 此處options選擇emptyOptions來傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- huks.isKeyItemExist(keyAlias, emptyOptions, function (error, data) {
- if (data) {
- promptAction.showToast({
- message: "keyAlias: " + keyAlias +"is existed!",
- duration: 2500,
- })
- } else {
- promptAction.showToast({
- message: "find key failed,error code: " + error.code + " error msg: " + error.message,
- duration: 2500,
- })
- }
- });
isKeyItemExist(keyAlias: string, options: HuksOptions) : Promise<boolean>
判斷密鑰是否存在,使用Promise回調(diào)異步返回結(jié)果 。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 所需查找的密鑰的別名。 |
options | 是 | 空對象(此處傳空即可)。 |
返回值:
類型 | 說明 |
---|---|
Promise<boolean> | Promise對象。密鑰存在時,可通過then進行密鑰存在后的相關(guān)處理,若不存在,可通過error處理密鑰不存在后的相關(guān)業(yè)務(wù)操作。 |
示例:
- /* 此處options選擇emptyOptions來傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- await huks.isKeyItemExist(keyAlias, emptyOptions).then((data) => {
- promptAction.showToast({
- message: "keyAlias: " + keyAlias +"is existed!",
- duration: 500,
- })
- }).catch((err)=>{
- promptAction.showToast({
- message: "find key failed, error code: " + err.code + " error message: " + err.message,
- duration: 6500,
- })
- })
initSession(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksSessionHandle>) : void
initSession操作密鑰接口,使用Callback回調(diào)異步返回結(jié)果。huks.initSession, huks.updateSession, huks.finishSession為三段式接口,需要一起使用。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | initSession操作密鑰的別名。 |
options | 是 | initSession操作的參數(shù)集合。 | |
callback | AsyncCallback<HuksSessionHandle> | 是 | 回調(diào)函數(shù)。將initSession操作返回的handle添加到密鑰管理系統(tǒng)的回調(diào)。 |
initSession(keyAlias: string, options: HuksOptions) : Promise<HuksSessionHandle>
initSession操作密鑰接口,使用Promise方式異步返回結(jié)果。huks.initSession, huks.updateSession, huks.finishSession為三段式接口,需要一起使用。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | initSession操作密鑰的別名。 |
options | 是 | initSession參數(shù)集合。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksSessionHandle> | Promise對象。將initSession操作返回的handle添加到密鑰管理系統(tǒng)的回調(diào)。 |
updateSession(handle: number, options: HuksOptions, callback: AsyncCallback<HuksReturnResult>) : void
updateSession操作密鑰接口,使用Callback回調(diào)異步返回結(jié)果。huks.initSession, huks.updateSession, huks.finishSession為三段式接口,需要一起使用。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | updateSession操作的handle。 |
options | 是 | updateSession的參數(shù)集合。 | |
callback | AsyncCallback<HuksReturnResult> | 是 | 回調(diào)函數(shù)。將updateSession操作的結(jié)果添加到密鑰管理系統(tǒng)的回調(diào)。 |
updateSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback<HuksReturnResult>) : void
updateSession操作密鑰接口,使用Callback回調(diào)異步返回結(jié)果。huks.initSession, huks.updateSession, huks.finishSession為三段式接口,需要一起使用。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | updateSession操作的handle。 |
options | 是 | updateSession操作的參數(shù)集合。 | |
token | Uint8Array | 是 | updateSession操作的token。 |
callback | AsyncCallback<HuksReturnResult> | 是 | 回調(diào)函數(shù)。將updateSession操作的結(jié)果添加到密鑰管理系統(tǒng)的回調(diào)。 |
updateSession(handle: number, options: HuksOptions, token?: Uint8Array) : Promise<HuksReturnResult>
updateSession操作密鑰接口,使用Promise方式異步返回結(jié)果。huks.initSession, huks.updateSession, huks.finishSession為三段式接口,需要一起使用。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | updateSession操作的handle。 |
options | 是 | updateSession操作的參數(shù)集合。 | |
token | Uint8Array | 否 | updateSession操作的token。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksReturnResult> | Promise對象。將updateSession操作的結(jié)果添加到密鑰管理系統(tǒng)的回調(diào)。 |
finishSession(handle: number, options: HuksOptions, callback: AsyncCallback<HuksReturnResult>) : void
finishSession操作密鑰接口,使用Callback回調(diào)異步返回結(jié)果。huks.initSession, huks.updateSession, huks.finishSession為三段式接口,需要一起使用。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | finishSession操作的handle。 |
options | 是 | finishSession的參數(shù)集合。 | |
callback | AsyncCallback<HuksReturnResult> | 是 | 回調(diào)函數(shù)。將finishSession操作的結(jié)果添加到密鑰管理系統(tǒng)的回調(diào)。 |
finishSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback<HuksReturnResult>) : void
finishSession操作密鑰接口,使用Callback回調(diào)異步返回結(jié)果。huks.initSession, huks.updateSession, huks.finishSession為三段式接口,需要一起使用。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | finishSession操作的handle。 |
options | 是 | finishSession的參數(shù)集合。 | |
token | Uint8Array | 是 | finishSession操作的token。 |
callback | AsyncCallback<HuksReturnResult> | 是 | 回調(diào)函數(shù)。將finishSession操作的結(jié)果添加到密鑰管理系統(tǒng)的回調(diào)。 |
finishSession(handle: number, options: HuksOptions, token?: Uint8Array) : Promise<HuksReturnResult>
finishSession操作密鑰接口,使用Promise方式異步返回結(jié)果。huks.initSession, huks.updateSession, huks.finishSession為三段式接口,需要一起使用。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | finishSession操作的handle。 |
options | 是 | finishSession操作的參數(shù)集合。 | |
token | Uint8Array | 否 | finishSession操作的token。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksReturnResult> | Promise對象,用于獲取異步返回結(jié)果。 |
abortSession(handle: number, options: HuksOptions, callback: AsyncCallback<void>) : void
abortSession操作密鑰接口,使用Callback回調(diào)異步返回結(jié)果 。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | abortSession操作的handle。 |
options | 是 | abortSession操作的參數(shù)集合。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。將abortSession操作的結(jié)果添加到密鑰管理系統(tǒng)的回調(diào)。 |
示例:
- /* huks.initSession, huks.updateSession, huks.finishSession為三段式接口,需要一起使用,當(dāng)
- * huks.initSession和huks.updateSession
- * 以及huks.finishSession操作中的任一階段發(fā)生錯誤時,
- * 都需要調(diào)用huks.abortSession來終止密鑰的使用。
- *
- * 以下以RSA2048密鑰的callback功能使用為例
- */
- function stringToUint8Array(str) {
- let arr = [];
- for (let i = 0, j = str.length; i < j; ++i) {
- arr.push(str.charCodeAt(i));
- }
- let tmpUint8Array = new Uint8Array(arr);
- return tmpUint8Array;
- }
- let keyAlias = "HuksDemoRSA";
- let properties = new Array();
- let options = {
- properties: properties,
- inData: new Uint8Array(0)
- };
- let handle;
- async function generateKey() {
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_RSA
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_PADDING,
- value: huks.HuksKeyPadding.HUKS_PADDING_PKCS1_V1_5
- };
- properties[4] = {
- tag: huks.HuksTag.HUKS_TAG_DIGEST,
- value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
- };
- properties[5] = {
- tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
- value: huks.HuksCipherMode.HUKS_MODE_ECB,
- }
- try {
- await huks.generateKeyItem(keyAlias, options, function (error, data) {
- if (error) {
- console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- } else {
- console.info(`callback: generateKeyItem success`);
- }
- });
- } catch (error) {
- console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- async function huksInit() {
- console.log('enter huksInit');
- try {
- huks.initSession(keyAlias, options, function (error, data) {
- if (error) {
- console.error(`callback: initSession failed, code: ${error.code}, msg: ${error.message}`);
- } else {
- console.info(`callback: initSession success, data = ${JSON.stringify(data)}`);
- handle = data.handle;
- }
- });
- } catch (error) {
- console.error(`callback: initSession input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- async function huksUpdate() {
- console.log('enter huksUpdate');
- options.inData = stringToUint8Array("huksHmacTest");
- try {
- huks.updateSession(handle, options, function (error, data) {
- if (error) {
- console.error(`callback: updateSession failed, code: ${error.code}, msg: ${error.message}`);
- } else {
- console.info(`callback: updateSession success, data = ${JSON.stringify(data)}`);
- }
- });
- } catch (error) {
- console.error(`callback: updateSession input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- async function huksFinish() {
- console.log('enter huksFinish');
- options.inData = new Uint8Array(0);
- try {
- huks.finishSession(handle, options, function (error, data) {
- if (error) {
- console.error(`callback: finishSession failed, code: ${error.code}, msg: ${error.message}`);
- } else {
- console.info(`callback: finishSession success, data = ${JSON.stringify(data)}`);
- }
- });
- } catch (error) {
- console.error(`callback: finishSession input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- async function huksAbort() {
- console.log('enter huksAbort');
- try {
- huks.abortSession(handle, options, function (error, data) {
- if (error) {
- console.error(`callback: abortSession failed, code: ${error.code}, msg: ${error.message}`);
- } else {
- console.info(`callback: abortSession success`);
- }
- });
- } catch (error) {
- console.error(`callback: abortSession input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
abortSession(handle: number, options: HuksOptions) : Promise<void>;
abortSession操作密鑰接口,使用Promise方式異步返回結(jié)果。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | abortSession操作的handle。 |
options | 是 | abortSession操作的參數(shù)集合。 |
返回值:
類型 | 說明 |
---|---|
Promise<void> | Promise對象。將abortSession操作的結(jié)果添加到密鑰管理系統(tǒng)的回調(diào)。 |
示例:
- /* huks.initSession, huks.updateSession, huks.finishSession為三段式接口,需要一起使用,當(dāng)
- * huks.initSession和huks.updateSession
- * 以及huks.finishSession操作中的任一階段發(fā)生錯誤時,
- * 都需要調(diào)用huks.abortSession來終止密鑰的使用。
- *
- * 以下以RSA2048密鑰的callback功能使用為例
- */
- function stringToUint8Array(str) {
- let arr = [];
- for (let i = 0, j = str.length; i < j; ++i) {
- arr.push(str.charCodeAt(i));
- }
- let tmpUint8Array = new Uint8Array(arr);
- return tmpUint8Array;
- }
- let keyAlias = "HuksDemoRSA";
- let properties = new Array();
- let options = {
- properties: properties,
- inData: new Uint8Array(0)
- };
- let handle;
- async function generateKey() {
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_RSA
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_PADDING,
- value: huks.HuksKeyPadding.HUKS_PADDING_PKCS1_V1_5
- };
- properties[4] = {
- tag: huks.HuksTag.HUKS_TAG_DIGEST,
- value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
- };
- properties[5] = {
- tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
- value: huks.HuksCipherMode.HUKS_MODE_ECB,
- }
- try {
- await huks.generateKeyItem(keyAlias, options)
- .then((data) => {
- console.info(`promise: generateKeyItem success`);
- })
- .catch(error => {
- console.error(`promise: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- async function huksInit() {
- console.log('enter huksInit');
- try {
- await huks.initSession(keyAlias, options)
- .then ((data) => {
- console.info(`promise: initSession success, data = ${JSON.stringify(data)}`);
- handle = data.handle;
- })
- .catch(error => {
- console.error(`promise: initSession key failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: initSession input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- async function huksUpdate() {
- console.log('enter huksUpdate');
- options.inData = stringToUint8Array("huksHmacTest");
- try {
- await huks.updateSession(handle, options)
- .then ((data) => {
- console.info(`promise: updateSession success, data = ${JSON.stringify(data)}`);
- })
- .catch(error => {
- console.error(`promise: updateSession failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: updateSession input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- async function huksFinish() {
- console.log('enter huksFinish');
- options.inData = new Uint8Array(0);
- try {
- await huks.finishSession(handle, options)
- .then ((data) => {
- console.info(`promise: finishSession success, data = ${JSON.stringify(data)}`);
- })
- .catch(error => {
- console.error(`promise: finishSession failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: finishSession input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
- async function huksAbort() {
- console.log('enter huksAbort');
- try {
- await huks.abortSession(handle, options)
- .then ((data) => {
- console.info(`promise: abortSession success`);
- })
- .catch(error => {
- console.error(`promise: abortSession failed, code: ${error.code}, msg: ${error.message}`);
- });
- } catch (error) {
- console.error(`promise: abortSession input arg invalid, code: ${error.code}, msg: ${error.message}`);
- }
- }
表示錯誤碼的枚舉以及對應(yīng)的錯誤信息, 錯誤碼表示錯誤類型,錯誤信息展示錯誤詳情。
關(guān)于錯誤碼的具體信息,可在錯誤碼參考文檔中查看。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_ERR_CODE_PERMISSION_FAIL | 201 | 權(quán)限錯誤導(dǎo)致失敗。 |
HUKS_ERR_CODE_ILLEGAL_ARGUMENT | 401 | 參數(shù)錯誤導(dǎo)致失敗。 |
HUKS_ERR_CODE_NOT_SUPPORTED_API | 801 | 不支持的API。 |
HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED | 12000001 | 不支持的功能/特性。 |
HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT | 12000002 | 缺少密鑰算法參數(shù)。 |
HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT | 12000003 | 無效密鑰算法參數(shù)。 |
HUKS_ERR_CODE_FILE_OPERATION_FAIL | 12000004 | 文件操作失敗。 |
HUKS_ERR_CODE_COMMUNICATION_FAIL | 12000005 | 通信失敗。 |
HUKS_ERR_CODE_CRYPTO_FAIL | 12000006 | 算法庫操作失敗。 |
HUKS_ERR_CODE_KEY_AUTH_PERMANENTLY_INVALIDATED | 12000007 | 密鑰訪問失敗-密鑰訪問失效。 |
HUKS_ERR_CODE_KEY_AUTH_VERIFY_FAILED | 12000008 | 密鑰訪問失敗-密鑰認(rèn)證失敗。 |
HUKS_ERR_CODE_KEY_AUTH_TIME_OUT | 12000009 | 密鑰訪問失敗-密鑰訪問超時。 |
HUKS_ERR_CODE_SESSION_LIMIT | 12000010 | 密鑰操作會話數(shù)已達上限。 |
HUKS_ERR_CODE_ITEM_NOT_EXIST | 12000011 | 目標(biāo)對象不存在。 |
HUKS_ERR_CODE_EXTERNAL_ERROR | 12000012 | 外部錯誤。 |
HUKS_ERR_CODE_CREDENTIAL_NOT_EXIST | 12000013 | 缺失所需憑據(jù)。 |
HUKS_ERR_CODE_INSUFFICIENT_MEMORY | 12000014 | 內(nèi)存不足。 |
HUKS_ERR_CODE_CALL_SERVICE_FAILED | 12000015 | 調(diào)用其他系統(tǒng)服務(wù)失敗。 |
表示密鑰用途。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_KEY_PURPOSE_ENCRYPT | 1 | 表示密鑰用于對明文進行加密操作。 |
HUKS_KEY_PURPOSE_DECRYPT | 2 | 表示密鑰用于對密文進行解密操作。 |
HUKS_KEY_PURPOSE_SIGN | 4 | 表示密鑰用于對數(shù)據(jù)進行簽名。 |
HUKS_KEY_PURPOSE_VERIFY | 8 | 表示密鑰用于驗證簽名后的數(shù)據(jù)。 |
HUKS_KEY_PURPOSE_DERIVE | 16 | 表示密鑰用于派生密鑰。 |
HUKS_KEY_PURPOSE_WRAP | 32 | 表示密鑰用于加密導(dǎo)出。 |
HUKS_KEY_PURPOSE_UNWRAP | 64 | 表示密鑰加密導(dǎo)入。 |
HUKS_KEY_PURPOSE_MAC | 128 | 表示密鑰用于生成mac消息驗證碼。 |
HUKS_KEY_PURPOSE_AGREE | 256 | 表示密鑰用于進行密鑰協(xié)商。 |
表示摘要算法。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_DIGEST_NONE | 0 | 表示無摘要算法。 |
HUKS_DIGEST_MD5 | 1 | 表示MD5摘要算法。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_DIGEST_SM39+ | 2 | 表示SM3摘要算法。 |
HUKS_DIGEST_SHA1 | 10 | 表示SHA1摘要算法。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_DIGEST_SHA224 | 11 | 表示SHA224摘要算法。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_DIGEST_SHA256 | 12 | 表示SHA256摘要算法。 |
HUKS_DIGEST_SHA384 | 13 | 表示SHA384摘要算法。 |
HUKS_DIGEST_SHA512 | 14 | 表示SHA512摘要算法。 |
表示補齊算法。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_PADDING_NONE | 0 | 表示不使用補齊算法。 |
HUKS_PADDING_OAEP | 1 | 表示使用OAEP補齊算法。 |
HUKS_PADDING_PSS | 2 | 表示使用PSS補齊算法。 |
HUKS_PADDING_PKCS1_V1_5 | 3 | 表示使用PKCS1_V1_5補齊算法。 |
HUKS_PADDING_PKCS5 | 4 | 表示使用PKCS5補齊算法。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_PADDING_PKCS7 | 5 | 表示使用PKCS7補齊算法。 |
表示加密模式。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_MODE_ECB | 1 | 表示使用ECB加密模式。 |
HUKS_MODE_CBC | 2 | 表示使用CBC加密模式。 |
HUKS_MODE_CTR | 3 | 表示使用CTR加密模式。 |
HUKS_MODE_OFB | 4 | 表示使用OFB加密模式。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_MODE_CCM | 31 | 表示使用CCM加密模式。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_MODE_GCM | 32 | 表示使用GCM加密模式。 |
表示密鑰長度。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_RSA_KEY_SIZE_512 | 512 | 表示使用RSA算法的密鑰長度為512bit。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_RSA_KEY_SIZE_768 | 768 | 表示使用RSA算法的密鑰長度為768bit。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_RSA_KEY_SIZE_1024 | 1024 | 表示使用RSA算法的密鑰長度為1024bit。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_RSA_KEY_SIZE_2048 | 2048 | 表示使用RSA算法的密鑰長度為2048bit。 |
HUKS_RSA_KEY_SIZE_3072 | 3072 | 表示使用RSA算法的密鑰長度為3072bit。 |
HUKS_RSA_KEY_SIZE_4096 | 4096 | 表示使用RSA算法的密鑰長度為4096bit。 |
HUKS_ECC_KEY_SIZE_224 | 224 | 表示使用ECC算法的密鑰長度為224bit。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_ECC_KEY_SIZE_256 | 256 | 表示使用ECC算法的密鑰長度為256bit。 |
HUKS_ECC_KEY_SIZE_384 | 384 | 表示使用ECC算法的密鑰長度為384bit。 |
HUKS_ECC_KEY_SIZE_521 | 521 | 表示使用ECC算法的密鑰長度為521bit。 |
HUKS_AES_KEY_SIZE_128 | 128 | 表示使用AES算法的密鑰長度為128bit。 |
HUKS_AES_KEY_SIZE_192 | 192 | 表示使用AES算法的密鑰長度為192bit。 |
HUKS_AES_KEY_SIZE_256 | 256 | 表示使用AES算法的密鑰長度為256bit。 |
HUKS_AES_KEY_SIZE_512 | 512 | 表示使用AES算法的密鑰長度為512bit。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_CURVE25519_KEY_SIZE_256 | 256 | 表示使用CURVE25519算法的密鑰長度為256bit。 |
HUKS_DH_KEY_SIZE_2048 | 2048 | 表示使用DH算法的密鑰長度為2048bit。 |
HUKS_DH_KEY_SIZE_3072 | 3072 | 表示使用DH算法的密鑰長度為3072bit。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_DH_KEY_SIZE_4096 | 4096 | 表示使用DH算法的密鑰長度為4096bit。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_SM2_KEY_SIZE_2569+ | 256 | 表示SM2算法的密鑰長度為256bit。 |
HUKS_SM4_KEY_SIZE_1289+ | 128 | 表示SM4算法的密鑰長度為128bit。 |
表示密鑰使用的算法。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_ALG_RSA | 1 | 表示使用RSA算法。 |
HUKS_ALG_ECC | 2 | 表示使用ECC算法。 |
HUKS_ALG_DSA | 3 | 表示使用DSA算法。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回12000003錯誤碼。 |
HUKS_ALG_AES | 20 | 表示使用AES算法。 |
HUKS_ALG_HMAC | 50 | 表示使用HMAC算法。 |
HUKS_ALG_HKDF | 51 | 表示使用HKDF算法。 |
HUKS_ALG_PBKDF2 | 52 | 表示使用PBKDF2算法。 |
HUKS_ALG_ECDH | 100 | 表示使用ECDH算法。 |
HUKS_ALG_X25519 | 101 | 表示使用X25519算法。 |
HUKS_ALG_ED25519 | 102 | 表示使用ED25519算法。 |
HUKS_ALG_DH | 103 | 表示使用DH算法。 |
HUKS_ALG_SM29+ | 150 | 表示使用SM2算法。 |
HUKS_ALG_SM39+ | 151 | 表示使用SM3算法。 |
HUKS_ALG_SM49+ | 152 | 表示使用SM4算法。 |
表示生成密鑰的類型。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_KEY_GENERATE_TYPE_DEFAULT | 0 | 默認(rèn)生成的密鑰。 |
HUKS_KEY_GENERATE_TYPE_DERIVE | 1 | 派生生成的密鑰。 |
HUKS_KEY_GENERATE_TYPE_AGREE | 2 | 協(xié)商生成的密鑰。 |
表示密鑰的產(chǎn)生方式。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_KEY_FLAG_IMPORT_KEY | 1 | 表示通過導(dǎo)入公鑰接口導(dǎo)入的密鑰。 |
HUKS_KEY_FLAG_GENERATE_KEY | 2 | 表示通過生成密鑰接口生成的密鑰。 |
HUKS_KEY_FLAG_AGREE_KEY | 3 | 表示通過生成密鑰協(xié)商接口生成的密鑰。 |
HUKS_KEY_FLAG_DERIVE_KEY | 4 | 表示通過生成密鑰派生接口生成的密鑰。 |
表示密鑰存儲方式。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_STORAGE_TEMP | 0 | 表示通過本地直接管理密鑰。 |
HUKS_STORAGE_PERSISTENT | 1 | 表示通過HUKS service管理密鑰。 |
表示發(fā)送Tag的方式。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_SEND_TYPE_ASYNC | 0 | 表示異步發(fā)送TAG。 |
HUKS_SEND_TYPE_SYNC | 1 | 表示同步發(fā)送TAG。 |
表示導(dǎo)入加密密鑰的算法套件。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_UNWRAP_SUITE_X25519_AES_256_GCM_NOPADDING | 1 | 導(dǎo)入加密密鑰時,X25519密鑰協(xié)商后使用AES-256 GCM加密。 |
HUKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING | 2 | 導(dǎo)入加密密鑰時,ECDH密鑰協(xié)商后使用AES-256 GCM加密。 |
表示導(dǎo)入密鑰的密鑰類型,默認(rèn)為導(dǎo)入公鑰,導(dǎo)入對稱密鑰時不需要該字段。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_KEY_TYPE_PUBLIC_KEY | 0 | 表示導(dǎo)入的密鑰類型為公鑰。 |
HUKS_KEY_TYPE_PRIVATE_KEY | 1 | 表示導(dǎo)入的密鑰類型為私鑰。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回401錯誤碼。 |
HUKS_KEY_TYPE_KEY_PAIR | 2 | 表示導(dǎo)入的密鑰類型為公私鑰對。 |
表示用戶認(rèn)證類型。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_USER_AUTH_TYPE_FINGERPRINT | 1 << 0 | 表示用戶認(rèn)證類型為指紋。 |
HUKS_USER_AUTH_TYPE_FACE | 1 << 1 | 表示用戶認(rèn)證類型為人臉 。 |
HUKS_USER_AUTH_TYPE_PIN | 1 << 2 | 表示用戶認(rèn)證類型為PIN碼。 說明 當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回801錯誤碼。 |
表示安全訪問控制類型。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_AUTH_ACCESS_INVALID_CLEAR_PASSWORD | 1 << 0 | 表示安全訪問控制類型為清除密碼后密鑰無效。 |
HUKS_AUTH_ACCESS_INVALID_NEW_BIO_ENROLL | 1 << 1 | 表示安全訪問控制類型為新錄入生物特征后密鑰無效。 |
表示密鑰使用時生成challenge的類型。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_CHALLENGE_TYPE_NORMAL | 0 | 表示challenge為普通類型,默認(rèn)32字節(jié)。 |
HUKS_CHALLENGE_TYPE_CUSTOM | 1 | 表示challenge為用戶自定義類型。支持使用多個密鑰僅一次認(rèn)證。 |
HUKS_CHALLENGE_TYPE_NONE | 2 | 表示免challenge類型。 |
表示challenge類型為用戶自定義類型時,生成的challenge有效長度僅為8字節(jié)連續(xù)的數(shù)據(jù),且僅支持4種位置 。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_CHALLENGE_POS_0 | 0 | 表示0~7字節(jié)為當(dāng)前密鑰的有效challenge。 |
HUKS_CHALLENGE_POS_1 | 1 | 表示8~15字節(jié)為當(dāng)前密鑰的有效challenge。 |
HUKS_CHALLENGE_POS_2 | 2 | 表示16~23字節(jié)為當(dāng)前密鑰的有效challenge。 |
HUKS_CHALLENGE_POS_3 | 3 | 表示24~31字節(jié)為當(dāng)前密鑰的有效challenge。 |
表示生成或?qū)朊荑€時,指定該密鑰的簽名類型。
當(dāng)前HarmonyOS設(shè)備均不支持該接口,應(yīng)用調(diào)用時將返回801錯誤碼。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_SECURE_SIGN_WITH_AUTHINFO | 1 | 表示簽名類型為攜帶認(rèn)證信息。生成或?qū)朊荑€時指定該字段,則在使用密鑰進行簽名時,對待簽名的數(shù)據(jù)添加認(rèn)證信息后進行簽名。 |
表示Tag的數(shù)據(jù)類型。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_TAG_TYPE_INVALID | 0 << 28 | 表示非法的Tag類型。 |
HUKS_TAG_TYPE_INT | 1 << 28 | 表示該Tag的數(shù)據(jù)類型為int類型的number。 |
HUKS_TAG_TYPE_UINT | 2 << 28 | 表示該Tag的數(shù)據(jù)類型為uint類型的number。 |
HUKS_TAG_TYPE_ULONG | 3 << 28 | 表示該Tag的數(shù)據(jù)類型為bigint。 |
HUKS_TAG_TYPE_BOOL | 4 << 28 | 表示該Tag的數(shù)據(jù)類型為boolean。 |
HUKS_TAG_TYPE_BYTES | 5 << 28 | 表示該Tag的數(shù)據(jù)類型為Uint8Array。 |
表示調(diào)用參數(shù)的Tag。
系統(tǒng)能力:SystemCapability.Security.Huks
名稱 | 值 | 說明 |
---|---|---|
HUKS_TAG_INVALID | HuksTagType.HUKS_TAG_TYPE_INVALID | 0 | 表示非法的Tag。 |
HUKS_TAG_ALGORITHM | HuksTagType.HUKS_TAG_TYPE_UINT | 1 | 表示算法的Tag。 |
HUKS_TAG_PURPOSE | HuksTagType.HUKS_TAG_TYPE_UINT | 2 | 表示密鑰用途的Tag。 |
HUKS_TAG_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT | 3 | 表示密鑰長度的Tag。 |
HUKS_TAG_DIGEST | HuksTagType.HUKS_TAG_TYPE_UINT | 4 | 表示摘要算法的Tag。 |
HUKS_TAG_PADDING | HuksTagType.HUKS_TAG_TYPE_UINT | 5 | 表示補齊算法的Tag。 |
HUKS_TAG_BLOCK_MODE | HuksTagType.HUKS_TAG_TYPE_UINT | 6 | 表示加密模式的Tag。 |
HUKS_TAG_KEY_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 7 | 表示密鑰類型的Tag。 |
HUKS_TAG_ASSOCIATED_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 8 | 表示附加身份驗證數(shù)據(jù)的Tag。 |
HUKS_TAG_NONCE | HuksTagType.HUKS_TAG_TYPE_BYTES | 9 | 表示密鑰加解密的字段。 |
HUKS_TAG_IV | HuksTagType.HUKS_TAG_TYPE_BYTES | 10 | 表示密鑰初始化的向量。 |
HUKS_TAG_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES | 11 | 表示密鑰派生時的info。 |
HUKS_TAG_SALT | HuksTagType.HUKS_TAG_TYPE_BYTES | 12 | 表示密鑰派生時的鹽值。 |
HUKS_TAG_PWD | HuksTagType.HUKS_TAG_TYPE_BYTES | 13 | 表示密鑰派生時的password。 |
HUKS_TAG_ITERATION | HuksTagType.HUKS_TAG_TYPE_UINT | 14 | 表示密鑰派生時的迭代次數(shù)。 |
HUKS_TAG_KEY_GENERATE_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 15 | 表示生成密鑰類型的Tag。 |
HUKS_TAG_DERIVE_MAIN_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES | 16 | 表示密鑰派生時的主密鑰。 |
HUKS_TAG_DERIVE_FACTOR | HuksTagType.HUKS_TAG_TYPE_BYTES | 17 | 表示密鑰派生時的派生因子。 |
HUKS_TAG_DERIVE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT | 18 | 表示密鑰派生時的算法類型。 |
HUKS_TAG_AGREE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT | 19 | 表示密鑰協(xié)商時的算法類型。 |
HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL | 20 | 表示密鑰協(xié)商時的公鑰別名。 |
HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES | 21 | 表示密鑰協(xié)商時的私鑰別名。 |
HUKS_TAG_AGREE_PUBLIC_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES | 22 | 表示密鑰協(xié)商時的公鑰。 |
HUKS_TAG_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES | 23 | 表示密鑰別名。 |
HUKS_TAG_DERIVE_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT | 24 | 表示派生密鑰的大小。 |
HUKS_TAG_IMPORT_KEY_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT | 25 | 表示導(dǎo)入的密鑰類型。 |
HUKS_TAG_UNWRAP_ALGORITHM_SUITE9+ | HuksTagType.HUKS_TAG_TYPE_UINT | 26 | 表示導(dǎo)入加密密鑰的套件。 |
HUKS_TAG_ACTIVE_DATETIME(deprecated) | HuksTagType.HUKS_TAG_TYPE_ULONG | 201 | 原為證書業(yè)務(wù)預(yù)留字段,當(dāng)前證書管理已獨立,此字段廢棄,不再預(yù)留。 |
HUKS_TAG_ORIGINATION_EXPIRE_DATETIME(deprecated) | HuksTagType.HUKS_TAG_TYPE_ULONG | 202 | 原為證書業(yè)務(wù)預(yù)留字段,當(dāng)前證書管理已獨立,此字段廢棄,不再預(yù)留。 |
HUKS_TAG_USAGE_EXPIRE_DATETIME(deprecated) | HuksTagType.HUKS_TAG_TYPE_ULONG | 203 | 原為證書業(yè)務(wù)預(yù)留字段,當(dāng)前證書管理已獨立,此字段廢棄,不再預(yù)留。 |
HUKS_TAG_CREATION_DATETIME(deprecated) | HuksTagType.HUKS_TAG_TYPE_ULONG | 204 | 原為證書業(yè)務(wù)預(yù)留字段,當(dāng)前證書管理已獨立,此字段廢棄,不再預(yù)留。 |
HUKS_TAG_ALL_USERS | HuksTagType.HUKS_TAG_TYPE_BOOL | 301 | 預(yù)留字段。 |
HUKS_TAG_USER_ID | HuksTagType.HUKS_TAG_TYPE_UINT | 302 | 表示當(dāng)前密鑰屬于哪個userID。 |
HUKS_TAG_NO_AUTH_REQUIRED | HuksTagType.HUKS_TAG_TYPE_BOOL | 303 | 預(yù)留字段。 |
HUKS_TAG_USER_AUTH_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 304 | 表示用戶認(rèn)證類型。從HuksUserAuthType中選擇,需要與安全訪問控制類型同時設(shè)置。支持同時指定兩種用戶認(rèn)證類型,如:安全訪問控制類型指定為HUKS_SECURE_ACCESS_INVALID_NEW_BIO_ENROLL時,密鑰訪問認(rèn)證類型可以指定以下三種: HUKS_USER_AUTH_TYPE_FACE 、HUKS_USER_AUTH_TYPE_FINGERPRINT、HUKS_USER_AUTH_TYPE_FACE | HUKS_USER_AUTH_TYPE_FINGERPRINT |
HUKS_TAG_AUTH_TIMEOUT | HuksTagType.HUKS_TAG_TYPE_UINT | 305 | 表示authtoken單次有效期。 |
HUKS_TAG_AUTH_TOKEN | HuksTagType.HUKS_TAG_TYPE_BYTES | 306 | 用于傳入authToken的字段。 |
HUKS_TAG_KEY_AUTH_ACCESS_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT | 307 | 表示安全訪問控制類型。從HuksAuthAccessType中選擇,需要和用戶認(rèn)證類型同時設(shè)置。 |
HUKS_TAG_KEY_SECURE_SIGN_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT | 308 | 表示生成或?qū)朊荑€時,指定該密鑰的簽名類型。 |
HUKS_TAG_CHALLENGE_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT | 309 | 表示密鑰使用時生成的challenge類型。從HuksChallengeType中選擇 |
HUKS_TAG_CHALLENGE_POS9+ | HuksTagType.HUKS_TAG_TYPE_UINT | 310 | 表示challenge類型為用戶自定義類型時,huks產(chǎn)生的challenge有效長度僅為8字節(jié)連續(xù)的數(shù)據(jù)。從HuksChallengePosition中選擇。 |
HUKS_TAG_ATTESTATION_CHALLENGE | HuksTagType.HUKS_TAG_TYPE_BYTES | 501 | 表示attestation時的挑戰(zhàn)值。 |
HUKS_TAG_ATTESTATION_APPLICATION_ID | HuksTagType.HUKS_TAG_TYPE_BYTES | 502 | 表示attestation時擁有該密鑰的application的Id。 |
HUKS_TAG_ATTESTATION_ID_BRAND | HuksTagType.HUKS_TAG_TYPE_BYTES | 503 | 表示設(shè)備的品牌。 |
HUKS_TAG_ATTESTATION_ID_DEVICE | HuksTagType.HUKS_TAG_TYPE_BYTES | 504 | 表示設(shè)備的設(shè)備ID。 |
HUKS_TAG_ATTESTATION_ID_PRODUCT | HuksTagType.HUKS_TAG_TYPE_BYTES | 505 | 表示設(shè)備的產(chǎn)品名。 |
HUKS_TAG_ATTESTATION_ID_SERIAL | HuksTagType.HUKS_TAG_TYPE_BYTES | 506 | 表示設(shè)備的SN號。 |
HUKS_TAG_ATTESTATION_ID_IMEI | HuksTagType.HUKS_TAG_TYPE_BYTES | 507 | 表示設(shè)備的IMEI號。 |
HUKS_TAG_ATTESTATION_ID_MEID | HuksTagType.HUKS_TAG_TYPE_BYTES | 508 | 表示設(shè)備的MEID號。 |
HUKS_TAG_ATTESTATION_ID_MANUFACTURER | HuksTagType.HUKS_TAG_TYPE_BYTES | 509 | 表示設(shè)備的制造商。 |
HUKS_TAG_ATTESTATION_ID_MODEL | HuksTagType.HUKS_TAG_TYPE_BYTES | 510 | 表示設(shè)備的型號。 |
HUKS_TAG_ATTESTATION_ID_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES | 511 | 表示attestation時的密鑰別名。 |
HUKS_TAG_ATTESTATION_ID_SOCID | HuksTagType.HUKS_TAG_TYPE_BYTES | 512 | 表示設(shè)備的SOCID。 |
HUKS_TAG_ATTESTATION_ID_UDID | HuksTagType.HUKS_TAG_TYPE_BYTES | 513 | 表示設(shè)備的UDID。 |
HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES | 514 | 表示attestation時的安全憑據(jù)。 |
HUKS_TAG_ATTESTATION_ID_VERSION_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES | 515 | 表示attestation時的版本號。 |
HUKS_TAG_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL | 1001 | 表示是否使用生成key時傳入的別名的Tag。 |
HUKS_TAG_KEY_STORAGE_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT | 1002 | 表示密鑰存儲方式的Tag。 |
HUKS_TAG_IS_ALLOWED_WRAP | HuksTagType.HUKS_TAG_TYPE_BOOL | 1003 | 預(yù)留字段。 |
HUKS_TAG_KEY_WRAP_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 1004 | 預(yù)留字段。 |
HUKS_TAG_KEY_AUTH_ID | HuksTagType.HUKS_TAG_TYPE_BYTES | 1005 | 預(yù)留字段。 |
HUKS_TAG_KEY_ROLE | HuksTagType.HUKS_TAG_TYPE_UINT | 1006 | 預(yù)留字段。 |
HUKS_TAG_KEY_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT | 1007 | 表示密鑰標(biāo)志的Tag。 |
HUKS_TAG_IS_ASYNCHRONIZED | HuksTagType.HUKS_TAG_TYPE_UINT | 1008 | 預(yù)留字段。 |
HUKS_TAG_SECURE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL | 1009 | 用于傳入GCM模式中的AEAD數(shù)據(jù)的字段。 |
HUKS_TAG_SECURE_KEY_UUID | HuksTagType.HUKS_TAG_TYPE_BYTES | 1010 | 預(yù)留字段。 |
HUKS_TAG_KEY_DOMAIN | HuksTagType.HUKS_TAG_TYPE_UINT | 1011 | 預(yù)留字段。 |
HUKS_TAG_PROCESS_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES | 10001 | 表示進程名稱的Tag。 |
HUKS_TAG_PACKAGE_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES | 10002 | 預(yù)留字段。 |
HUKS_TAG_ACCESS_TIME | HuksTagType.HUKS_TAG_TYPE_UINT | 10003 | 預(yù)留字段。 |
HUKS_TAG_USES_TIME | HuksTagType.HUKS_TAG_TYPE_UINT | 10004 | 預(yù)留字段。 |
HUKS_TAG_CRYPTO_CTX | HuksTagType.HUKS_TAG_TYPE_ULONG | 10005 | 預(yù)留字段。 |
HUKS_TAG_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES | 10006 | 預(yù)留字段。 |
HUKS_TAG_KEY_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT | 10007 | 表示密鑰版本的Tag。 |
HUKS_TAG_PAYLOAD_LEN | HuksTagType.HUKS_TAG_TYPE_UINT | 10008 | 預(yù)留字段。 |
HUKS_TAG_AE_TAG | HuksTagType.HUKS_TAG_TYPE_BYTES | 10009 | 預(yù)留字段。 |
HUKS_TAG_IS_KEY_HANDLE | HuksTagType.HUKS_TAG_TYPE_ULONG | 10010 | 預(yù)留字段。 |
HUKS_TAG_OS_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT | 10101 | 表示操作系統(tǒng)版本的Tag。 |
HUKS_TAG_OS_PATCHLEVEL | HuksTagType.HUKS_TAG_TYPE_UINT | 10102 | 表示操作系統(tǒng)補丁級別的Tag。 |
HUKS_TAG_SYMMETRIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 20001 | 預(yù)留字段。 |
HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 20002 | 預(yù)留字段。 |
HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 20003 | 預(yù)留字段。 |
generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
生成密鑰,使用Callback回調(diào)異步返回結(jié)果。
從API Version 9開始廢棄,建議使用huks.generateKeyItem替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 別名。 |
options | 是 | 用于存放生成key所需TAG。 | |
callback | AsyncCallback<HuksResult> | 是 | 回調(diào)函數(shù)。返回HUKS_SUCCESS時表示接口使用成功,其余結(jié)果請參考HuksResult進行錯誤碼查詢。 |
示例:
- /* 以生成RSA2048密鑰為例 */
- let keyAlias = 'keyAlias';
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_RSA
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value:
- huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT |
- huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_PADDING,
- value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
- };
- properties[4] = {
- tag: huks.HuksTag.HUKS_TAG_DIGEST,
- value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
- };
- let options = {
- properties: properties
- };
- huks.generateKey(keyAlias, options, function (err, data){});
generateKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>
生成密鑰,使用Promise方式異步返回結(jié)果。
從API Version 9開始廢棄,建議使用huks.generateKeyItem替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名。 |
options | 是 | 用于存放生成key所需TAG。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksResult> | Promise對象。返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。 |
示例:
- /* 以生成ECC256密鑰為例 */
- let keyAlias = 'keyAlias';
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_ECC
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value:
- huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN |
- huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_DIGEST,
- value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
- };
- let options = {
- properties: properties
- };
- let result = huks.generateKey(keyAlias, options);
deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
刪除密鑰,使用Callback回調(diào)異步返回結(jié)果。
從API Version 9開始廢棄,建議使用huks.deleteKeyItem替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應(yīng)為生成key時傳入的別名。 |
options | 是 | 空對象(此處傳空即可)。 | |
callback | AsyncCallback<HuksResult> | 是 | 回調(diào)函數(shù)。返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。 |
示例:
- /* 此處options選擇emptyOptions傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- huks.deleteKey(keyAlias, emptyOptions, function (err, data) {});
deleteKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>
刪除密鑰,使用Promise方式異步返回結(jié)果。
從API Version 9開始廢棄,建議使用huks.deleteKeyItem替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應(yīng)為生成key時傳入的別名。 |
options | 是 | 空對象(此處傳空即可)。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksResult> | Promise對象。返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。 |
示例:
- /* 此處options選擇emptyOptions傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- let result = huks.deleteKey(keyAlias, emptyOptions);
importKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
導(dǎo)入明文密鑰,使用Callback方式回調(diào)異步返回結(jié)果 。
從API Version 9開始廢棄,建議使用huks.importKeyItem替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名。 |
options | 是 | 用于導(dǎo)入時所需TAG和需要導(dǎo)入的密鑰。 | |
callback | AsyncCallback<HuksResult> | 是 | 回調(diào)函數(shù)。返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。 |
示例:
- /* 以導(dǎo)入AES256密鑰為例 */
- let plainTextSize32 = makeRandomArr(32);
- function makeRandomArr(size) {
- let arr = new Uint8Array(size);
- for (let i = 0; i < size; i++) {
- arr[i] = Math.floor(Math.random() * 10);
- }
- return arr;
- };
- let keyAlias = 'keyAlias';
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_AES
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value:
- huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_PADDING,
- value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7
- };
- properties[4] = {
- tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
- value: huks.HuksCipherMode.HUKS_MODE_CBC
- };
- let options = {
- properties: properties,
- inData: plainTextSize32
- };
- huks.importKey(keyAlias, options, function (err, data){});
importKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>
導(dǎo)入明文密鑰,使用Promise方式異步返回結(jié)果。
從API Version 9開始廢棄,建議使用huks.importKeyItem替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名。 |
options | 是 | 用于導(dǎo)入時所需TAG和需要導(dǎo)入的密鑰。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksResult> | Promise對象。返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。 |
示例:
- /* 以導(dǎo)入AES128為例 */
- let plainTextSize32 = makeRandomArr(32);
- function makeRandomArr(size) {
- let arr = new Uint8Array(size);
- for (let i = 0; i < size; i++) {
- arr[i] = Math.floor(Math.random() * 10);
- }
- return arr;
- };
- /*第一步:生成密鑰*/
- let keyAlias = 'keyAlias';
- let properties = new Array();
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_AES
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_PADDING,
- value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7
- };
- properties[4] = {
- tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
- value: huks.HuksCipherMode.HUKS_MODE_CBC
- };
- let huksoptions = {
- properties: properties,
- inData: plainTextSize32
- };
- let result = huks.importKey(keyAlias, huksoptions);
exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
導(dǎo)出密鑰,使用Callback方式回調(diào)異步返回的結(jié)果。
從API Version 9開始廢棄,建議使用huks.exportKeyItem替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應(yīng)與所用密鑰生成時使用的別名相同。 |
options | 是 | 空對象(此處傳空即可)。 | |
callback | AsyncCallback<HuksResult> | 是 | 回調(diào)函數(shù)。返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。outData:返回從密鑰中導(dǎo)出的公鑰。 |
示例:
- /* 此處options選擇emptyOptions來傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- huks.exportKey(keyAlias, emptyOptions, function (err, data){});
exportKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>
導(dǎo)出密鑰,使用Promise方式回調(diào)異步返回的結(jié)果。
從API Version 9開始廢棄,建議使用huks.exportKeyItem替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應(yīng)與所用密鑰生成時使用的別名相同。 |
options | 是 | 空對象(此處傳空即可)。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksResult> | Promise對象。返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。outData:返回從密鑰中導(dǎo)出的公鑰。 |
示例:
- /* 此處options選擇emptyOptions來傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- let result = huks.exportKey(keyAlias, emptyOptions);
getKeyProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
獲取密鑰屬性,使用Callback回調(diào)異步返回結(jié)果。
從API Version 9開始廢棄,建議使用huks.getKeyItemProperties替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應(yīng)與所用密鑰生成時使用的別名相同。 |
options | 是 | 空對象(此處傳空即可)。 | |
callback | AsyncCallback<HuksResult> | 是 | 回調(diào)函數(shù)。errorCode:返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。 |
示例:
- /* 此處options選擇emptyOptions來傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- huks.getKeyProperties(keyAlias, emptyOptions, function (err, data){});
getKeyProperties(keyAlias: string, options: HuksOptions) : Promise<HuksResult>
獲取密鑰屬性,使用Promise回調(diào)異步返回結(jié)果。
從API Version 9開始廢棄,建議使用huks.getKeyItemProperties替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應(yīng)與所用密鑰生成時使用的別名相同。 |
options | 是 | 空對象(此處傳空即可)。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksResult> | Promise對象。errorCode:返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。properties:返回值為生成密鑰時所需參數(shù)。 |
示例:
- /* 此處options選擇emptyOptions來傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- let result = huks.getKeyProperties(keyAlias, emptyOptions);
isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback<boolean>) : void
判斷密鑰是否存在,使用Callback回調(diào)異步返回結(jié)果 。
從API Version 9開始廢棄,建議使用huks.isKeyItemExist替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 所需查找的密鑰的別名。 |
options | 是 | 空對象(此處傳空即可)。 | |
callback | AsyncCallback<boolean> | 是 | 回調(diào)函數(shù)。FALSE代表密鑰不存在,TRUE代表密鑰存在。 |
示例:
- /* 此處options選擇emptyOptions來傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- huks.isKeyExist(keyAlias, emptyOptions, function (err, data){});
isKeyExist(keyAlias: string, options: HuksOptions) : Promise<boolean>
判斷密鑰是否存在,使用Promise回調(diào)異步返回結(jié)果 。
從API Version 9開始廢棄,建議使用huks.isKeyItemExist替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 所需查找的密鑰的別名。 |
options | 是 | 空對象(此處傳空即可)。 |
返回值:
類型 | 說明 |
---|---|
Promise<boolean> | Promise對象。FALSE代表密鑰不存在,TRUE代表密鑰存在。 |
示例:
- /* 此處options選擇emptyOptions來傳空 */
- let keyAlias = 'keyAlias';
- let emptyOptions = {
- properties: []
- };
- let result = huks.isKeyExist(keyAlias, emptyOptions);
init(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksHandle>) : void
init操作密鑰接口,使用Callback回調(diào)異步返回結(jié)果。huks.init, huks.update, huks.finish為三段式接口,需要一起使用。
從API Version 9開始廢棄,建議使用huks.initSession替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | Init操作密鑰的別名。 |
options | 是 | Init操作的參數(shù)集合。 | |
callback | AsyncCallback<HuksHandle> | 是 | 回調(diào)函數(shù)。將Init操作操作返回的handle添加到密鑰管理系統(tǒng)的回調(diào)。 |
init(keyAlias: string, options: HuksOptions) : Promise<HuksHandle>
init操作密鑰接口,使用Promise方式異步返回結(jié)果。huks.init, huks.update, huks.finish為三段式接口,需要一起使用。
從API Version 9開始廢棄,建議使用huks.initSession替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | Init操作密鑰的別名。 |
options | 是 | Init參數(shù)集合。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksHandle> | Promise對象。將Init操作返回的handle添加到密鑰管理系統(tǒng)的回調(diào)。 |
update(handle: number, token?: Uint8Array, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
update操作密鑰接口,使用Callback回調(diào)異步返回結(jié)果。huks.init, huks.update, huks.finish為三段式接口,需要一起使用。
從API Version 9開始廢棄,建議使用huks.updateSession替代。
系統(tǒng)能力: SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | Update操作的handle。 |
token | Uint8Array | 否 | Update操作的token。 |
options | 是 | Update操作的參數(shù)集合。 | |
callback | AsyncCallback<HuksResult> | 是 | 回調(diào)函數(shù)。將Update操作的結(jié)果添加到密鑰管理系統(tǒng)的回調(diào)。 |
update(handle: number, token?: Uint8Array, options: HuksOptions) : Promise<HuksResult>;
update操作密鑰接口,使用Promise方式異步返回結(jié)果。huks.init, huks.update, huks.finish為三段式接口,需要一起使用。
從API Version 9開始廢棄,建議使用huks.updateSession替代。
系統(tǒng)能力: SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | Update操作的handle。 |
token | Uint8Array | 否 | Update操作的token。 |
options | 是 | Update操作的參數(shù)集合。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksResult> | Promise對象。將Update操作的結(jié)果添加到密鑰管理系統(tǒng)的回調(diào)。 |
finish(handle: number, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
finish操作密鑰接口,使用Callback回調(diào)異步返回結(jié)果。huks.init, huks.update, huks.finish為三段式接口,需要一起使用。
從API Version 9開始廢棄,建議使用huks.finishSession替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | Finish操作的handle。 |
options | 是 | Finish的參數(shù)集合。 | |
callback | AsyncCallback<HuksResult> | 是 | 回調(diào)函數(shù)。將Finish操作的結(jié)果添加到密鑰管理系統(tǒng)的回調(diào)。 |
finish(handle: number, options: HuksOptions) : Promise<HuksResult>
finish操作密鑰接口,使用Promise方式異步返回結(jié)果。huks.init, huks.update, huks.finish為三段式接口,需要一起使用。
從API Version 9開始廢棄,建議使用huks.finishSession替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | Finish操作的handle。 |
options | 是 | Finish操作的參數(shù)集合。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksResult> | Promise對象,用于獲取異步返回結(jié)果。 |
abort(handle: number, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
abort操作密鑰接口,使用Callback回調(diào)異步返回結(jié)果。
從API Version 9開始廢棄,建議使用huks.abortSession替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | Abort操作的handle。 |
options | 是 | Abort操作的參數(shù)集合。 | |
callback | AsyncCallback<HuksResult> | 是 | 回調(diào)函數(shù)。將Abort操作的結(jié)果添加到密鑰管理系統(tǒng)的回調(diào)。 |
示例:
- /* huks.init, huks.update, huks.finish為三段式接口,需要一起使用,當(dāng)huks.init和huks.update
- * 以及huks.finish操作中的任一階段發(fā)生錯誤時,都需要調(diào)用huks.abort來終止密鑰的使用。
- *
- * 以下以RSA2048密鑰的callback操作使用為例
- */
- let keyalias = "HuksDemoRSA";
- let properties = new Array();
- let options = {
- properties: properties,
- inData: new Uint8Array(0)
- };
- let handle;
- let resultMessage = "";
- async function generateKey() {
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_RSA
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_PADDING,
- value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
- };
- properties[4] = {
- tag: huks.HuksTag.HUKS_TAG_DIGEST,
- value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
- };
- huks.generateKey(keyalias, options);
- }
- function stringToUint8Array(str) {
- let arr = [];
- for (let i = 0, j = str.length; i < j; ++i) {
- arr.push(str.charCodeAt(i));
- }
- let tmpUint8Array = new Uint8Array(arr);
- return tmpUint8Array;
- }
- async function huksInit() {
- await huks.init(keyalias, options).then((data) => {
- console.log(`test init data: ${JSON.stringify(data)}`);
- handle = data.handle;
- }).catch((err) => {
- console.log("test init err information: " + JSON.stringify(err))
- })
- }
- async function huksUpdate() {
- options.inData = stringToUint8Array("huksHmacTest");
- await huks.update(handle, options).then((data) => {
- if (data.errorCode === 0) {
- resultMessage += "update success!";
- } else {
- resultMessage += "update fail!";
- }
- });
- console.log(resultMessage);
- }
- function huksFinish() {
- options.inData = stringToUint8Array("HuksDemoHMAC");
- huks.finish(handle, options).then((data) => {
- if (data.errorCode === 0) {
- resultMessage = "finish success!";
- } else {
- resultMessage = "finish fail errorCode: " + data.errorCode;
- }
- }).catch((err) => {
- resultMessage = "finish fail, catch errorMessage:" + JSON.stringify(err)
- });
- console.log(resultMessage);
- }
- async function huksAbort() {
- huks.abort(handle, options).then((data) => {
- if (data.errorCode === 0) {
- resultMessage = "abort success!";
- } else {
- resultMessage = "abort fail errorCode: " + data.errorCode;
- }
- }).catch((err) => {
- resultMessage = "abort fail, catch errorMessage:" + JSON.stringify(err)
- });
- console.log(resultMessage);
- }
abort(handle: number, options: HuksOptions) : Promise<HuksResult>;
abort操作密鑰接口,使用Promise方式異步返回結(jié)果。
從API Version 9開始廢棄,建議使用huks.abortSession替代。
系統(tǒng)能力:SystemCapability.Security.Huks
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | Abort操作的handle。 |
options | 是 | Abort操作的參數(shù)集合。 |
返回值:
類型 | 說明 |
---|---|
Promise<HuksResult> | Promise對象。將Abort操作的結(jié)果添加到密鑰管理系統(tǒng)的回調(diào)。 |
示例:
- /* huks.init, huks.update, huks.finish為三段式接口,需要一起使用,當(dāng)huks.init和huks.update
- * 以及huks.finish操作中的任一階段發(fā)生錯誤時,都需要調(diào)用huks.abort來終止密鑰的使用。
- *
- * 以下以RSA2048密鑰的promise操作使用為例
- */
- let keyalias = "HuksDemoRSA";
- let properties = new Array();
- let options = {
- properties: properties,
- inData: new Uint8Array(0)
- };
- let handle;
- let resultMessage = "";
- function stringToUint8Array(str) {
- let arr = [];
- for (let i = 0, j = str.length; i < j; ++i) {
- arr.push(str.charCodeAt(i));
- }
- let tmpUint8Array = new Uint8Array(arr);
- return tmpUint8Array;
- }
- async function generateKey() {
- properties[0] = {
- tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
- value: huks.HuksKeyAlg.HUKS_ALG_RSA
- };
- properties[1] = {
- tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
- value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048
- };
- properties[2] = {
- tag: huks.HuksTag.HUKS_TAG_PURPOSE,
- value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
- };
- properties[3] = {
- tag: huks.HuksTag.HUKS_TAG_PADDING,
- value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
- };
- properties[4] = {
- tag: huks.HuksTag.HUKS_TAG_DIGEST,
- value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
- };
- huks.generateKey(keyalias, options, function (err, data) { });
- }
- async function huksInit() {
- return new Promise((resolve, reject) => {
- huks.init(keyalias, options, async function (err, data) {
- if (data.errorCode === 0) {
- resultMessage = "init success!"
- handle = data.handle;
- } else {
- resultMessage = "init fail errorCode: " + data.errorCode
- }
- });
- });
- }
- async function huksUpdate() {
- options.inData = stringToUint8Array("huksHmacTest");
- new Promise((resolve, reject) => {
- huks.update(handle, options, function (err, data) {
- if (data.errorCode === 0) {
- resultMessage += "update success!";
- } else {
- resultMessage += "update fail!";
- }
- });
- });
- console.log(resultMessage);
- }
- async function huksFinish() {
- options.inData = stringToUint8Array("0");
- new Promise((resolve, reject) => {
- huks.finish(handle, options, function (err, data) {
- if (data.errorCode === 0) {
- resultMessage = "finish success!";
- } else {
- resultMessage = "finish fail errorCode: " + data.errorCode;
- }
- });
- });
- }
- function huksAbort() {
- new Promise((resolve, reject) => {
- huks.abort(handle, options, function (err, data) {
- console.log(`Huks_Demo hmac huksAbort1 data ${JSON.stringify(data)}`);
- console.log(`Huks_Demo hmac huksAbort1 err ${JSON.stringify(err)}`);
- });
- });
- }
huks Handle結(jié)構(gòu)體。
系統(tǒng)能力:SystemCapability.Security.Huks
從API Version 9開始廢棄,建議使用HuksSessionHandle9+替代。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
errorCode | number | 是 | 表示錯誤碼。 |
handle | number | 是 | 表示handle值。 |
token | Uint8Array | 否 | 表示init操作之后獲取到的challenge信息。 |
調(diào)用接口返回的result。
系統(tǒng)能力:SystemCapability.Security.Huks
從API Version 9開始廢棄,建議使用HuksReturnResult9+替代。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
errorCode | number | 是 | 表示錯誤碼。 |
outData | Uint8Array | 否 | 表示輸出數(shù)據(jù)。 |
properties | Array<HuksParam> | 否 | 表示屬性信息。 |
certChains | Array<string> | 否 | 表示證書鏈數(shù)據(jù)。 |
表示錯誤碼的枚舉。
系統(tǒng)能力:SystemCapability.Security.Huks
從API Version 9開始廢棄,建議使用HuksExceptionErrCode9+替代。
名稱 | 值 | 說明 |
---|---|---|
HUKS_SUCCESS | 0 | 表示成功。 |
HUKS_FAILURE | -1 | 表示失敗。 |
HUKS_ERROR_BAD_STATE | -2 | 表示錯誤的狀態(tài)。 |
HUKS_ERROR_INVALID_ARGUMENT | -3 | 表示無效的數(shù)據(jù)。 |
HUKS_ERROR_NOT_SUPPORTED | -4 | 表示不支持。 |
HUKS_ERROR_NO_PERMISSION | -5 | 表示沒有許可。 |
HUKS_ERROR_INSUFFICIENT_DATA | -6 | 表示數(shù)據(jù)不足。 |
HUKS_ERROR_BUFFER_TOO_SMALL | -7 | 表示緩沖區(qū)太小。 |
HUKS_ERROR_INSUFFICIENT_MEMORY | -8 | 表示內(nèi)存不足。 |
HUKS_ERROR_COMMUNICATION_FAILURE | -9 | 表示通訊失敗。 |
HUKS_ERROR_STORAGE_FAILURE | -10 | 表示存儲故障。 |
HUKS_ERROR_HARDWARE_FAILURE | -11 | 表示硬件故障。 |
HUKS_ERROR_ALREADY_EXISTS | -12 | 表示已經(jīng)存在。 |
HUKS_ERROR_NOT_EXIST | -13 | 表示不存在。 |
HUKS_ERROR_NULL_POINTER | -14 | 表示空指針。 |
HUKS_ERROR_FILE_SIZE_FAIL | -15 | 表示文件大小失敗。 |
HUKS_ERROR_READ_FILE_FAIL | -16 | 表示讀取文件失敗。 |
HUKS_ERROR_INVALID_PUBLIC_KEY | -17 | 表示無效的公鑰。 |
HUKS_ERROR_INVALID_PRIVATE_KEY | -18 | 表示無效的私鑰。 |
HUKS_ERROR_INVALID_KEY_INFO | -19 | 表示無效的密鑰信息。 |
HUKS_ERROR_HASH_NOT_EQUAL | -20 | 表示哈希不相等。 |
HUKS_ERROR_MALLOC_FAIL | -21 | 表示MALLOC 失敗。 |
HUKS_ERROR_WRITE_FILE_FAIL | -22 | 表示寫文件失敗。 |
HUKS_ERROR_REMOVE_FILE_FAIL | -23 | 表示刪除文件失敗。 |
HUKS_ERROR_OPEN_FILE_FAIL | -24 | 表示打開文件失敗。 |
HUKS_ERROR_CLOSE_FILE_FAIL | -25 | 表示關(guān)閉文件失敗。 |
HUKS_ERROR_MAKE_DIR_FAIL | -26 | 表示創(chuàng)建目錄失敗。 |
HUKS_ERROR_INVALID_KEY_FILE | -27 | 表示無效的密鑰文件。 |
HUKS_ERROR_IPC_MSG_FAIL | -28 | 表示IPC 信息失敗。 |
HUKS_ERROR_REQUEST_OVERFLOWS | -29 | 表示請求溢出。 |
HUKS_ERROR_PARAM_NOT_EXIST | -30 | 表示參數(shù)不存在。 |
HUKS_ERROR_CRYPTO_ENGINE_ERROR | -31 | 表示CRYPTO ENGINE錯誤。 |
HUKS_ERROR_COMMUNICATION_TIMEOUT | -32 | 表示通訊超時。 |
HUKS_ERROR_IPC_INIT_FAIL | -33 | 表示IPC 初始化失敗。 |
HUKS_ERROR_IPC_DLOPEN_FAIL | -34 | 表示IPC DLOPEN 失敗。 |
HUKS_ERROR_EFUSE_READ_FAIL | -35 | 表示EFUSE 讀取失敗。 |
HUKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST | -36 | 表示存在新的根密鑰材料。 |
HUKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL | -37 | 表示更新根密鑰材料失敗。 |
HUKS_ERROR_VERIFICATION_FAILED | -38 | 表示驗證證書鏈?zhǔn) ?/p> |
HUKS_ERROR_CHECK_GET_ALG_FAIL | -100 | 表示檢查獲取 ALG 失敗。 |
HUKS_ERROR_CHECK_GET_KEY_SIZE_FAIL | -101 | 表示檢查獲取密鑰大小失敗。 |
HUKS_ERROR_CHECK_GET_PADDING_FAIL | -102 | 表示檢查獲取填充失敗。 |
HUKS_ERROR_CHECK_GET_PURPOSE_FAIL | -103 | 表示檢查獲取目的失敗。 |
HUKS_ERROR_CHECK_GET_DIGEST_FAIL | -104 | 表示檢查獲取摘要失敗。 |
HUKS_ERROR_CHECK_GET_MODE_FAIL | -105 | 表示檢查獲取模式失敗。 |
HUKS_ERROR_CHECK_GET_NONCE_FAIL | -106 | 表示檢查獲取隨機數(shù)失敗。 |
HUKS_ERROR_CHECK_GET_AAD_FAIL | -107 | 表示檢查獲取 AAD 失敗。 |
HUKS_ERROR_CHECK_GET_IV_FAIL | -108 | 表示檢查 GET IV 失敗。 |
HUKS_ERROR_CHECK_GET_AE_TAG_FAIL | -109 | 表示檢查獲取 AE 標(biāo)記失敗。 |
HUKS_ERROR_CHECK_GET_SALT_FAIL | -110 | 表示檢查獲取SALT失敗。 |
HUKS_ERROR_CHECK_GET_ITERATION_FAIL | -111 | 表示檢查獲取迭代失敗。 |
HUKS_ERROR_INVALID_ALGORITHM | -112 | 表示無效的算法。 |
HUKS_ERROR_INVALID_KEY_SIZE | -113 | 表示無效的密鑰大小。 |
HUKS_ERROR_INVALID_PADDING | -114 | 表示無效的填充。 |
HUKS_ERROR_INVALID_PURPOSE | -115 | 表示無效的目的。 |
HUKS_ERROR_INVALID_MODE | -116 | 表示無效模式。 |
HUKS_ERROR_INVALID_DIGEST | -117 | 表示無效的摘要。 |
HUKS_ERROR_INVALID_SIGNATURE_SIZE | -118 | 表示簽名大小無效。 |
HUKS_ERROR_INVALID_IV | -119 | 表示無效的 IV。 |
HUKS_ERROR_INVALID_AAD | -120 | 表示無效的 AAD。 |
HUKS_ERROR_INVALID_NONCE | -121 | 表示無效的隨機數(shù)。 |
HUKS_ERROR_INVALID_AE_TAG | -122 | 表示無效的 AE 標(biāo)簽。 |
HUKS_ERROR_INVALID_SALT | -123 | 表示無效SALT。 |
HUKS_ERROR_INVALID_ITERATION | -124 | 表示無效的迭代。 |
HUKS_ERROR_INVALID_OPERATION | -125 | 表示無效操作。 |
HUKS_ERROR_INTERNAL_ERROR | -999 | 表示內(nèi)部錯誤。 |
HUKS_ERROR_UNKNOWN_ERROR | -1000 | 表示未知錯誤。 |
更多建議: