@ohos.security.huks (HUKS)
The HUKS module provides KeyStore (KS) capabilities for applications, including key management and key cryptography operations. The keys managed by OpenHarmony Universal KeyStore (HUKS) can be imported by applications or generated by calling the HUKS APIs.
NOTE
The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version.
Modules to Import
import huks from '@ohos.security.huks'
HuksParam
Defines the param in the properties array of options used in the APIs.
System capability: SystemCapability.Security.Huks
Name | Type | Mandatory | Description |
---|---|---|---|
tag | HuksTag | Yes | Tag. |
value | boolean|number|bigint|Uint8Array | Yes | Value of the tag. |
HuksOptions
Defines the options used in the APIs.
System capability: SystemCapability.Security.Huks
Name | Type | Mandatory | Description |
---|---|---|---|
properties | Array<HuksParam> | No | Properties used to hold the HuksParam array. |
inData | Uint8Array | No | Input data. |
HuksSessionHandle9+
Defines the HUKS handle structure.
System capability: SystemCapability.Security.Huks
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Value of the handle. |
challenge | Uint8Array | No | Challenge obtained after the initSession operation. |
HuksReturnResult9+
Defines the HuksResult structure.
System capability: SystemCapability.Security.Huks
Name | Type | Mandatory | Description |
---|---|---|---|
outData | Uint8Array | No | Output data. |
properties | Array<HuksParam> | No | Property information. |
certChains | Array<string> | No | Certificate chain information. |
huks.generateKeyItem9+
generateKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback<void>) : void
Generates a key. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key. |
options | HuksOptions | Yes | Tags required for generating the key. The algorithm, key purpose, and key length are mandatory. |
callback | AsyncCallback<void> | Yes | Callback invoked to return the result. If the operation is successful, no err value is returned; otherwise, an error code is returned. |
Example
/* Generate an ECC key of 256 bits. */
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}`);
}
huks.generateKeyItem9+
generateKeyItem(keyAlias: string, options: HuksOptions) : Promise<void>
Generates a key. This API uses a promise to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key. |
options | HuksOptions | Yes | Tags required for generating the key. The algorithm, key purpose, and key length are mandatory. |
Example
/* Generate an ECC key of 256 bits. */
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}`);
}
huks.deleteKeyItem9+
deleteKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback<void>) : void
Deletes a key. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Key alias passed in when the key was generated. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
callback | AsyncCallback<void> | Yes | Callback invoked to return the result. If the operation is successful, no err value is returned; otherwise, an error code is returned. |
Example
/* Set options to 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}`);
}
huks.deleteKeyItem9+
deleteKeyItem(keyAlias: string, options: HuksOptions) : Promise<void>
Deletes a key. This API uses a promise to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Key alias passed in when the key was generated. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
Example
/* Set options to 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}`);
}
huks.getSdkVersion
getSdkVersion(options: HuksOptions) : string
Obtains the SDK version of the current system.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
options | HuksOptions | Yes | Empty object, which is used to hold the SDK version. |
Return value
Type | Description |
---|---|
string | SDK version obtained. |
Example
/* Set options to emptyOptions. */
let emptyOptions = {
properties: []
};
let result = huks.getSdkVersion(emptyOptions);
huks.importKeyItem9+
importKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback<void>) : void
Imports a key in plaintext. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key. |
options | HuksOptions | Yes | Tags required for the import and key to import. The algorithm, key purpose, and key length are mandatory. |
callback | AsyncCallback<void> | Yes | Callback invoked to return the result. If the operation is successful, no err value is returned; otherwise, an error code is returned. |
Example
/* Import an AES key of 256 bits. */
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_ECB
};
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}`);
}
huks.importKeyItem9+
importKeyItem(keyAlias: string, options: HuksOptions) : Promise<void>
Imports a key in plaintext. This API uses a promise to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key. |
options | HuksOptions | Yes | Tags required for the import and key to import. The algorithm, key purpose, and key length are mandatory. |
Example
/* Import an AES key of 128 bits. */
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;
};
/* Step 1 Generate a key. */
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_ECB
};
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}`);
}
huks.attestKeyItem9+
attestKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksReturnResult>) : void
Obtains the certificate used to verify a key. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key. The certificate to be obtained stores the key. |
options | HuksOptions | Yes | Parameters and data required for obtaining the certificate. |
callback | AsyncCallback<HuksReturnResult> | Yes | Callback invoked to return the result. If the operation is successful, no err value is returned; otherwise, an error code is returned. |
Example
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}`);
}
}
huks.attestKeyItem9+
attestKeyItem(keyAlias: string, options: HuksOptions) : Promise<HuksReturnResult>
Obtains the certificate used to verify a key. This API uses a promise to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key. The certificate to be obtained stores the key. |
options | HuksOptions | Yes | Parameters and data required for obtaining the certificate. |
Return value
Type | Description |
---|---|
Promise<HuksReturnResult> | Promise used to return the result. If the operation is successful, no err value is returned; otherwise, an error code is returned. |
Example
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}`);
}
}
huks.importWrappedKeyItem9+
importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions, callback: AsyncCallback<void>) : void
Imports a wrapped key. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the wrapped key to import. |
wrappingKeyAlias | string | Yes | Alias of the data used to unwrap the key imported. |
options | HuksOptions | Yes | Tags required for the import and the wrapped key to import. The algorithm, key purpose, and key length are mandatory. |
callback | AsyncCallback<void> | Yes | Callback invoked to return the result. If the operation is successful, no err value is returned; otherwise, an error code is returned. |
Example
import huks from '@ohos.security.huks';
let exportWrappingKey;
let alias1 = "importAlias";
let alias2 = "wrappingKeyAlias";
async function TestGenFunc(alias, options) {
try {
await genKey(alias, options)
.then((data) => {
console.info(`callback: generateKeyItem success`);
})
.catch(error => {
console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`);
});
} catch (error) {
console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
}
}
function genKey(alias, options) {
return new Promise((resolve, reject) => {
try {
huks.generateKeyItem(alias, options, function (error, data) {
if (error) {
reject(error);
} else {
resolve(data);
}
});
} catch (error) {
throw(error);
}
});
}
async function TestExportFunc(alias, options) {
try {
await exportKey(alias, options)
.then ((data) => {
console.info(`callback: exportKeyItem success, data = ${JSON.stringify(data)}`);
exportWrappingKey = data.outData;
})
.catch(error => {
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}`);
}
}
function exportKey(alias, options) : Promise<huks.HuksReturnResult> {
return new Promise((resolve, reject) => {
try {
huks.exportKeyItem(alias, options, function (error, data) {
if (error) {
reject(error);
} else {
resolve(data);
}
});
} catch (error) {
throw(error);
}
});
}
async function TestImportWrappedFunc(alias, wrappingAlias, options) {
try {
await importWrappedKey(alias, wrappingAlias, options)
.then ((data) => {
console.info(`callback: importWrappedKeyItem success`);
})
.catch(error => {
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 importWrappedKey(alias, wrappingAlias, options) {
return new Promise((resolve, reject) => {
try {
huks.importWrappedKeyItem(alias, wrappingAlias, options, function (error, data) {
if (error) {
reject(error);
} else {
resolve(data);
}
});
} catch (error) {
throw(error);
}
});
}
async function TestImportWrappedKeyFunc(
alias,
wrappingAlias,
genOptions,
importOptions
) {
await TestGenFunc(wrappingAlias, genOptions);
await TestExportFunc(wrappingAlias, genOptions);
/*The following operations do not invoke the HUKS APIs, and the specific implementation is not provided here.
* For example, import **keyA**.
* 1. Use ECC to generate a public and private key pair **keyB**. The public key is **keyB_pub**, and the private key is **keyB_pri**.
* 2. Use **keyB_pri** and the public key obtained from **wrappingAlias** to negotiate the shared key **share_key**.
* 3. Randomly generate a key **kek** and use it to encrypt **keyA** with AES-GCM. During the encryption, record **nonce1**, **aad1**, ciphertext **keyA_enc**, and encrypted **tag1**.
* 4. Use **share_key** to encrypt **kek** with AES-GCM. During the encryption, record **nonce2**, **aad2**, ciphertext **kek_enc**, and encrypted **tag2**.
* 5. Generate the **importOptions.inData** field in the following format:
* keyB_pub length (4 bytes) + keyB_pub + aad2 length (4 bytes) + aad2 +
* nonce2 length (4 bytes) + nonce2 + tag2 length (4 bytes) + tag2 +
* kek_enc length (4 bytes) + kek_enc + aad1 length (4 bytes) + aad1 +
* nonce1 length (4 bytes) + nonce1 + tag1 length (4 bytes) + tag1 +
* Memory occupied by the keyA length (4 bytes) + keyA length + keyA_enc length (4 bytes) + keyA_enc
*/
let inputKey = new Uint8Array([0x02, 0x00, 0x00, 0x00]);
importOptions.inData = inputKey;
await TestImportWrappedFunc(alias, wrappingAlias, importOptions);
}
function makeGenerateOptions() {
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 options = {
properties: properties
};
return options;
};
function makeImportOptions() {
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_BLOCK_MODE,
value: huks.HuksCipherMode.HUKS_MODE_CBC
};
properties[4] = {
tag: huks.HuksTag.HUKS_TAG_PADDING,
value: huks.HuksKeyPadding.HUKS_PADDING_NONE
};
properties[5] = {
tag: huks.HuksTag.HUKS_TAG_UNWRAP_ALGORITHM_SUITE,
value: huks.HuksUnwrapSuite.HUKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING
};
let options = {
properties: properties
};
return options;
};
function huksImportWrappedKey() {
let genOptions = makeGenerateOptions();
let importOptions = makeImportOptions();
TestImportWrappedKeyFunc(
alias1,
alias2,
genOptions,
importOptions
);
}
huks.importWrappedKeyItem9+
importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions) : Promise<void>
Imports a wrapped key. This API uses a promise to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the wrapped key to import. |
wrappingKeyAlias | string | Yes | Alias of the data used to unwrap the key imported. |
options | HuksOptions | Yes | Tags required for the import and the wrapped key to import. The algorithm, key purpose, and key length are mandatory. |
Example
/* The process is similar as if a callback is used, except the following:*/
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}`);
}
}
huks.exportKeyItem9+
exportKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksReturnResult>) : void
Exports a key. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Key alias, which must be the same as the alias used when the key was generated. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
callback | AsyncCallback<HuksReturnResult> | Yes | Callback invoked to return the result. If the operation is successful, no err value is returned; otherwise, an error code is returned. outData contains the public key exported. |
Example
/* Set options to 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}`);
}
huks.exportKeyItem9+
exportKeyItem(keyAlias: string, options: HuksOptions) : Promise<HuksReturnResult>
Exports a key. This API uses a promise to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Key alias, which must be the same as the alias used when the key was generated. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
Return value
Type | Description |
---|---|
Promise<HuksReturnResult> | Promise used to return the result. If the operation is successful, no err value is returned and outData contains the public key exported. If the operation fails, an error code is returned. |
Example
/* Set options to 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}`);
}
huks.getKeyItemProperties9+
getKeyItemProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksReturnResult>) : void
Obtains key properties. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Key alias, which must be the same as the alias used when the key was generated. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
callback | AsyncCallback<HuksReturnResult> | Yes | Callback invoked to return the result. If the operation is successful, no err value is returned and properties contains the parameters required for generating the key. If the operation fails, an error code is returned. |
Example
/* Set options to 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}`);
}
huks.getKeyItemProperties9+
getKeyItemProperties(keyAlias: string, options: HuksOptions) : Promise<HuksReturnResult>
Obtains key properties. This API uses a promise to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Key alias, which must be the same as the alias used when the key was generated. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
Return value
Type | Description |
---|---|
Promise<HuksReturnResult> | Promise used to return the result. If the operation is successful, no err value is returned and properties contains the parameters required for generating the key. If the operation fails, an error code is returned. |
Example
/* Set options to 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}`);
}
huks.isKeyItemExist9+
isKeyItemExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback<boolean>) : void
Checks whether a key exists. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key to check. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
callback | AsyncCallback<boolean> | Yes | Callback invoked to return the result. The value TRUE means that the key exists; FALSE means the opposite. |
Example
/* Set options to emptyOptions. */
let keyAlias = 'keyAlias';
let emptyOptions = {
properties: []
};
try {
huks.isKeyItemExist(keyAlias, emptyOptions, function (error, data) {
if (error) {
console.error(`callback: isKeyItemExist failed, code: ${error.code}, msg: ${error.message}`);
} else {
console.info(`callback: isKeyItemExist success, data = ${JSON.stringify(data)}`);
}
});
} catch (error) {
console.error(`promise: isKeyItemExist input arg invalid, code: ${error.code}, msg: ${error.message}`);
}
huks.isKeyItemExist9+
isKeyItemExist(keyAlias: string, options: HuksOptions) : Promise<boolean>
Checks whether a key exists. This API uses a promise to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key to check. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
Return value
Type | Description |
---|---|
Promise<boolean> | Promise used to return the result. The value TRUE means that the key exists; FALSE means the opposite. |
Example
/* Set options to emptyOptions. */
let keyAlias = 'keyAlias';
let emptyOptions = {
properties: []
};
try {
huks.isKeyItemExist(keyAlias, emptyOptions)
.then ((data) => {
console.info(`promise: isKeyItemExist success, data = ${JSON.stringify(data)}`);
})
.catch(error => {
console.error(`promise: isKeyItemExist failed, code: ${error.code}, msg: ${error.message}`);
});
} catch (error) {
console.error(`promise: isKeyItemExist input arg invalid, code: ${error.code}, msg: ${error.message}`);
}
huks.initSession9+
initSession(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksSessionHandle>) : void
Initializes the data for a key operation. This API uses an asynchronous callback to return the result. huks.initSession, huks.updateSession, and huks.finishSession must be used together.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key involved in the initSession operation. |
options | HuksOptions | Yes | Parameter set used for the initSession operation. |
callback | AsyncCallback<HuksSessionHandle> | Yes | Callback invoked to return a session handle for subsequent operations. |
huks.initSession9+
initSession(keyAlias: string, options: HuksOptions) : Promise<HuksSessionHandle>
Initializes the data for a key operation. This API uses a promise to return the result. huks.initSession, huks.updateSession, and huks.finishSession must be used together.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key involved in the initSession operation. |
options | HuksOptions | Yes | Parameter set used for the initSession operation. |
Return value
Type | Description |
---|---|
Promise<HuksSessionHandle> | Promise used to return a session handle for subsequent operations. |
huks.updateSession9+
updateSession(handle: number, options: HuksOptions, callback: AsyncCallback<HuksReturnResult>) : void
Updates the key operation by segment. This API uses an asynchronous callback to return the result. huks.initSession, huks.updateSession, and huks.finishSession must be used together.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the updateSession operation. |
options | HuksOptions | Yes | Parameter set used for the updateSession operation. |
callback | AsyncCallback<HuksReturnResult> | Yes | Callback invoked to return the updateSession operation result. |
huks.updateSession9+
updateSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback<HuksReturnResult>) : void
Updates the key operation by segment. This API uses an asynchronous callback to return the result. huks.initSession, huks.updateSession, and huks.finishSession must be used together.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the updateSession operation. |
options | HuksOptions | Yes | Parameter set used for the updateSession operation. |
token | Uint8Array | Yes | Token of the updateSession operation. |
callback | AsyncCallback<HuksReturnResult> | Yes | Callback invoked to return the updateSession operation result. |
huks.updateSession9+
updateSession(handle: number, options: HuksOptions, token?: Uint8Array) : Promise<HuksReturnResult>
Updates the key operation by segment. This API uses a promise to return the result. huks.initSession, huks.updateSession, and huks.finishSession must be used together.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the updateSession operation. |
options | HuksOptions | Yes | Parameter set used for the updateSession operation. |
token | Uint8Array | No | Token of the updateSession operation. |
Return value
Type | Description |
---|---|
Promise<HuksReturnResult> | Promise used to return the updateSession operation result. |
huks.finishSession9+
finishSession(handle: number, options: HuksOptions, callback: AsyncCallback<HuksReturnResult>) : void
Completes the key operation and releases resources. This API uses an asynchronous callback to return the result. huks.initSession, huks.updateSession, and huks.finishSession must be used together.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the finishSession operation. |
options | HuksOptions | Yes | Parameter set used for the finishSession operation. |
token | Uint8Array | Yes | Token of the finishSession operation. |
callback | AsyncCallback<HuksReturnResult> | Yes | Callback invoked to return the finishSession operation result. |
huks.finishSession9+
finishSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback<HuksReturnResult>) : void
Completes the key operation and releases resources. This API uses an asynchronous callback to return the result. huks.initSession, huks.updateSession, and huks.finishSession must be used together.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the finishSession operation. |
options | HuksOptions | Yes | Parameter set used for the finishSession operation. |
token | Uint8Array | Yes | Token of the finishSession operation. |
callback | AsyncCallback<HuksReturnResult> | Yes | Callback invoked to return the finishSession operation result. |
huks.finishSession9+
finishSession(handle: number, options: HuksOptions, token?: Uint8Array) : Promise<HuksReturnResult>
Completes the key operation and releases resources. This API uses a promise to return the result. huks.initSession, huks.updateSession, and huks.finishSession must be used together.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the finishSession operation. |
options | HuksOptions | Yes | Parameter set used for the finishSession operation. |
token | Uint8Array | No | Token of the finishSession operation. |
Return value
Type | Description |
---|---|
Promise<HuksReturnResult> | Promise used to return the result. |
huks.abortSession9+
abortSession(handle: number, options: HuksOptions, callback: AsyncCallback<void>) : void
Aborts a key operation. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the abortSession operation. |
options | HuksOptions | Yes | Parameter set used for the abortSession operation. |
callback | AsyncCallback<void> | Yes | Callback that returns no value. |
Example
/* huks.initSession, huks.updateSession, and huks.finishSession must be used together.
* If an error occurs in any of huks.initSession, huks.updateSession,
* and huks.finishSession operations,
* huks.abortSession must be called to terminate the use of the key.
*
* The following uses the callback of an RSA1024 key as an example.
*/
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_1024
};
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}`);
}
}
huks.abortSession9+
abortSession(handle: number, options: HuksOptions) : Promise<void>;
Aborts a key operation. This API uses a promise to return the result.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the abortSession operation. |
options | HuksOptions | Yes | Parameter set used for the abortSession operation. |
Return value
Type | Description |
---|---|
Promise<void> | Promise used to return the abortSession operation result. |
Example
/* huks.initSession, huks.updateSession, and huks.finishSession must be used together.
* If an error occurs in any of huks.initSession, huks.updateSession,
* and huks.finishSession operations,
* huks.abortSession must be called to terminate the use of the key.
*
* The following uses the callback of an RSA1024 key as an example.
*/
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_1024
};
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}`);
}
}
HuksExceptionErrCode9+
Enumerates the error codes.
For details about the error codes, see KUKS Error Codes.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_ERR_CODE_PERMISSION_FAIL | 201 | Permission verification failed. |
HUKS_ERR_CODE_ILLEGAL_ARGUMENT | 401 | Invalid parameters are detected. |
HUKS_ERR_CODE_NOT_SUPPORTED_API | 801 | The API is not supported. |
HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED | 12000001 | The feature is not supported. |
HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT | 12000002 | Key algorithm parameters are missing. |
HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT | 12000003 | Invalid key algorithm parameters are detected. |
HUKS_ERR_CODE_FILE_OPERATION_FAIL | 12000004 | The file operation failed. |
HUKS_ERR_CODE_COMMUNICATION_FAIL | 12000005 | The communication failed. |
HUKS_ERR_CODE_CRYPTO_FAIL | 12000006 | Failed to operate the algorithm library. |
HUKS_ERR_CODE_KEY_AUTH_PERMANENTLY_INVALIDATED | 12000007 | Failed to access the key because the key has expired. |
HUKS_ERR_CODE_KEY_AUTH_VERIFY_FAILED | 12000008 | Failed to access the key because the authentication has failed. |
HUKS_ERR_CODE_KEY_AUTH_TIME_OUT | 12000009 | Key access timed out. |
HUKS_ERR_CODE_SESSION_LIMIT | 12000010 | The number of key operation sessions has reached the limit. |
HUKS_ERR_CODE_ITEM_NOT_EXIST | 12000011 | The target object does not exist. |
HUKS_ERR_CODE_EXTERNAL_ERROR | 12000012 | An external error occurs. |
HUKS_ERR_CODE_CREDENTIAL_NOT_EXIST | 12000013 | The credential does not exist. |
HUKS_ERR_CODE_INSUFFICIENT_MEMORY | 12000014 | The memory is insufficient. |
HUKS_ERR_CODE_CALL_SERVICE_FAILED | 12000015 | Failed to call other system services. |
HuksKeyPurpose
Enumerates the key purposes.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_KEY_PURPOSE_ENCRYPT | 1 | Used to encrypt the plaintext. |
HUKS_KEY_PURPOSE_DECRYPT | 2 | Used to decrypt the cipher text. |
HUKS_KEY_PURPOSE_SIGN | 4 | Used for signing. |
HUKS_KEY_PURPOSE_VERIFY | 8 | Used to verify the signature. |
HUKS_KEY_PURPOSE_DERIVE | 16 | Used to derive a key. |
HUKS_KEY_PURPOSE_WRAP | 32 | Used for an encrypted export. |
HUKS_KEY_PURPOSE_UNWRAP | 64 | Used for an encrypted import. |
HUKS_KEY_PURPOSE_MAC | 128 | Used to generate a message authentication code (MAC). |
HUKS_KEY_PURPOSE_AGREE | 256 | Used for key agreement. |
HuksKeyDigest
Enumerates the digest algorithms.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_DIGEST_NONE | 0 | No digest algorithm |
HUKS_DIGEST_MD5 | 1 | MD5 |
HUKS_DIGEST_SM39+ | 2 | SM3 |
HUKS_DIGEST_SHA1 | 10 | SHA-1 |
HUKS_DIGEST_SHA224 | 11 | SHA-224 |
HUKS_DIGEST_SHA256 | 12 | SHA-256 |
HUKS_DIGEST_SHA384 | 13 | SHA-384 |
HUKS_DIGEST_SHA512 | 14 | SHA-512 |
HuksKeyPadding
Enumerates the padding algorithms.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_PADDING_NONE | 0 | No padding algorithm |
HUKS_PADDING_OAEP | 1 | Optimal Asymmetric Encryption Padding (OAEP) |
HUKS_PADDING_PSS | 2 | Probabilistic Signature Scheme (PSS) |
HUKS_PADDING_PKCS1_V1_5 | 3 | Public Key Cryptography Standards (PKCS) #1 v1.5 |
HUKS_PADDING_PKCS5 | 4 | PKCS #5 |
HUKS_PADDING_PKCS7 | 5 | PKCS #7 |
HuksCipherMode
Enumerates the cipher modes.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_MODE_ECB | 1 | Electronic Code Block (ECB) mode |
HUKS_MODE_CBC | 2 | Cipher Block Chaining (CBC) mode |
HUKS_MODE_CTR | 3 | Counter (CTR) mode |
HUKS_MODE_OFB | 4 | Output Feedback (OFB) mode |
HUKS_MODE_CCM | 31 | Counter with CBC-MAC (CCM) mode |
HUKS_MODE_GCM | 32 | Galois/Counter (GCM) mode |
HuksKeySize
Enumerates the key sizes.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_RSA_KEY_SIZE_512 | 512 | Rivest-Shamir-Adleman (RSA) key of 512 bits |
HUKS_RSA_KEY_SIZE_768 | 768 | RSA key of 768 bits |
HUKS_RSA_KEY_SIZE_1024 | 1024 | RSA key of 1024 bits |
HUKS_RSA_KEY_SIZE_2048 | 2048 | RSA key of 2048 bits |
HUKS_RSA_KEY_SIZE_3072 | 3072 | RSA key of 3072 bits |
HUKS_RSA_KEY_SIZE_4096 | 4096 | RSA key of 4096 bits |
HUKS_ECC_KEY_SIZE_224 | 224 | Elliptic Curve Cryptography (ECC) key of 224 bits |
HUKS_ECC_KEY_SIZE_256 | 256 | ECC key of 256 bits |
HUKS_ECC_KEY_SIZE_384 | 384 | ECC key of 384 bits |
HUKS_ECC_KEY_SIZE_521 | 521 | ECC key of 521 bits |
HUKS_AES_KEY_SIZE_128 | 128 | Advanced Encryption Standard (AES) key of 128 bits |
HUKS_AES_KEY_SIZE_192 | 192 | AES key of 192 bits |
HUKS_AES_KEY_SIZE_256 | 256 | AES key of 256 bits |
HUKS_AES_KEY_SIZE_512 | 512 | AES key of 512 bits |
HUKS_CURVE25519_KEY_SIZE_256 | 256 | Curve25519 key of 256 bits |
HUKS_DH_KEY_SIZE_2048 | 2048 | Diffie-Hellman (DH) key of 2048 bits |
HUKS_DH_KEY_SIZE_3072 | 3072 | DH key of 3072 bits |
HUKS_DH_KEY_SIZE_4096 | 4096 | DH key of 4096 bits |
HUKS_SM2_KEY_SIZE_2569+ | 256 | ShangMi2 (SM2) key of 256 bits |
HUKS_SM4_KEY_SIZE_1289+ | 128 | ShangMi4 (SM4) key of 128 bits |
HuksKeyAlg
Enumerates the key algorithms.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_ALG_RSA | 1 | RSA |
HUKS_ALG_ECC | 2 | ECC |
HUKS_ALG_DSA | 3 | DSA |
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 |
HuksKeyGenerateType
Enumerates the key generation types.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_KEY_GENERATE_TYPE_DEFAULT | 0 | Key generated by default. |
HUKS_KEY_GENERATE_TYPE_DERIVE | 1 | Derived key. |
HUKS_KEY_GENERATE_TYPE_AGREE | 2 | Key generated by agreement. |
HuksKeyFlag
Enumerates the key generation modes.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_KEY_FLAG_IMPORT_KEY | 1 | Import a key using an API. |
HUKS_KEY_FLAG_GENERATE_KEY | 2 | Generate a key by using an API. |
HUKS_KEY_FLAG_AGREE_KEY | 3 | Generate a key by using a key agreement API. |
HUKS_KEY_FLAG_DERIVE_KEY | 4 | Derive a key by using an API. |
HuksKeyStorageType
Enumerates the key storage modes.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_STORAGE_TEMP | 0 | The key is managed locally. |
HUKS_STORAGE_PERSISTENT | 1 | The key is managed by the HUKS service. |
HuksSendType
Enumerates the tag transfer modes.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_SEND_TYPE_ASYNC | 0 | The tag is sent asynchronously. |
HUKS_SEND_TYPE_SYNC | 1 | The tag is sent synchronously. |
HuksUnwrapSuite9+
Enumerates the algorithm suites used for importing an encrypted key.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_UNWRAP_SUITE_X25519_AES_256_GCM_NOPADDING | 1 | Use X25519 for key agreement and then use AES-256 GCM to encrypt the key. |
HUKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING | 2 | Use ECDH for key agreement and then use AES-256 GCM to encrypt the key. |
HuksImportKeyType9+
Enumerates the types of keys to import. By default, a public key is imported. This field is not required when a symmetric key is imported.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_KEY_TYPE_PUBLIC_KEY | 0 | Public key |
HUKS_KEY_TYPE_PRIVATE_KEY | 1 | Private key |
HUKS_KEY_TYPE_KEY_PAIR | 2 | Public and private key pair |
HuksUserAuthType9+
Enumerates the user authentication types.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_USER_AUTH_TYPE_FINGERPRINT | 1 << 0 | Fingerprint authentication. |
HUKS_USER_AUTH_TYPE_FACE | 1 << 1 | Facial authentication. |
HUKS_USER_AUTH_TYPE_PIN | 1 << 2 | PIN authentication. |
HuksAuthAccessType9+
Enumerates the access control types.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_AUTH_ACCESS_INVALID_CLEAR_PASSWORD | 1 << 0 | The key becomes invalid after the password is cleared. |
HUKS_AUTH_ACCESS_INVALID_NEW_BIO_ENROLL | 1 << 1 | The key becomes invalid after a new biometric feature is added. |
HuksChallengeType9+
Enumerates the types of the challenges generated when a key is used.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_CHALLENGE_TYPE_NORMAL | 0 | Normal challenge, which is of 32 bytes by default. |
HUKS_CHALLENGE_TYPE_CUSTOM | 1 | Custom challenge, which supports only one authentication for multiple keys. |
HUKS_CHALLENGE_TYPE_NONE | 2 | Challenge is not required. |
HuksChallengePosition9+
Enumerates the positions of the 8-byte valid value in a custom challenge generated.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_CHALLENGE_POS_0 | 0 | Bytes 0 to 7. |
HUKS_CHALLENGE_POS_1 | 1 | Bytes 8 to 15. |
HUKS_CHALLENGE_POS_2 | 2 | Bytes 16 to 23. |
HUKS_CHALLENGE_POS_3 | 3 | Bytes 24 to 31. |
HuksSecureSignType9+
Defines the signature type of the key generated or imported.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_SECURE_SIGN_WITH_AUTHINFO | 1 | The signature carries authentication information. This field is specified when a key is generated or imported. When the key is used for signing, the data will be added with the authentication information and then be signed. |
HuksTagType
Enumerates the tag data types.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_TAG_TYPE_INVALID | 0 << 28 | Invalid tag type. |
HUKS_TAG_TYPE_INT | 1 << 28 | Number of the int type. |
HUKS_TAG_TYPE_UINT | 2 << 28 | Number of the uint type. |
HUKS_TAG_TYPE_ULONG | 3 << 28 | BigInt. |
HUKS_TAG_TYPE_BOOL | 4 << 28 | Boolean. |
HUKS_TAG_TYPE_BYTES | 5 << 28 | Uint8Array. |
HuksTag
Enumerates the tags used to invoke parameters.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_TAG_INVALID | HuksTagType.HUKS_TAG_TYPE_INVALID | 0 | Invalid tag. |
HUKS_TAG_ALGORITHM | HuksTagType.HUKS_TAG_TYPE_UINT | 1 | Algorithm. |
HUKS_TAG_PURPOSE | HuksTagType.HUKS_TAG_TYPE_UINT | 2 | Purpose of the key. |
HUKS_TAG_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT | 3 | Key size. |
HUKS_TAG_DIGEST | HuksTagType.HUKS_TAG_TYPE_UINT | 4 | Digest algorithm. |
HUKS_TAG_PADDING | HuksTagType.HUKS_TAG_TYPE_UINT | 5 | Padding algorithm. |
HUKS_TAG_BLOCK_MODE | HuksTagType.HUKS_TAG_TYPE_UINT | 6 | Cipher mode. |
HUKS_TAG_KEY_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 7 | Key type. |
HUKS_TAG_ASSOCIATED_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 8 | Associated authentication data. |
HUKS_TAG_NONCE | HuksTagType.HUKS_TAG_TYPE_BYTES | 9 | Field for key encryption and decryption. |
HUKS_TAG_IV | HuksTagType.HUKS_TAG_TYPE_BYTES | 10 | IV. |
HUKS_TAG_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES | 11 | Information generated during key derivation. |
HUKS_TAG_SALT | HuksTagType.HUKS_TAG_TYPE_BYTES | 12 | Salt value used for key derivation. |
HUKS_TAG_PWD | HuksTagType.HUKS_TAG_TYPE_BYTES | 13 | Password used for key derivation. |
HUKS_TAG_ITERATION | HuksTagType.HUKS_TAG_TYPE_UINT | 14 | Number of iterations for key derivation. |
HUKS_TAG_KEY_GENERATE_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 15 | Key generation type. |
HUKS_TAG_DERIVE_MAIN_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES | 16 | Main key for key derivation. |
HUKS_TAG_DERIVE_FACTOR | HuksTagType.HUKS_TAG_TYPE_BYTES | 17 | Factor for key derivation. |
HUKS_TAG_DERIVE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT | 18 | Type of the algorithm used for key derivation. |
HUKS_TAG_AGREE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT | 19 | Type of the algorithm used for key agreement. |
HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL | 20 | Public key alias used in key agreement. |
HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES | 21 | Private key alias used in key agreement. |
HUKS_TAG_AGREE_PUBLIC_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES | 22 | Public key used in key agreement. |
HUKS_TAG_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES | 23 | Key alias. |
HUKS_TAG_DERIVE_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT | 24 | Size of the derived key. |
HUKS_TAG_IMPORT_KEY_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT | 25 | Type of the imported key. |
HUKS_TAG_UNWRAP_ALGORITHM_SUITE9+ | HuksTagType.HUKS_TAG_TYPE_UINT | 26 | Algorithm suite required for encrypted imports. |
HUKS_TAG_ACTIVE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG | 201 | Reserved. |
HUKS_TAG_ORIGINATION_EXPIRE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG | 202 | Reserved. |
HUKS_TAG_USAGE_EXPIRE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG | 203 | Reserved. |
HUKS_TAG_CREATION_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG | 204 | Reserved. |
HUKS_TAG_ALL_USERS | HuksTagType.HUKS_TAG_TYPE_BOOL | 301 | Reserved. |
HUKS_TAG_USER_ID | HuksTagType.HUKS_TAG_TYPE_UINT | 302 | Reserved. |
HUKS_TAG_NO_AUTH_REQUIRED | HuksTagType.HUKS_TAG_TYPE_BOOL | 303 | Reserved. |
HUKS_TAG_USER_AUTH_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 304 | User authentication type. For details, see HuksUserAuthType. This parameter must be set together with HuksAuthAccessType. You can set a maximum of two user authentication types at a time. For example, if HuksAuthAccessType is HKS_SECURE_ACCESS_INVALID_NEW_BIO_ENROLL, you can set two of HKS_USER_AUTH_TYPE_FACE, HKS_USER_AUTH_TYPE_FINGERPRINT, and HKS_USER_AUTH_TYPE_FACE. |
HUKS_TAG_AUTH_TIMEOUT | HuksTagType.HUKS_TAG_TYPE_UINT | 305 | Reserved. |
HUKS_TAG_AUTH_TOKEN | HuksTagType.HUKS_TAG_TYPE_BYTES | 306 | Reserved. |
HUKS_TAG_KEY_AUTH_ACCESS_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT | 307 | Access control type. For details, see HuksAuthAccessType. This parameter must be set together with HuksUserAuthType. |
HUKS_TAG_KEY_SECURE_SIGN_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT | 308 | Signature type of the key generated or imported. |
HUKS_TAG_CHALLENGE_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT | 309 | Type of the challenge generated for a key. For details, see HuksChallengeType. |
HUKS_TAG_CHALLENGE_POS9+ | HuksTagType.HUKS_TAG_TYPE_UINT | 310 | Position of the 8-byte valid value in a custom challenge. For details, see HuksChallengePosition. |
HUKS_TAG_ATTESTATION_CHALLENGE | HuksTagType.HUKS_TAG_TYPE_BYTES | 501 | Challenge value used in the attestation. |
HUKS_TAG_ATTESTATION_APPLICATION_ID | HuksTagType.HUKS_TAG_TYPE_BYTES | 502 | Application ID used in the attestation. |
HUKS_TAG_ATTESTATION_ID_BRAND | HuksTagType.HUKS_TAG_TYPE_BYTES | 503 | Brand of the device. |
HUKS_TAG_ATTESTATION_ID_DEVICE | HuksTagType.HUKS_TAG_TYPE_BYTES | 504 | ID of the device. |
HUKS_TAG_ATTESTATION_ID_PRODUCT | HuksTagType.HUKS_TAG_TYPE_BYTES | 505 | Product name of the device. |
HUKS_TAG_ATTESTATION_ID_SERIAL | HuksTagType.HUKS_TAG_TYPE_BYTES | 506 | SN of the device. |
HUKS_TAG_ATTESTATION_ID_IMEI | HuksTagType.HUKS_TAG_TYPE_BYTES | 507 | International mobile equipment identity (IMEI) of the device. |
HUKS_TAG_ATTESTATION_ID_MEID | HuksTagType.HUKS_TAG_TYPE_BYTES | 508 | Mobile equipment identity (MEID) of the device. |
HUKS_TAG_ATTESTATION_ID_MANUFACTURER | HuksTagType.HUKS_TAG_TYPE_BYTES | 509 | Manufacturer of the device. |
HUKS_TAG_ATTESTATION_ID_MODEL | HuksTagType.HUKS_TAG_TYPE_BYTES | 510 | Device model. |
HUKS_TAG_ATTESTATION_ID_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES | 511 | Key alias used in the attestation. |
HUKS_TAG_ATTESTATION_ID_SOCID | HuksTagType.HUKS_TAG_TYPE_BYTES | 512 | System-on-a-chip (SoCID) of the device. |
HUKS_TAG_ATTESTATION_ID_UDID | HuksTagType.HUKS_TAG_TYPE_BYTES | 513 | Unique device identifier (UDID) of the device. |
HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES | 514 | Security level used in the attestation. |
HUKS_TAG_ATTESTATION_ID_VERSION_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES | 515 | Version information used in the attestation. |
HUKS_TAG_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL | 1001 | Whether to use the alias passed in during key generation. |
HUKS_TAG_KEY_STORAGE_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT | 1002 | Key storage mode. |
HUKS_TAG_IS_ALLOWED_WRAP | HuksTagType.HUKS_TAG_TYPE_BOOL | 1003 | Reserved. |
HUKS_TAG_KEY_WRAP_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 1004 | Reserved. |
HUKS_TAG_KEY_AUTH_ID | HuksTagType.HUKS_TAG_TYPE_BYTES | 1005 | Reserved. |
HUKS_TAG_KEY_ROLE | HuksTagType.HUKS_TAG_TYPE_UINT | 1006 | Reserved. |
HUKS_TAG_KEY_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT | 1007 | Flag of the key. |
HUKS_TAG_IS_ASYNCHRONIZED | HuksTagType.HUKS_TAG_TYPE_UINT | 1008 | Reserved. |
HUKS_TAG_SECURE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL | 1009 | Reserved. |
HUKS_TAG_SECURE_KEY_UUID | HuksTagType.HUKS_TAG_TYPE_BYTES | 1010 | Reserved. |
HUKS_TAG_KEY_DOMAIN | HuksTagType.HUKS_TAG_TYPE_UINT | 1011 | Reserved. |
HUKS_TAG_PROCESS_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES | 10001 | Process name. |
HUKS_TAG_PACKAGE_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES | 10002 | Reserved. |
HUKS_TAG_ACCESS_TIME | HuksTagType.HUKS_TAG_TYPE_UINT | 10003 | Reserved. |
HUKS_TAG_USES_TIME | HuksTagType.HUKS_TAG_TYPE_UINT | 10004 | Reserved. |
HUKS_TAG_CRYPTO_CTX | HuksTagType.HUKS_TAG_TYPE_ULONG | 10005 | Reserved. |
HUKS_TAG_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES | 10006 | Reserved. |
HUKS_TAG_KEY_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT | 10007 | Key version. |
HUKS_TAG_PAYLOAD_LEN | HuksTagType.HUKS_TAG_TYPE_UINT | 10008 | Reserved. |
HUKS_TAG_AE_TAG | HuksTagType.HUKS_TAG_TYPE_BYTES | 10009 | Reserved. |
HUKS_TAG_IS_KEY_HANDLE | HuksTagType.HUKS_TAG_TYPE_ULONG | 10010 | Reserved. |
HUKS_TAG_OS_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT | 10101 | OS version. |
HUKS_TAG_OS_PATCHLEVEL | HuksTagType.HUKS_TAG_TYPE_UINT | 10102 | OS patch level. |
HUKS_TAG_SYMMETRIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 20001 | Reserved. |
HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 20002 | Reserved. |
HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 20003 | Reserved. |
huks.generateKey(deprecated)
generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
Generates a key. This API uses an asynchronous callback to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.generateKeyItem9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key. |
options | HuksOptions | Yes | Tags required for generating the key. |
callback | AsyncCallback<HuksResult> | Yes | Callback invoked to return the result. If the operation is successful, HUKS_SUCCESS is returned; otherwise, an error code defined in HuksResult is returned. |
Example
/* Generate an RSA key of 512 bits. */
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_512
};
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){});
huks.generateKey(deprecated)
generateKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>
Generates a key. This API uses a promise to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.generateKeyItem9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key. |
options | HuksOptions | Yes | Tags required for generating the key. |
Return value
Type | Description |
---|---|
Promise<HuksResult> | Promise used to return the result. If the operation is successful, HUKS_SUCCESS is returned; otherwise, an error code is returned. |
Example
/* Generate an ECC key of 256 bits. */
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);
huks.deleteKey(deprecated)
deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
Deletes a key. This API uses an asynchronous callback to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.deleteKeyItem9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Key alias passed in when the key was generated. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
callback | AsyncCallback<HuksResult> | Yes | Callback invoked to return the result. If the operation is successful, HUKS_SUCCESS is returned; otherwise, an error code is returned. |
Example
/* Set options to emptyOptions. */
let keyAlias = 'keyAlias';
let emptyOptions = {
properties: []
};
huks.deleteKey(keyAlias, emptyOptions, function (err, data) {});
huks.deleteKey(deprecated)
deleteKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>
Deletes a key. This API uses a promise to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.deleteKeyItem9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Key alias passed in when the key was generated. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
Return value
Type | Description |
---|---|
Promise<HuksResult> | Promise used to return the result. If the operation is successful, HUKS_SUCCESS is returned; otherwise, an error code is returned. |
Example
/* Set options to emptyOptions. */
let keyAlias = 'keyAlias';
let emptyOptions = {
properties: []
};
let result = huks.deleteKey(keyAlias, emptyOptions);
huks.importKey(deprecated)
importKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
Imports a key in plaintext. This API uses an asynchronous callback to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.importKeyItem9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key. |
options | HuksOptions | Yes | Tags required for the import and key to import. |
callback | AsyncCallback<HuksResult> | Yes | Callback invoked to return the result. If the operation is successful, HUKS_SUCCESS is returned; otherwise, an error code is returned. |
Example
/* Import an AES key of 256 bits. */
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_ECB
};
let options = {
properties: properties,
inData: plainTextSize32
};
huks.importKey(keyAlias, options, function (err, data){});
huks.importKey(deprecated)
importKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>
Imports a key in plaintext. This API uses a promise to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.importKeyItem9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key. |
options | HuksOptions | Yes | Tags required for the import and key to import. |
Return value
Type | Description |
---|---|
Promise<HuksResult> | Promise used to return the result. If the operation is successful, HUKS_SUCCESS is returned; otherwise, an error code is returned. |
Example
/* Import an AES key of 128 bits. */
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;
};
/* Step 1 Generate a key. */
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_ECB
};
let huksoptions = {
properties: properties,
inData: plainTextSize32
};
let result = huks.importKey(keyAlias, huksoptions);
huks.exportKey(deprecated)
exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
Exports a key. This API uses an asynchronous callback to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.exportKeyItem9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Key alias, which must be the same as the alias used when the key was generated. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
callback | AsyncCallback<HuksResult> | Yes | Callback invoked to return the result. If the operation is successful, HUKS_SUCCESS is returned and outData contains the public key exported. If the operation fails, an error code is returned. |
Example
/* Set options to emptyOptions. */
let keyAlias = 'keyAlias';
let emptyOptions = {
properties: []
};
huks.exportKey(keyAlias, emptyOptions, function (err, data){});
huks.exportKey(deprecated)
exportKey(keyAlias: string, options: HuksOptions) : Promise<HuksResult>
Exports a key. This API uses a promise to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.exportKeyItem9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Key alias, which must be the same as the alias used when the key was generated. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
Return value
Type | Description |
---|---|
Promise<HuksResult> | Promise used to return the result. If the operation is successful, HUKS_SUCCESS is returned and outData contains the public key exported. If the operation fails, an error code is returned. |
Example
/* Set options to emptyOptions. */
let keyAlias = 'keyAlias';
let emptyOptions = {
properties: []
};
let result = huks.exportKey(keyAlias, emptyOptions);
huks.getKeyProperties(deprecated)
getKeyProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
Obtains key properties. This API uses an asynchronous callback to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.getKeyItemProperties9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Key alias, which must be the same as the alias used when the key was generated. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
callback | AsyncCallback<HuksResult> | Yes | Callback invoked to return the result. If the operation is successful, errorCode is HUKS_SUCCESS; otherwise, an error code is returned. |
Example
/* Set options to emptyOptions. */
let keyAlias = 'keyAlias';
let emptyOptions = {
properties: []
};
huks.getKeyProperties(keyAlias, emptyOptions, function (err, data){});
huks.getKeyProperties(deprecated)
getKeyProperties(keyAlias: string, options: HuksOptions) : Promise<HuksResult>
Obtains key properties. This API uses a promise to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.getKeyItemProperties9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Key alias, which must be the same as the alias used when the key was generated. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
Return value
Type | Description |
---|---|
Promise<HuksResult> | Promise used to return the result. If the operation is successful, errorCode is HUKS_SUCCESS and properties contains the parameters required for generating the key. If the operation fails, an error code is returned. |
Example
/* Set options to emptyOptions. */
let keyAlias = 'keyAlias';
let emptyOptions = {
properties: []
};
let result = huks.getKeyProperties(keyAlias, emptyOptions);
huks.isKeyExist(deprecated)
isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback<boolean>) : void
Checks whether a key exists. This API uses an asynchronous callback to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.isKeyItemExist9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key to check. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
callback | AsyncCallback<boolean> | Yes | Callback invoked to return the result. The value TRUE means that the key exists; FALSE means the opposite. |
Example
/* Set options to emptyOptions. */
let keyAlias = 'keyAlias';
let emptyOptions = {
properties: []
};
huks.isKeyExist(keyAlias, emptyOptions, function (err, data){});
huks.isKeyExist(deprecated)
isKeyExist(keyAlias: string, options: HuksOptions) : Promise<boolean>
Checks whether a key exists. This API uses a promise to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.isKeyItemExist9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the key to check. |
options | HuksOptions | Yes | Empty object (leave this parameter empty). |
Return value
Type | Description |
---|---|
Promise<boolean> | Promise used to return the result. The value TRUE means that the key exists; FALSE means the opposite. |
Example
/* Set options to emptyOptions. */
let keyAlias = 'keyAlias';
let emptyOptions = {
properties: []
};
let result = huks.isKeyExist(keyAlias, emptyOptions);
huks.init(deprecated)
init(keyAlias: string, options: HuksOptions, callback: AsyncCallback<HuksHandle>) : void
Initializes the data for a key operation. This API uses an asynchronous callback to return the result. huks.init, huks.update, and huks.finish must be used together.
NOTE
This API is deprecated since API version 9. You are advised to use huks.initSession9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the target key. |
options | HuksOptions | Yes | Parameter set used for the init operation. |
callback | AsyncCallback<HuksHandle> | Yes | Callback invoked to return a session handle for subsequent operations. |
huks.init(deprecated)
init(keyAlias: string, options: HuksOptions) : Promise<HuksHandle>
Initializes the data for a key operation. This API uses a promise to return the result. huks.init, huks.update, and huks.finish must be used together.
NOTE
This API is deprecated since API version 9. You are advised to use huks.initSession9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
keyAlias | string | Yes | Alias of the target key. |
options | HuksOptions | Yes | Parameter set used for the init operation. |
Return value
Type | Description |
---|---|
Promise<HuksHandle> | Promise used to return a session handle for subsequent operations. |
huks.update(deprecated)
update(handle: number, token?: Uint8Array, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
Updates the key operation by segment. This API uses an asynchronous callback to return the result. huks.init, huks.update, and huks.finish must be used together.
NOTE
This API is deprecated since API version 9. You are advised to use huks.updateSession9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the update operation. |
token | Uint8Array | No | Token of the update operation. |
options | HuksOptions | Yes | Parameter set used for the update operation. |
callback | AsyncCallback<HuksResult> | Yes | Callback invoked to return the update operation result. |
huks.update(deprecated)
update(handle: number, token?: Uint8Array, options: HuksOptions) : Promise<HuksResult>;
Updates the key operation by segment. This API uses a promise to return the result. huks.init, huks.update, and huks.finish must be used together.
NOTE
This API is deprecated since API version 9. You are advised to use huks.updateSession9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the update operation. |
token | Uint8Array | No | Token of the update operation. |
options | HuksOptions | Yes | Parameter set used for the update operation. |
Return value
Type | Description |
---|---|
Promise<HuksResult> | Promise used to return the update operation result. |
huks.finish(deprecated)
finish(handle: number, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
Completes the key operation and releases resources. This API uses an asynchronous callback to return the result. huks.init, huks.update, and huks.finish must be used together.
NOTE
This API is deprecated since API version 9. You are advised to use huks.finishSession9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the finish operation. |
options | HuksOptions | Yes | Parameter set used for the finish operation. |
callback | AsyncCallback<HuksResult> | Yes | Callback invoked to return the finish operation result. |
huks.finish(deprecated)
finish(handle: number, options: HuksOptions) : Promise<HuksResult>
Completes the key operation and releases resources. This API uses a promise to return the result. huks.init, huks.update, and huks.finish must be used together.
NOTE
This API is deprecated since API version 9. You are advised to use huks.finishSession9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the finish operation. |
options | HuksOptions | Yes | Parameter set used for the finish operation. |
Return value
Type | Description |
---|---|
Promise<HuksResult> | Promise used to return the result. |
huks.abort(deprecated)
abort(handle: number, options: HuksOptions, callback: AsyncCallback<HuksResult>) : void
Aborts the use of the key. This API uses an asynchronous callback to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.abortSession9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the abort operation. |
options | HuksOptions | Yes | Parameter set used for the abort operation. |
callback | AsyncCallback<HuksResult> | Yes | Callback invoked to return the abort operation result. |
Example
/* huks.init, huks.update, and huks.finish must be used together.
* If an error occurs in any of them, huks.abort must be called to terminate the use of the key.
*
* The following uses the callback of an RSA 1024 key as an example.
*/
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_1024
};
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 = "Failed to complete the key operation. 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 = "Failed to abort the use of the key. catch errorMessage:" + JSON.stringify(err)
});
console.log(resultMessage);
}
huks.abort(deprecated)
abort(handle: number, options: HuksOptions) : Promise<HuksResult>;
Aborts the use of the key. This API uses a promise to return the result.
NOTE
This API is deprecated since API version 9. You are advised to use huks.abortSession9+.
System capability: SystemCapability.Security.Huks
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
handle | number | Yes | Handle for the abort operation. |
options | HuksOptions | Yes | Parameter set used for the abort operation. |
Return value
Type | Description |
---|---|
Promise<HuksResult> | Promise used to return the abort operation result. |
Example
/* huks.init, huks.update, and huks.finish must be used together.
* If an error occurs in any of them, huks.abort must be called to terminate the use of the key.
*
* The following uses the promise of an RSA 1024-bit key as an example.
*/
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_1024
};
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)}`);
});
});
}
HuksHandle(deprecated)
Defines the HUKS handle structure.
System capability: SystemCapability.Security.Huks
Name | Type | Mandatory | Description |
---|---|---|---|
errorCode | number | Yes | Error code. |
handle | number | Yes | Value of the handle. |
token | Uint8Array | No | Challenge obtained after the init operation. |
HuksResult(deprecated)
Defines the HuksResult structure.
System capability: SystemCapability.Security.Huks
Name | Type | Mandatory | Description |
---|---|---|---|
errorCode | number | Yes | Error code. |
outData | Uint8Array | No | Output data. |
properties | Array<HuksParam> | No | Property information. |
certChains | Array<string> | No | Certificate chain information. |
HuksErrorCode(deprecated)
Enumerates the error codes.
System capability: SystemCapability.Security.Huks
Name | Value | Description |
---|---|---|
HUKS_SUCCESS | 0 | Success. |
HUKS_FAILURE | -1 | Failure. |
HUKS_ERROR_BAD_STATE | -2 | Incorrect state. |
HUKS_ERROR_INVALID_ARGUMENT | -3 | Invalid argument. |
HUKS_ERROR_NOT_SUPPORTED | -4 | Not supported. |
HUKS_ERROR_NO_PERMISSION | -5 | No permission. |
HUKS_ERROR_INSUFFICIENT_DATA | -6 | Insufficient data. |
HUKS_ERROR_BUFFER_TOO_SMALL | -7 | Insufficient buffer. |
HUKS_ERROR_INSUFFICIENT_MEMORY | -8 | Insufficient memory. |
HUKS_ERROR_COMMUNICATION_FAILURE | -9 | Communication failure. |
HUKS_ERROR_STORAGE_FAILURE | -10 | Insufficient storage space. |
HUKS_ERROR_HARDWARE_FAILURE | -11 | Hardware fault. |
HUKS_ERROR_ALREADY_EXISTS | -12 | The object already exists. |
HUKS_ERROR_NOT_EXIST | -13 | The object does not exist. |
HUKS_ERROR_NULL_POINTER | -14 | Null pointer. |
HUKS_ERROR_FILE_SIZE_FAIL | -15 | Incorrect file size. |
HUKS_ERROR_READ_FILE_FAIL | -16 | Failed to read the file. |
HUKS_ERROR_INVALID_PUBLIC_KEY | -17 | Invalid public key. |
HUKS_ERROR_INVALID_PRIVATE_KEY | -18 | Invalid private key. |
HUKS_ERROR_INVALID_KEY_INFO | -19 | Invalid key information. |
HUKS_ERROR_HASH_NOT_EQUAL | -20 | The hash values are not equal. |
HUKS_ERROR_MALLOC_FAIL | -21 | MALLOC failed. |
HUKS_ERROR_WRITE_FILE_FAIL | -22 | Failed to write the file. |
HUKS_ERROR_REMOVE_FILE_FAIL | -23 | Failed to delete the file. |
HUKS_ERROR_OPEN_FILE_FAIL | -24 | Failed to open the file. |
HUKS_ERROR_CLOSE_FILE_FAIL | -25 | Failed to close the file. |
HUKS_ERROR_MAKE_DIR_FAIL | -26 | Failed to create the directory. |
HUKS_ERROR_INVALID_KEY_FILE | -27 | Invalid key file. |
HUKS_ERROR_IPC_MSG_FAIL | -28 | Incorrect IPC information. |
HUKS_ERROR_REQUEST_OVERFLOWS | -29 | Request overflows. |
HUKS_ERROR_PARAM_NOT_EXIST | -30 | The parameter does not exist. |
HUKS_ERROR_CRYPTO_ENGINE_ERROR | -31 | CRYPTO ENGINE error. |
HUKS_ERROR_COMMUNICATION_TIMEOUT | -32 | Communication timed out. |
HUKS_ERROR_IPC_INIT_FAIL | -33 | IPC initialization failed. |
HUKS_ERROR_IPC_DLOPEN_FAIL | -34 | IPC DLOPEN failed. |
HUKS_ERROR_EFUSE_READ_FAIL | -35 | Failed to read eFUSE. |
HUKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST | -36 | New root key material exists. |
HUKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL | -37 | Failed to update the root key material. |
HUKS_ERROR_VERIFICATION_FAILED | -38 | Failed to verify the certificate chain. |
HUKS_ERROR_CHECK_GET_ALG_FAIL | -100 | Failed to obtain the ALG. |
HUKS_ERROR_CHECK_GET_KEY_SIZE_FAIL | -101 | Failed to obtain the key size. |
HUKS_ERROR_CHECK_GET_PADDING_FAIL | -102 | Failed to obtain the padding algorithm. |
HUKS_ERROR_CHECK_GET_PURPOSE_FAIL | -103 | Failed to obtain the key purpose. |
HUKS_ERROR_CHECK_GET_DIGEST_FAIL | -104 | Failed to obtain the digest algorithm. |
HUKS_ERROR_CHECK_GET_MODE_FAIL | -105 | Failed to obtain the cipher mode. |
HUKS_ERROR_CHECK_GET_NONCE_FAIL | -106 | Failed to obtain the nonce. |
HUKS_ERROR_CHECK_GET_AAD_FAIL | -107 | Failed to obtain the AAD. |
HUKS_ERROR_CHECK_GET_IV_FAIL | -108 | Failed to obtain the initialization vector (IV). |
HUKS_ERROR_CHECK_GET_AE_TAG_FAIL | -109 | Failed to obtain the AE flag. |
HUKS_ERROR_CHECK_GET_SALT_FAIL | -110 | Failed to obtain the salt value. |
HUKS_ERROR_CHECK_GET_ITERATION_FAIL | -111 | Failed to obtain the number of iterations. |
HUKS_ERROR_INVALID_ALGORITHM | -112 | Invalid algorithm. |
HUKS_ERROR_INVALID_KEY_SIZE | -113 | Invalid key size. |
HUKS_ERROR_INVALID_PADDING | -114 | Invalid padding algorithm. |
HUKS_ERROR_INVALID_PURPOSE | -115 | Invalid key purpose. |
HUKS_ERROR_INVALID_MODE | -116 | Invalid cipher mode. |
HUKS_ERROR_INVALID_DIGEST | -117 | Invalid digest algorithm. |
HUKS_ERROR_INVALID_SIGNATURE_SIZE | -118 | Invalid signature size. |
HUKS_ERROR_INVALID_IV | -119 | Invalid IV. |
HUKS_ERROR_INVALID_AAD | -120 | Invalid AAD. |
HUKS_ERROR_INVALID_NONCE | -121 | Invalid nonce. |
HUKS_ERROR_INVALID_AE_TAG | -122 | Invalid AE tag. |
HUKS_ERROR_INVALID_SALT | -123 | Invalid salt value. |
HUKS_ERROR_INVALID_ITERATION | -124 | Invalid iteration count. |
HUKS_ERROR_INVALID_OPERATION | -125 | Invalid operation. |
HUKS_ERROR_INTERNAL_ERROR | -999 | Internal error. |
HUKS_ERROR_UNKNOWN_ERROR | -1000 | Unknown error. |