From 7ff63f3aa8aa53b5b49c431596ed11d0c9477dee Mon Sep 17 00:00:00 2001 From: Annie_wang Date: Wed, 15 Feb 2023 14:46:25 +0800 Subject: [PATCH] update docs Signed-off-by: Annie_wang --- .../reference/apis/js-apis-huks.md | 62 ++--- .../figures/huks_import_wrapped_key.png | Bin 69850 -> 71146 bytes .../figures/huks_key_user_auth_work_flow.png | Bin 16550 -> 17140 bytes .../security/huks-guidelines.md | 241 ++++++++---------- 4 files changed, 143 insertions(+), 160 deletions(-) diff --git a/en/application-dev/reference/apis/js-apis-huks.md b/en/application-dev/reference/apis/js-apis-huks.md index 1811193f0a..cad81d4e80 100644 --- a/en/application-dev/reference/apis/js-apis-huks.md +++ b/en/application-dev/reference/apis/js-apis-huks.md @@ -75,7 +75,7 @@ Generates a key. This API uses an asynchronous callback to return the result. | -------- | --------------------------- | ---- | --------------------------------------------- | | keyAlias | string | Yes | Alias of the key. | | options | [HuksOptions](#huksoptions) | Yes | Tags required for generating the key. The algorithm, key purpose, and key length are mandatory.| -| callback | AsyncCallback\ | Yes | Callback that returns no value.| +| callback | AsyncCallback\ | Yes | Callback invoked to return the result. If the operation fails, **err** is returned.| **Example** @@ -186,7 +186,7 @@ Deletes a key. This API uses an asynchronous callback to return the result. | -------- | --------------------------- | ---- | --------------------------------------------- | | keyAlias | string | Yes | Key alias passed in when the key was generated. | | options | [HuksOptions](#huksoptions) | Yes | Empty object (leave this parameter empty). | -| callback | AsyncCallback\ | Yes | Callback that returns no value.| +| callback | AsyncCallback\ | Yes | Callback invoked to return the result. If the operation fails, **err** is returned.| **Example** @@ -289,7 +289,7 @@ Imports a key in plaintext. This API uses an asynchronous callback to return the | -------- | --------------------------- | ---- | --------------------------------------------- | | keyAlias | string | Yes | Alias of the key. | | options | [HuksOptions](#huksoptions) | Yes | Tags required for the import and key to import. The algorithm, key purpose, and key length are mandatory.| -| callback | AsyncCallback\ | Yes | Callback that returns no value.| +| callback | AsyncCallback\ | Yes | Callback invoked to return the result. If the operation fails, **err** is returned.| **Example** @@ -426,7 +426,7 @@ Obtains the certificate used to verify a key. This API uses an asynchronous call | -------- | ---------------------------------------------------- | ---- | --------------------------------------------- | | keyAlias | string | Yes | Alias of the key. The certificate to be obtained stores the key. | | options | [HuksOptions](#huksoptions) | Yes | Parameters and data required for obtaining the certificate. | -| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult9)> | Yes | Callback invoked to return the result. If the operation is successful, no **err** value is returned; otherwise, an error code is returned.| +| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult9)> | Yes | Callback invoked to return the result. If the operation fails, **err** is returned.| **Example** @@ -553,7 +553,7 @@ Obtains the certificate used to verify a key. This API uses a promise to return | Type | Description | | ---------------------------------------------- | --------------------------------------------- | -| Promise<[HuksReturnResult](#huksreturnresult9)> | Promise used to return the result. If the operation is successful, no **err** value is returned; otherwise, an error code is returned.| +| Promise<[HuksReturnResult](#huksreturnresult9)> | Promise used to return the result. If the operation fails, **err** is returned.| **Example** @@ -676,7 +676,7 @@ Imports a wrapped key. This API uses an asynchronous callback to return the resu | 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](#huksoptions) | Yes | Tags required for the import and the wrapped key to import. The algorithm, key purpose, and key length are mandatory.| -| callback | AsyncCallback\ | Yes | Callback that returns no value.| +| callback | AsyncCallback\ | Yes | Callback invoked to return the result. If the operation fails, **err** is returned.| **Example** @@ -1097,9 +1097,9 @@ let emptyOptions = { try { huks.isKeyItemExist(keyAlias, emptyOptions, function (error, data) { if (error) { - console.info(`callback: isKeyItemExist success, data = ${JSON.stringify(data)}`); - } else { console.error(`callback: isKeyItemExist failed, code: ${error.code}, msg: ${error.message}`); + } else { + console.info(`callback: isKeyItemExist success, data = ${JSON.stringify(data)}`); } }); } catch (error) { @@ -1312,7 +1312,7 @@ Aborts the use of the key. This API uses an asynchronous callback to return the | -------- | --------------------------- | ---- | ------------------------------------------- | | handle | number | Yes | Handle of the **Abort** operation. | | options | [HuksOptions](#huksoptions) | Yes | Parameters of the **Abort** operation. | -| callback | AsyncCallback\ | Yes | Callback that returns no value.| +| callback | AsyncCallback\ | Yes | Callback invoked to return the result. If the operation fails, **err** is returned.| **Example** @@ -1580,7 +1580,7 @@ async function huksFinish() { async function huksAbort() { console.log('enter huksAbort'); try { - await huks.abortSession(keyAlias, options) + await huks.abortSession(handle, options) .then ((data) => { console.info(`promise: abortSession success`); }) @@ -1602,26 +1602,26 @@ For details about the error codes, see [KUKS Error Codes](../errorcodes/errorcod **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. | +| 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 @@ -1789,7 +1789,7 @@ Enumerates the tag transfer modes. ## HuksUnwrapSuite9+ -Enumerates the algorithm suites required for encrypted imports. +Enumerates the algorithm suites used for importing an encrypted key. **System capability**: SystemCapability.Security.Huks diff --git a/en/application-dev/security/figures/huks_import_wrapped_key.png b/en/application-dev/security/figures/huks_import_wrapped_key.png index 8ab098ace4f24884fa754acfc66f70b3df4b6162..f798f0c9cf93117ee47e4ba68c5024528fabb4f2 100644 GIT binary patch literal 71146 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 z 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

D@%R`Hr&bN%R|uOI1I$jSi+UT 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 O2s~Z=T-G@yGywnt7+sS9 literal 69850 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 z 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

;o*+xK;8N)6~Q^`)qQ|NKU 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 diff --git a/en/application-dev/security/figures/huks_key_user_auth_work_flow.png b/en/application-dev/security/figures/huks_key_user_auth_work_flow.png index 476279901c0600132f6311c7b4ab316c5319da5f..d41b45a427c9a441bdb2e383f48e640d5fe8f387 100644 GIT binary patch literal 17140 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 literal 16550 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 to Develop** -Use [huks.generateKeyItem(keyAlias,options,callback)](../reference/apis/js-apis-huks.md#huksgeneratekeyitem9) to generate a key. You need to pass in the key alias in **keyAlias**, a key attribute set in **options**, and **callback** to result the result asynchronously. For details about the APIs, see [HUKS](../reference/apis/js-apis-huks.md). - +Use [huks.generateKeyItem(keyAlias,options,callback)](../reference/apis/js-apis-huks.md#huksgeneratekeyitem9) to generate a key. You need to pass in the key alias in **keyAlias**, key attributes in **options**, and **callback** to return the result asynchronously. For details about the APIs, see [HUKS](../reference/apis/js-apis-huks.md). +Procedure: 1. Determine the key alias. -2. Initialize the key attributes.
Use [HuksParam](../reference/apis/js-apis-huks.md#huksparam) to encapsulate key attributes. Use a **HuksParam** array to assign values to the **properties** field of [HuksOptions](../reference/apis/js-apis-huks.md#huksoptions). The parameters [HuksKeyAlg](../reference/apis/js-apis-huks.md#hukskeyalg), [HuksKeySize](../reference/apis/js-apis-huks.md#hukskeysize), and [HuksKeyPurpose](../reference/apis/js-apis-huks.md#hukskeypurpose) are mandatory. +2. Initialize the key attributes.
Use [HuksParam](../reference/apis/js-apis-huks.md#huksparam) to encapsulate key attributes and use a **HuksParam** array to assign values to the **properties** field of [HuksOptions](../reference/apis/js-apis-huks.md#huksoptions). The parameters [HuksKeyAlg](../reference/apis/js-apis-huks.md#hukskeyalg), [HuksKeySize](../reference/apis/js-apis-huks.md#hukskeysize), and [HuksKeyPurpose](../reference/apis/js-apis-huks.md#hukskeypurpose) are mandatory. 3. Pass in the key alias and key parameter set to generate a key. - - > **NOTE** > > The key alias cannot exceed 64 bytes. -**Sample code** +**Sample Code** ```ts /* @@ -30,7 +28,7 @@ Use [huks.generateKeyItem(keyAlias,options,callback)](../reference/apis/js-apis- import huks from '@ohos.security.huks'; /* - * Determine the key alias and encapsulate the key attribute set. + * Determine the key alias and encapsulate the key attributes. */ let keyAlias = 'dh_key'; let properties = new Array(); @@ -96,7 +94,7 @@ async function TestGenKey() { ``` ## Key Import -If the key is generated outside the HUKS (for example, generated through key agreement or by a server), the application can import the key to the HUKS for management. The HUKS supports import of keys in plaintext. However, if keys are imported in plaintext, the keys are exposed in the REE memory. This operation applies to lightweight devices or security-insensitive services. For security-sensitive services, use the secure import provided by the HUKS. Secure import allows the keys generate keys by services to be transferred to the HUKS through an end-to-end encrypted transmission channel. +A key generated outside the HUKS (for example, generated through key agreement or by a server) can be imported to the HUKS for management. The HUKS supports import of keys in plaintext. However, if a key is imported in plaintext, the key is exposed in the REE memory. This operation applies to lightweight devices or security-insensitive services. For security-sensitive services, use the secure import provided by the HUKS. Secure import allows the keys generated for services to be transferred to the HUKS through an end-to-end encrypted transmission channel. Once a key is imported to the HUKS, its plaintext will not be exposed outside the HUKS throughout the lifecycle of the key. @@ -105,16 +103,16 @@ Once a key is imported to the HUKS, its plaintext will not be exposed outside th ### Importing a Key in Plaintext -Use [huks.importKeyItem(keyAlias,options,callback)](../reference/apis/js-apis-huks.md#huksimportkeyitem9) to import a key in plaintext. You need to pass in the key alias in **keyAlias**, key material and attribute set in **options**, and **callback** to return the result asynchronously. For details about the APIs, see [HUKS](../reference/apis/js-apis-huks.md). +Use [huks.importKeyItem(keyAlias,options,callback)](../reference/apis/js-apis-huks.md#huksimportkeyitem9) to import a key in plaintext. You need to pass in the key alias in **keyAlias**, key material and attributes in **options**, and **callback** to return the result asynchronously. For details about the APIs, see [HUKS](../reference/apis/js-apis-huks.md). 1. Determine the key alias. -2. Encapsulate the key material and key attribute set.
The key material must comply with [HUKS key material formats](./huks-appendix.md#key-material-formats). The **inData** value of [HuksOptions](../reference/apis/js-apis-huks.md#huksoptions) must be in the Uint8Array form. Encapsulate key attributes in [HuksParam](../reference/apis/js-apis-huks.md#huksparam), and use a **HuksParam** array to assign values to the **properties** field. The key attribute set must contain [HuksKeyAlg](../reference/apis/js-apis-huks.md#hukskeyalg), [HuksKeySize](../reference/apis/js-apis-huks.md#hukskeysize), and [HuksKeyPurpose](../reference/apis/js-apis-huks.md#hukskeypurpose). +2. Encapsulate the key material and key attributes.
The key material must comply with [HUKS key material formats](./huks-appendix.md#key-material-formats). The **inData** value of [HuksOptions](../reference/apis/js-apis-huks.md#huksoptions) must be in the Uint8Array format. Encapsulate key attributes in [HuksParam](../reference/apis/js-apis-huks.md#huksparam), and use a **HuksParam** array to assign values to the **properties** field. The key attributes must contain [HuksKeyAlg](../reference/apis/js-apis-huks.md#hukskeyalg), [HuksKeySize](../reference/apis/js-apis-huks.md#hukskeysize), and [HuksKeyPurpose](../reference/apis/js-apis-huks.md#hukskeypurpose). 3. Import the key. -**Sample code** +**Sample Code** ```ts /* @@ -133,7 +131,7 @@ let plainTextSize32 = new Uint8Array([ let keyAlias = 'AES256Alias_sample'; /* - * Encapsulate the key attribute set and key material. + * Encapsulate the key attributes and key material. */ let properties = new Array(); properties[0] = { @@ -174,7 +172,7 @@ try { Check whether the key exists. If yes, the key is imported successfully. -**Sample code** +**Sample Code** ```ts import huks from '@ohos.security.huks'; @@ -207,13 +205,11 @@ try { } ``` -### Importing a Wrapped Key - -Compared with import of plaintext, secure import has complex key material and operations. The following figure illustrates the development process of secure import. - +### Importing a Key Securely +Compared with import of plaintext, secure import involves complex key material and operations. The following figure illustrates the basic development process of secure import. -**Figure 2** Development process of secure import +**Figure 1** Secure import process ![huks_import_wrapped_key](figures/huks_import_wrapped_key.png) @@ -223,39 +219,36 @@ Compared with import of plaintext, secure import has complex key material and op **Available APIs** You need to use the APIs for generating a key, exporting a public key, importing a wrapped key, and deleting a key in sequence. - -**Table 1** APIs for secure import - | API | Description | | -------------------------------------- | ----------------------------| |generateKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void| Generates a key.| -|exportKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void| Exports the public key of a key pair.| -|importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void|Imports a wrapped key.| -|deleteKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void|Deletes a key.| +|exportKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void| Exports the public key of a key pair.| +|importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions, callback: AsyncCallback) : void|Imports an wrapped key.| +|deleteKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void|Deletes a key.| ->**NOTE**
The public key plaintext material returned by **exportKeyItem()** is encapsulated in X.509 format, and the key material to be imported by **importWrappedKeyItem()** must be encapsulated in **LengthData-Data** format. Specifically, the application needs to apply for a Uint8Array and encapsulate the Uint8Array in the sequence listed in the following table. +>**NOTE**
The public key plaintext material returned by **exportKeyItem()** is encapsulated in X.509 format, and the key material to be imported by **importWrappedKeyItem()** must be encapsulated in **LengthData-Data** format. Specifically, the application needs to request a Uint8Array and encapsulate the Uint8Array in the sequence listed in the following table. **Table 2** Format of the wrapped key material -| Content| Public Key Length (Lpk2)| Public Key pk2| k2 AAD2 Length LAAD2| k2 Encryption Parameter AAD2| k2 Nonce2 Length LNonce2| k2 Encryption Parameter Nonce2| +| Content| Public Key Length (Lpk2)| Public Key (pk2) | k2 AAD Length (LAAD2) | k2 AAD (AAD2) | k2 Nonce Length (LNonce2) | k2 Nonce (Nonce2) | | :--: |:----:|:----: |:----: | :----: | :----:|:----:| |Length| 4 bytes|Lpk2 bytes| 4 bytes| LAAD2 bytes| 4 bytes| LNonce2 bytes| -| Content| k2 AEAD2 Length LAEAD2| k2 Encryption Parameter AEAD2| k3 Ciphertext Length Lk3_enc| k3 Ciphertext k3_enc| k3 AAD3 Length LAAD3| k3 Encryption Parameter AAD3| +| Content| k2 AEAD Length (LAEAD2) | k2 AEAD (AEAD2) | k3 Ciphertext Length (Lk3_enc) | k3 Ciphertext (k3_enc) | k3 AAD Length (LAAD3) | k3 AAD (AAD3) | |Length| 4 bytes|LAEAD2 bytes| 4 bytes| Lk3_enc bytes| 4 bytes| LAAD3 bytes| -| Content| k3 Nonce3 Length LNonce3| k3 Encryption Parameter Nonce3| k3 AEAD3 Length LAEAD3| k3 Encryption Parameter AEAD3| Length of **k1'_size** Lk1'_size| Key Plaintext Material Length k1'_size| +| Content| k3 Nonce Length (LNonce3) | k3 Nonce (Nonce3) | k3 AEAD Length (LAEAD3) | k3 AEAD (AEAD3) | Length of **k1'_size** (Lk1'_size) | Key Plaintext Material Length (k1'_size) | |Length| 4 bytes|LNonce3 bytes| 4 bytes| LAEAD3 bytes| 4 bytes| Lk1'_size bytes| -|Content|k1' Ciphertext Length Lk1'_enc| k1' ciphertext k1'_enc| | | | | +|Content|k1' Ciphertext Length (Lk1'_enc)| k1' ciphertext (k1'_enc) | | | | | |Length| 4 bytes|Lk1'_enc bytes| | | | | **How to Develop** -The following example provides the development involving HUKS APIs (using the ECDH key agreement suite). The operations performed by the service are not included. -1. Convert the key material to the HUKS format. -2. Generate a wrapping key (a key used for secure import). +The following example presents the development involving HUKS APIs (using the ECDH key agreement suite). The operations performed by the service are not included. +1. Convert the key material into the HUKS format. +2. Generate a key for secure import. 3. Export the public key material. -4. Wrap the key material to be imported. -5. Import the wrapped key material. -6. Delete the wrapping key. +4. Encapsulate (encrypt) the key material to be imported. +5. Import the encapsulated key material. +6. Delete the key used for secure import. **Sample code** @@ -293,9 +286,9 @@ let inputEccPair = new Uint8Array([ ]); /* - * Encapsulate the key attribute set. + * Encapsulate the key attributes. */ -// Attribute set for the wrapping key. +// Attributes for the key used for secure import. let properties = new Array(); properties[0] = { tag: huks.HuksTag.HUKS_TAG_ALGORITHM, @@ -392,7 +385,7 @@ async function publicExportKeyFunc(keyAlias:string, huksOptions:huks.HuksOptions } } -// Generate a wrapping key (the key is imported here). +// Generate a key used for secure import (the key is imported here). function importKeyItem(keyAlias:string, huksOptions:huks.HuksOptions, throwObject) { return new Promise((resolve, reject) => { try { @@ -468,7 +461,7 @@ function importWrappedKeyItem(keyAlias:string, wrappingKeyAlias:string, huksOpti }); } -// Delete the wrapping key. +// Delete the key used for secure import. function deleteKeyItem(keyAlias:string, huksOptions:huks.HuksOptions, throwObject) { return new Promise((resolve, reject) => { try { @@ -509,12 +502,12 @@ async function publicDeleteKeyFunc(keyAlias:string, huksOptions:huks.HuksOptions async function ImportWrappedKeyNormalTest() { console.info(`enter ImportWrapKey test`); /* - * Generate a wrapping key (the key is imported here). + * Generate a key for secure import (the key is imported here). */ await publicImportKeyFunc(wrapAlias, huksOptions); /* - * Export the public key material of the wrapping key. + * Export the public key material of the key used for secure import. */ await publicExportKeyFunc(wrapAlias, huksOptions); @@ -524,11 +517,11 @@ async function ImportWrappedKeyNormalTest() { /* Encapsulate the key material to be imported. * Create the importOptions.inData field in the following format: - * pk2 length (4 bytes) + pk2 data + AAD2 length (4 bytes) + AAD2 data + - * Nonce2 length (4 bytes) + Nonce2 data + AEAD2 length (4 bytes) + AEAD2 data + - * k3 ciphertext length (4 bytes) + k3 data + AAD3 length (4 bytes) + AAD3 data + - * Nonce3 length (4 bytes) +Nonce3 data + AEAD3 length (4 bytes) + AEAD3 data + - * k1'_size length (4 bytes) + k1'_size + k1'_enc length (4 bytes) + k1'_enc data + * pk2 length (4 bytes) + pk2 + AAD2 length (4 bytes) + AAD2 + + * Nonce2 length (4 bytes) + Nonce2 + AEAD2 length (4 bytes) + AEAD2 + + * k3 ciphertext length (4 bytes) + k3 ciphertext + AAD3 length (4 bytes) + AAD3 + + * Nonce3 length (4 bytes) +Nonce3 + AEAD3 length (4 bytes) + AEAD3 + + * k1'_size length (4 bytes) + k1'_size + k1'_enc length (4 bytes) + k1'_enc */ let inputKey = new Uint8Array([ 0x5b, 0x00, 0x00, 0x00, // ECC-P-256 public key length (DER format defined in X.509): 91 @@ -581,14 +574,14 @@ async function ImportWrappedKeyNormalTest() { importOptions.inData = inputKey; /* - * Import the wrapped key material. + * Import the encapsulated key material. */ await publicImportWrappedKey(importAlias, wrapAlias, importOptions); /* - * Delete the wrapping key. + * Delete the key used for secure import. */ - await publicDeleteKeyFunc(wrapAlias, huksOptions); + await publicDeleteKeyFunc(wrapAlias, huksOptions); } ``` @@ -596,13 +589,13 @@ async function ImportWrappedKeyNormalTest() { Check whether the key exists. If yes, the key is imported successfully. -**Sample code** +**Sample Code** ```ts import huks from '@ohos.security.huks'; /* - * Determine the key alias and encapsulate the key attribute set. + * Determine the key alias and encapsulate the key attributes. */ let keyAlias = 'importAlias'; let isKeyExist; @@ -642,7 +635,7 @@ To ensure data confidentiality and integrity, you may need to encrypt or decrypt **General Development Process** The HUKS operates data based on key sessions. The general process is as follows: -1. (Mandatory) Use [huks.initSession()](../reference/apis/js-apis-huks.md#huksinitsession9) to initialize a key session.
You need to pass in the key alias and key operation parameters to initialize a key session, and obtain the session handle. The key operation parameters must contain the parameters required by the cipher algorithm, including the cipher algorithm, key size, key purpose, working mode, padding mode, hash mode, IV, nonce, and AAD. If access control is set for the key, other parameters are required. For details, see [Key Access Control](#key-access-control). +1. (Mandatory) Use [huks.initSession()](../reference/apis/js-apis-huks.md#huksinitsession9) to initialize a key session.
You need to pass in the key alias and key operation parameters to initialize a key session, and obtain a session handle. The key operation parameters must contain the parameters required by the cipher algorithm, including the cipher algorithm, key size, key purpose, working mode, padding mode, hash mode, IV, nonce, and AAD. If access control is set for the key, other parameters are required. For details, see [Key Access Control](#key-access-control). 2. (Optional) Use [huks.updateSession()](../reference/apis/js-apis-huks.md#huksupdatesession9) to pass in data by segment.
Perform this step only if the data exceeds 100 KB or the cipher algorithm requires operations by data segment. Otherwise, skip this step. 3. (Mandatory) Use [huks.finishSession()](../reference/apis/js-apis-huks.md#huksfinishsession9) to finalize the key session operation.
Pass in the last data segment and perform the key session operation. If an error occurs during the process or the data passed in is not required, use [huks.abortSession()](../reference/apis/js-apis-huks.md#huksabortsession9) to abort the session. @@ -654,7 +647,7 @@ The HUKS operates data based on key sessions. The general process is as follows: import huks from '@ohos.security.huks'; /* - * Determine the key alias and encapsulate the key attribute set. + * Determine the key alias and encapsulate the key attributes. */ let srcKeyAlias = 'sm4_Key'; let IV = '0000000000000000'; @@ -979,11 +972,13 @@ async function testSm4Cipher() { import huks from '@ohos.security.huks'; /* - * Determine the key alias and encapsulate the key attribute set. + * Determine the key alias and encapsulate the key attributes. */ let generateKeyAlias = 'sm2_Key'; let importKeyAlias = 'importKeyAlias'; -let signVerifyInData = 'signVerifyInDataForTest'; +let signVerifyInData1 = 'signVerifyInDataForTestFirstText'; +let signVerifyInData2 = 'signVerifyInDataForTestSecondText'; +let signVerifyInData = [signVerifyInData1, signVerifyInData2]; let handle; let exportKey; let finishOutData; @@ -1340,9 +1335,10 @@ async function testSm2SignVerify() { await publicInitFunc(generateKeyAlias, signOptions); signHandle = handle; - signOptions.inData = StringToUint8Array(signVerifyInData) - await publicUpdateFunc(signHandle, signOptions); - + for (var index = 0; index < signVerifyInData.length; index++) { + signOptions.inData = StringToUint8Array(signVerifyInData[index]); + await publicUpdateFunc(signHandle, signOptions); + } signOptions.inData = new Uint8Array(new Array()); await publicFinishFunc(signHandle, signOptions); signFinishOutData = finishOutData; @@ -1359,10 +1355,10 @@ async function testSm2SignVerify() { await publicInitFunc(importKeyAlias, verifyOptions); verifyHandle = handle; - - verifyOptions.inData = StringToUint8Array(signVerifyInData) - await publicUpdateFunc(verifyHandle, verifyOptions); - + for (var index = 0; index < signVerifyInData.length; index++) { + verifyOptions.inData = StringToUint8Array(signVerifyInData[index]); + await publicUpdateFunc(verifyHandle, verifyOptions); + } verifyOptions.inData = signFinishOutData; await publicFinishFunc(verifyHandle, verifyOptions); @@ -1379,7 +1375,7 @@ async function testSm2SignVerify() { import huks from '@ohos.security.huks'; /* - * Determine the key alias and encapsulate the key attribute set. + * Determine the key alias and encapsulate the key attributes. */ let srcKeyAliasFirst = "AgreeX25519KeyFirstAlias"; let srcKeyAliasSecond = "AgreeX25519KeySecondAlias"; @@ -1743,7 +1739,7 @@ async function testAgree() { import huks from '@ohos.security.huks'; /* - * Determine the key alias and encapsulate the key attribute set. + * Determine the key alias and encapsulate the key attributes. */ let srcKeyAlias = "hkdf_Key"; let deriveHkdfInData = "deriveHkdfTestIndata"; @@ -2064,83 +2060,69 @@ The HUKS also restricts the key usage. For example, the AES keys can only be use When generating or importing a key, you can enable user identity authentication for the key use. You can specify a subset of credentials (lock screen password, fingerprint, and face) for user identity authentication. After a key is generated or imported, unauthorized key access can be prevented even if the application process is attacked. Key access control applies to security-sensitive scenarios, such as password-free login, password-free payment, and automatic password filling. -In addition to user identity authentication, the authorized key access type (key expiration condition) must be either of the following types: -- Invalidate the key when the screen lock password is cleared.
This type takes effect only when a screen lock password has been set. If the screen lock password is cleared, the key becomes invalid permanently. The key will not be invalidated if the screen lock password is modified. Use this type for user-related data protection or access based on screen lock passwords. -- Invalidate the key when new biometric enrollments are added.
This type takes effect only when at least one biometric feature (such as fingerprint) has been enrolled. The key becomes invalid permanently once a new biometric feature is enrolled. The key will not be invalidated if the biometric feature is deleted. You can use this type for scenarios, such as password-free login or payment. +In addition to user identity authentication, the HUKS provides the following modes ([HuksAuthAccessType](../reference/apis/js-apis-huks.md#huksauthaccesstype9)) for automatically invalidating a key: +- Invalidate the key when the screen lock password is cleared.
This mode takes effect only when a screen lock password has been set. If the screen lock password is cleared, the key becomes invalid permanently. The key will not be invalidated if the screen lock password is modified. This mode applies to user-related data protection and access based on screen lock passwords. +- Invalidate the key when new biometric enrollments are added.
This mode takes effect only when at least one biometric feature (such as fingerprint) has been enrolled. The key becomes invalid permanently once a new biometric feature is enrolled. The key will not be invalidated if the biometric feature is deleted. This mode applies to scenarios, such as password-free login or payment. -To ensure the validity of the user authentication result, the HUKS supports challenge value verification. Before user identity authentication, obtain the challenge (in the [HuksSessionHandle](../reference/apis/js-apis-huks.md#hukssessionhandle9) returned by [huks.initSession()](../reference/apis/js-apis-huks.md#huksinitsession9)) from the HUKS and pass in the challenge in [userIAM_userAuth.getAuthInstance](../reference/apis/js-apis-useriam-userauth.md#authinstance9). The challenge value of the authentication token is then verified during key operations. +To ensure the validity of the user authentication result, the HUKS supports challenge verification. Before user identity authentication, obtain the challenge (in [HuksSessionHandle](../reference/apis/js-apis-huks.md#hukssessionhandle9) returned by [huks.initSession()](../reference/apis/js-apis-huks.md#huksinitsession9)) from the HUKS and pass in the challenge in [userIAM_userAuth.getAuthInstance](../reference/apis/js-apis-useriam-userauth.md#authinstance9). The challenge of the authentication token is then verified during key operations. **How to Develop** -If secondary user identity authentication is enabled for a key, initialize the key session and obtain the challenge value. Then, pass the challenge value to **userIAM_userAuth.getAuthInstance()** for user identity authentication. After the authentication is successful, an authentication token is obtained. The authentication token can be used to perform key operations. +If secondary user identity authentication is enabled for a key, initialize the key session and obtain the challenge. Then, pass the challenge to **userIAM_userAuth.getAuthInstance()** for user identity authentication. After the authentication is successful, an authentication token is obtained. The authentication token can be used to perform key operations. ![huks_key_user_auth_work_flow](./figures/huks_key_user_auth_work_flow.png) **Available APIs** -1. [HuksUserAuthType](../reference/apis/js-apis-huks.md#huksuserauthtype9), [HuksAuthAccessType](../reference/apis/js-apis-huks.md#huksauthaccesstype9), and [HuksChallengeType](../reference/apis/js-apis-huks.md#hukschallengetype9) in the key attribute set are mandatory for key generation/import. - - **Table 3** User authentication types - - | Name | Value | Description | - | ------------------------------- |---|------------------------ | - | HUKS_USER_AUTH_TYPE_FINGERPRINT |0x0001 | Fingerprint authentication. | - | HUKS_USER_AUTH_TYPE_FACE |0x0002 | Facial authentication.| - | HUKS_USER_AUTH_TYPE_PIN |0x0004 | PIN authentication. | - - > **NOTE** - > - > You can specify any or a combination of the three authentication types. - - - **Table 4** Secure access types - - | Name | Value | Description | - | --------------------------------------- | ---- | ------------------------------------------------ | - | HUKS_AUTH_ACCESS_INVALID_CLEAR_PASSWORD | 1 | Invalidates the key after the screen lock password is cleared. | - | HUKS_AUTH_ACCESS_INVALID_NEW_BIO_ENROLL | 2 | Invalidates the key after a biometric enrollment is added. The user authentication types must include the biometric authentication.| - - > **NOTE** - > - > **HUKS_AUTH_ACCESS_INVALID_CLEAR_PASSWORD** and **HUKS_AUTH_ACCESS_INVALID_NEW_BIO_ENROLL** are mutually exclusive. - - **Table 5** Challenge types - - | Name | Value | Description | - | ------------------------------- | ---- | ------------------------------ | - | HUKS_CHALLENGE_TYPE_NORMAL | 0 | Normal challenge, which requires an independent user authentication for each use of the key.| - | HUKS_CHALLENGE_TYPE_CUSTOM | 1 | Custom challenge, which supports only one user authentication for multiple keys.| - | HUKS_CHALLENGE_TYPE_NONE | 2 | No challenge is required during user authentication.| - - > **NOTICE** - > - > The three challenge types are mutually exclusive. - > - > If the challenge type is **HUKS_CHALLENGE_TYPE_NONE**, no challenge is required. However, the key can be accessed only within a specified time period (set by **HUKS_TAG_AUTH_TIMEOUT**) after a successful authentication. The maximum value of **HUKS_TAG_AUTH_TIMEOUT** is 60 seconds. - - -2. To use a key, initialize the key session, and determine whether a challenge is required based on the challenge type specified when the key is generated or imported. - - **Table 6** APIs for using a key - - | API | Description | - |-------------- | ------------------------------------ | - | initSession(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void |Initializes the key session and obtains the challenge value.| - | updateSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback\) : void| Operates data by segment and passes the authentication token.| - | finishSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback\) : void | Finalizes the key session.| - - +When a key is generated or imported, [HuksUserAuthType](../reference/apis/js-apis-huks.md#huksuserauthtype9), [HuksAuthAccessType](../reference/apis/js-apis-huks.md#huksauthaccesstype9), and [HuksChallengeType](../reference/apis/js-apis-huks.md#hukschallengetype9) in the key attributes are mandatory. + +**Table 3** User authentication types + +| Name | Value | Description | +| ------------------------------- |---|------------------------ | +| HUKS_USER_AUTH_TYPE_FINGERPRINT |0x0001 | Fingerprint authentication.
Fingerprint authentication, facial authentication, and PIN authentication can be enabled at the same time. | +| HUKS_USER_AUTH_TYPE_FACE |0x0002 | Facial authentication.
Fingerprint authentication, facial authentication, and PIN authentication can be enabled at the same time. | +| HUKS_USER_AUTH_TYPE_PIN |0x0004 | PIN authentication.
Fingerprint authentication, facial authentication, and PIN authentication can be enabled at the same time. | + +**Table 4** Secure access types +| Name | Value | Description | +| --------------------------------------- | ---- | ------------------------------------------------ | +| HUKS_AUTH_ACCESS_INVALID_CLEAR_PASSWORD | 1 | Invalidate the key after the screen lock password is cleared. | +| HUKS_AUTH_ACCESS_INVALID_NEW_BIO_ENROLL | 2 | Invalidate the key after a biometric enrollment is added. The user authentication types must include the biometric authentication. | + +**Table 5** Challenge types + +| Name | Value | Description | +| ------------------------------- | ---- | ------------------------------ | +| HUKS_CHALLENGE_TYPE_NORMAL | 0 | Normal challenge, which requires an independent user authentication for each use of the key.| +| HUKS_CHALLENGE_TYPE_CUSTOM | 1 | Custom challenge, which supports only one user authentication for multiple keys.| +| HUKS_CHALLENGE_TYPE_NONE | 2 | No challenge is required during user authentication.| + +> **NOTICE** +> +> - The three challenge types are mutually exclusive. +> - If the challenge type is **HUKS_CHALLENGE_TYPE_NONE**, no challenge is required. However, the key can be accessed within a specified time period (set by **HUKS_TAG_AUTH_TIMEOUT**) after a successful authentication. The maximum value of **HUKS_TAG_AUTH_TIMEOUT** is 60 seconds. + +To use a key, initialize the key session and determine whether a challenge is required based on the challenge type specified when the key is generated or imported. + +**Table 6** APIs for using a key + +| API | Description | +| -------------------------------------- | ----------------------------| +|initSession(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void| Initializes a key session and obtains the challenge. | +|updateSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback\) : void| Operates data by segment and passes the authentication token.| +|finishSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback\) : void| Finalizes the key session operation. | + + **How to Develop** - 1. Generate a key and specify user authentication attributes. - ```ts import huks from '@ohos.security.huks'; /* - * Determine the key alias and encapsulate the key attribute set. + * Determine the key alias and encapsulate the key attributes. */ let keyAlias = 'dh_key_fingerprint_access'; let properties = new Array(); @@ -2236,7 +2218,7 @@ import huks from '@ohos.security.huks'; import userIAM_userAuth from '@ohos.userIAM.userAuth'; /* - * Determine the key alias and encapsulate the key attribute set. + * Determine the key alias and encapsulate the key attributes. */ let srcKeyAlias = 'sm4_key_fingerprint_access'; let handle; @@ -2359,7 +2341,7 @@ async function testInitAndAuthFinger() { import huks from '@ohos.security.huks'; /* - * Determine the key alias and encapsulate the key attribute set. + * Determine the key alias and encapsulate the key attributes. */ let srcKeyAlias = 'sm4_key_fingerprint_access'; let IV = '1234567890123456'; @@ -2511,7 +2493,8 @@ The HUKS provides attestation for the public keys of asymmetric key pairs. The H **Available APIs** -**Table 7** APIs for key attestation +**Table 7** API for key attestation + | API | Description | | -------------------------------------- | ----------------------------| |attestKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void| Attests a key.| @@ -2525,7 +2508,7 @@ The HUKS provides attestation for the public keys of asymmetric key pairs. The H import huks from '@ohos.security.huks'; /* - * Determine the key alias and encapsulate the key attribute set. + * Determine the key alias and encapsulate the key attributes. */ let keyAliasString = "key attest"; let aliasString = keyAliasString; -- GitLab