0


鸿蒙开发接口安全:【@ohos.security.huks (通用密钥库系统)】

通用密钥库系统

说明

本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。 HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。

导入模块

  1. import huks from '@ohos.security.huks'

HuksErrorCode

表示错误码的枚举。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_SUCCESS0表示成功。HUKS_FAILURE-1表示失败。HUKS_ERROR_BAD_STATE-2表示错误的状态。HUKS_ERROR_INVALID_ARGUMENT-3表示无效的数据。HUKS_ERROR_NOT_SUPPORTED-4表示不支持。HUKS_ERROR_NO_PERMISSION-5表示没有许可。HUKS_ERROR_INSUFFICIENT_DATA-6表示数据不足。HUKS_ERROR_BUFFER_TOO_SMALL-7表示缓冲区太小。HUKS_ERROR_INSUFFICIENT_MEMORY-8表示内存不足。HUKS_ERROR_COMMUNICATION_FAILURE-9表示通讯失败。HUKS_ERROR_STORAGE_FAILURE-10表示存储故障。HUKS_ERROR_HARDWARE_FAILURE-11表示硬件故障。HUKS_ERROR_ALREADY_EXISTS-12表示已经存在。HUKS_ERROR_NOT_EXIST-13表示不存在。HUKS_ERROR_NULL_POINTER-14表示空指针。HUKS_ERROR_FILE_SIZE_FAIL-15表示文件大小失败。HUKS_ERROR_READ_FILE_FAIL-16表示读取文件失败。HUKS_ERROR_INVALID_PUBLIC_KEY-17表示无效的公钥。HUKS_ERROR_INVALID_PRIVATE_KEY-18表示无效的私钥。HUKS_ERROR_INVALID_KEY_INFO-19表示无效的密钥信息。HUKS_ERROR_HASH_NOT_EQUAL-20表示哈希不相等。HUKS_ERROR_MALLOC_FAIL-21表示MALLOC 失败。HUKS_ERROR_WRITE_FILE_FAIL-22表示写文件失败。HUKS_ERROR_REMOVE_FILE_FAIL-23表示删除文件失败。HUKS_ERROR_OPEN_FILE_FAIL-24表示打开文件失败。HUKS_ERROR_CLOSE_FILE_FAIL-25表示关闭文件失败。HUKS_ERROR_MAKE_DIR_FAIL-26表示创建目录失败。HUKS_ERROR_INVALID_KEY_FILE-27表示无效的密钥文件。HUKS_ERROR_IPC_MSG_FAIL-28表示IPC 信息失败。HUKS_ERROR_REQUEST_OVERFLOWS-29表示请求溢出。HUKS_ERROR_PARAM_NOT_EXIST-30表示参数不存在。HUKS_ERROR_CRYPTO_ENGINE_ERROR-31表示CRYPTO ENGINE错误。HUKS_ERROR_COMMUNICATION_TIMEOUT-32表示通讯超时。HUKS_ERROR_IPC_INIT_FAIL-33表示IPC 初始化失败。HUKS_ERROR_IPC_DLOPEN_FAIL-34表示IPC DLOPEN 失败。HUKS_ERROR_EFUSE_READ_FAIL-35表示EFUSE 读取失败。HUKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST-36表示存在新的根密钥材料。HUKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL-37表示更新根密钥材料失败。HUKS_ERROR_VERIFICATION_FAILED-38表示验证证书链失败。HUKS_ERROR_CHECK_GET_ALG_FAIL-100表示检查获取 ALG 失败。HUKS_ERROR_CHECK_GET_KEY_SIZE_FAIL-101表示检查获取密钥大小失败。HUKS_ERROR_CHECK_GET_PADDING_FAIL-102表示检查获取填充失败。HUKS_ERROR_CHECK_GET_PURPOSE_FAIL-103表示检查获取目的失败。HUKS_ERROR_CHECK_GET_DIGEST_FAIL-104表示检查获取摘要失败。HUKS_ERROR_CHECK_GET_MODE_FAIL-105表示检查获取模式失败。HUKS_ERROR_CHECK_GET_NONCE_FAIL-106表示检查获取随机数失败。HUKS_ERROR_CHECK_GET_AAD_FAIL-107表示检查获取 AAD 失败。HUKS_ERROR_CHECK_GET_IV_FAIL-108表示检查 GET IV 失败。HUKS_ERROR_CHECK_GET_AE_TAG_FAIL-109表示检查获取 AE 标记失败。HUKS_ERROR_CHECK_GET_SALT_FAIL-110表示检查获取SALT失败。HUKS_ERROR_CHECK_GET_ITERATION_FAIL-111表示检查获取迭代失败。HUKS_ERROR_INVALID_ALGORITHM-112表示无效的算法。HUKS_ERROR_INVALID_KEY_SIZE-113表示无效的密钥大小。HUKS_ERROR_INVALID_PADDING-114表示无效的填充。HUKS_ERROR_INVALID_PURPOSE-115表示无效的目的。HUKS_ERROR_INVALID_MODE-116表示无效模式。HUKS_ERROR_INVALID_DIGEST-117表示无效的摘要。HUKS_ERROR_INVALID_SIGNATURE_SIZE-118表示签名大小无效。HUKS_ERROR_INVALID_IV-119表示无效的 IV。HUKS_ERROR_INVALID_AAD-120表示无效的 AAD。HUKS_ERROR_INVALID_NONCE-121表示无效的随机数。HUKS_ERROR_INVALID_AE_TAG-122表示无效的 AE 标签。HUKS_ERROR_INVALID_SALT-123表示无效SALT。HUKS_ERROR_INVALID_ITERATION-124表示无效的迭代。HUKS_ERROR_INVALID_OPERATION-125表示无效操作。HUKS_ERROR_INTERNAL_ERROR-999表示内部错误。HUKS_ERROR_UNKNOWN_ERROR-1000表示未知错误。

HuksKeyPurpose

表示密钥用途。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_KEY_PURPOSE_ENCRYPT1表示密钥用于对明文进行加密操作。HUKS_KEY_PURPOSE_DECRYPT2表示密钥用于对密文进行解密操作。HUKS_KEY_PURPOSE_SIGN4表示密钥用于对数据进行签名。HUKS_KEY_PURPOSE_VERIFY8表示密钥用于验证签名后的数据。HUKS_KEY_PURPOSE_DERIVE16表示密钥用于派生密钥。HUKS_KEY_PURPOSE_WRAP32表示密钥用于加密导入。HUKS_KEY_PURPOSE_UNWRAP64表示密钥加密导出。HUKS_KEY_PURPOSE_MAC128表示密钥用于生成mac消息验证码。HUKS_KEY_PURPOSE_AGREE256表示密钥用于进行密钥协商。

HuksKeyDigest

表示摘要算法。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_DIGEST_NONE0表示无摘要算法。HUKS_DIGEST_MD51表示MD5摘要算法。HUKS_DIGEST_SHA110表示SHA1摘要算法。HUKS_DIGEST_SHA22411表示SHA224摘要算法。HUKS_DIGEST_SHA25612表示SHA256摘要算法。HUKS_DIGEST_SHA38413表示SHA384摘要算法。HUKS_DIGEST_SHA51214表示SHA512摘要算法。

HuksKeyPadding

表示补齐算法。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_PADDING_NONE0表示不使用补齐算法。HUKS_PADDING_OAEP1表示使用OAEP补齐算法。HUKS_PADDING_PSS2表示使用PSS补齐算法。HUKS_PADDING_PKCS1_V1_53表示使用PKCS1_V1_5补齐算法。HUKS_PADDING_PKCS54表示使用PKCS5补齐算法。HUKS_PADDING_PKCS75表示使用PKCS7补齐算法。

HuksCipherMode

表示加密模式。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_MODE_ECB1表示使用ECB加密模式。HUKS_MODE_CBC2表示使用CBC加密模式。HUKS_MODE_CTR3表示使用CTR加密模式。HUKS_MODE_OFB4表示使用OFB加密模式。HUKS_MODE_CCM31表示使用CCM加密模式。HUKS_MODE_GCM32表示使用GCM加密模式。

HuksKeySize

表示密钥长度。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_RSA_KEY_SIZE_512512表示使用RSA算法的密钥长度为512bit。HUKS_RSA_KEY_SIZE_768768表示使用RSA算法的密钥长度为768bit。HUKS_RSA_KEY_SIZE_10241024表示使用RSA算法的密钥长度为1024bit。HUKS_RSA_KEY_SIZE_20482048表示使用RSA算法的密钥长度为2048bit。HUKS_RSA_KEY_SIZE_30723072表示使用RSA算法的密钥长度为3072bit。HUKS_RSA_KEY_SIZE_40964096表示使用RSA算法的密钥长度为4096bit。HUKS_ECC_KEY_SIZE_224224表示使用ECC算法的密钥长度为224bit。HUKS_ECC_KEY_SIZE_256256表示使用ECC算法的密钥长度为256bit。HUKS_ECC_KEY_SIZE_384384表示使用ECC算法的密钥长度为384bit。HUKS_ECC_KEY_SIZE_521521表示使用ECC算法的密钥长度为521bit。HUKS_AES_KEY_SIZE_128128表示使用AES算法的密钥长度为128bit。HUKS_AES_KEY_SIZE_192196表示使用AES算法的密钥长度为196bit。HUKS_AES_KEY_SIZE_256256表示使用AES算法的密钥长度为256bit。HUKS_AES_KEY_SIZE_512512表示使用AES算法的密钥长度为512bit。HUKS_CURVE25519_KEY_SIZE_256256表示使用CURVE25519算法的密钥长度为256bit。HUKS_DH_KEY_SIZE_20482048表示使用DH算法的密钥长度为2048bit。HUKS_DH_KEY_SIZE_30723072表示使用DH算法的密钥长度为3072bit。HUKS_DH_KEY_SIZE_40964096表示使用DH算法的密钥长度为4096bit。

HuksKeyAlg

表示密钥使用的算法。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_ALG_RSA1表示使用RSA算法。HUKS_ALG_ECC2表示使用ECC算法。HUKS_ALG_DSA3表示使用DSA算法。HUKS_ALG_AES20表示使用AES算法。HUKS_ALG_HMAC50表示使用HMAC算法。HUKS_ALG_HKDF51表示使用HKDF算法。HUKS_ALG_PBKDF252表示使用PBKDF2算法。HUKS_ALG_ECDH100表示使用ECDH算法。HUKS_ALG_X25519101表示使用X25519算法。HUKS_ALG_ED25519102表示使用ED25519算法。HUKS_ALG_DH103表示使用DH算法。

HuksKeyGenerateType

表示生成密钥的类型。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_KEY_GENERATE_TYPE_DEFAULT0默认生成的密钥。HUKS_KEY_GENERATE_TYPE_DERIVE1派生生成的密钥。HUKS_KEY_GENERATE_TYPE_AGREE2协商生成的密钥。

HuksKeyFlag

表示密钥的产生方式。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_KEY_FLAG_IMPORT_KEY1表示通过导入公钥接口导入的密钥。HUKS_KEY_FLAG_GENERATE_KEY2表示通过生成密钥接口生成的密钥。HUKS_KEY_FLAG_AGREE_KEY3表示通过生成密钥协商接口生成的密钥。HUKS_KEY_FLAG_DERIVE_KEY4表示通过生成密钥派生接口生成的密钥。

HuksKeyStorageType

表示密钥存储方式。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_STORAGE_TEMP0表示通过本地直接管理密钥。HUKS_STORAGE_PERSISTENT1表示通过HUKS service管理密钥。

HuksSendType

表示发送Tag的方式。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_SEND_TYPE_ASYNC0表示异步发送TAG。HUKS_SEND_TYPE_SYNC1表示同步发送TAG。

HuksTagType

表示Tag的数据类型。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_TAG_TYPE_INVALID0 << 28表示非法的Tag类型。HUKS_TAG_TYPE_INT1 << 28表示该Tag的数据类型为int类型的number。HUKS_TAG_TYPE_UINT2 << 28表示该Tag的数据类型为uint类型的number。HUKS_TAG_TYPE_ULONG3 << 28表示该Tag的数据类型为bigint。HUKS_TAG_TYPE_BOOL4 << 28表示该Tag的数据类型为boolean。HUKS_TAG_TYPE_BYTES5 << 28表示该Tag的数据类型为Uint8Array。

HuksTag

表示调用参数的Tag。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
名称值说明HUKS_TAG_INVALIDHuksTagType.HUKS_TAG_TYPE_INVALID0HUKS_TAG_ALGORITHMHUKS_TAG_TYPE_UINT1HUKS_TAG_PURPOSEHuksTagType.HUKS_TAG_TYPE_UINT2HUKS_TAG_KEY_SIZEHuksTagType.HUKS_TAG_TYPE_UINT3HUKS_TAG_DIGESTHuksTagType.HUKS_TAG_TYPE_UINT4HUKS_TAG_PADDINGHuksTagType.HUKS_TAG_TYPE_UINT5HUKS_TAG_BLOCK_MODEHuksTagType.HUKS_TAG_TYPE_UINT6HUKS_TAG_KEY_TYPEHuksTagType.HUKS_TAG_TYPE_UINT7HUKS_TAG_ASSOCIATED_DATAHuksTagType.HUKS_TAG_TYPE_BYTES8HUKS_TAG_NONCEHuksTagType.HUKS_TAG_TYPE_BYTES9HUKS_TAG_IVHuksTagType.HUKS_TAG_TYPE_BYTES10HUKS_TAG_INFOHuksTagType.HUKS_TAG_TYPE_BYTES11HUKS_TAG_SALTHuksTagType.HUKS_TAG_TYPE_BYTES12HUKS_TAG_PWDHuksTagType.HUKS_TAG_TYPE_BYTES13HUKS_TAG_ITERATIONHuksTagType.HUKS_TAG_TYPE_UINT14HUKS_TAG_KEY_GENERATE_TYPEHuksTagType.HUKS_TAG_TYPE_UINT15HUKS_TAG_DERIVE_MAIN_KEYHuksTagType.HUKS_TAG_TYPE_BYTES16HUKS_TAG_DERIVE_FACTORHuksTagType.HUKS_TAG_TYPE_BYTES17HUKS_TAG_DERIVE_ALGHuksTagType.HUKS_TAG_TYPE_UINT18HUKS_TAG_AGREE_ALGHuksTagType.HUKS_TAG_TYPE_UINT19HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIASHuksTagType.HUKS_TAG_TYPE_BOOL20HUKS_TAG_AGREE_PRIVATE_KEY_ALIASHuksTagType.HUKS_TAG_TYPE_BYTES21HUKS_TAG_AGREE_PUBLIC_KEYHuksTagType.HUKS_TAG_TYPE_BYTES22HUKS_TAG_KEY_ALIASHuksTagType.HUKS_TAG_TYPE_BYTES23HUKS_TAG_DERIVE_KEY_SIZEHuksTagType.HUKS_TAG_TYPE_UINT24HUKS_TAG_ACTIVE_DATETIMEHuksTagType.HUKS_TAG_TYPE_ULONG201HUKS_TAG_ORIGINATION_EXPIRE_DATETIMEHuksTagType.HUKS_TAG_TYPE_ULONG202HUKS_TAG_USAGE_EXPIRE_DATETIMEHuksTagType.HUKS_TAG_TYPE_ULONG203HUKS_TAG_CREATION_DATETIMEHuksTagType.HUKS_TAG_TYPE_ULONG204HUKS_TAG_ALL_USERSksTagType.HUKS_TAG_TYPE_BOOL301HUKS_TAG_USER_IDHuksTagType.HUKS_TAG_TYPE_UINT302HUKS_TAG_NO_AUTH_REQUIREDHuksTagType.HUKS_TAG_TYPE_BOOL303HUKS_TAG_USER_AUTH_TYPEHuksTagType.HUKS_TAG_TYPE_UINT304HUKS_TAG_AUTH_TIMEOUTHuksTagType.HUKS_TAG_TYPE_UINT305HUKS_TAG_AUTH_TOKENHuksTagType.HUKS_TAG_TYPE_BYTES306HUKS_TAG_ATTESTATION_CHALLENGEHuksTagType.HUKS_TAG_TYPE_BYTES501HUKS_TAG_ATTESTATION_APPLICATION_IDHuksTagType.HUKS_TAG_TYPE_BYTES502HUKS_TAG_ATTESTATION_ID_BRANDHuksTagType.HUKS_TAG_TYPE_BYTES503HUKS_TAG_ATTESTATION_ID_DEVICEHuksTagType.HUKS_TAG_TYPE_BYTES504HUKS_TAG_ATTESTATION_ID_PRODUCTHuksTagType.HUKS_TAG_TYPE_BYTES505HUKS_TAG_ATTESTATION_ID_SERIALHuksTagType.HUKS_TAG_TYPE_BYTES506HUKS_TAG_ATTESTATION_ID_IMEIHuksTagType.HUKS_TAG_TYPE_BYTES507HUKS_TAG_ATTESTATION_ID_MEIDHuksTagType.HUKS_TAG_TYPE_BYTES508HUKS_TAG_ATTESTATION_ID_MANUFACTURERHuksTagType.HUKS_TAG_TYPE_BYTES509HUKS_TAG_ATTESTATION_ID_MODELHuksTagType.HUKS_TAG_TYPE_BYTES510HUKS_TAG_ATTESTATION_ID_ALIASHuksTagType.HUKS_TAG_TYPE_BYTES511HUKS_TAG_ATTESTATION_ID_SOCIDHuksTagType.HUKS_TAG_TYPE_BYTES512HUKS_TAG_ATTESTATION_ID_UDIDHuksTagType.HUKS_TAG_TYPE_BYTES513HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFOHuksTagType.HUKS_TAG_TYPE_BYTES514HUKS_TAG_ATTESTATION_ID_VERSION_INFOHuksTagType.HUKS_TAG_TYPE_BYTES515HUKS_TAG_IS_KEY_ALIASHuksTagType.HUKS_TAG_TYPE_BOOL1001HUKS_TAG_KEY_STORAGE_FLAGHuksTagType.HUKS_TAG_TYPE_UINT1002HUKS_TAG_IS_ALLOWED_WRAPHuksTagType.HUKS_TAG_TYPE_BOOL1003HUKS_TAG_KEY_WRAP_TYPEHuksTagType.HUKS_TAG_TYPE_UINT1004HUKS_TAG_KEY_AUTH_IDHuksTagType.HUKS_TAG_TYPE_BYTES1005HUKS_TAG_KEY_ROLEHuksTagType.HUKS_TAG_TYPE_UINT1006HUKS_TAG_KEY_FLAGHuksTagType.HUKS_TAG_TYPE_UINT1007HUKS_TAG_IS_ASYNCHRONIZEDHuksTagType.HUKS_TAG_TYPE_UINT1008HUKS_TAG_SECURE_KEY_ALIASHuksTagType.HUKS_TAG_TYPE_BOOL1009HUKS_TAG_SECURE_KEY_UUIDHuksTagType.HUKS_TAG_TYPE_BYTES1010HUKS_TAG_KEY_DOMAINHuksTagType.HUKS_TAG_TYPE_UINT1011HUKS_TAG_PROCESS_NAMEHuksTagType.HUKS_TAG_TYPE_BYTES10001HUKS_TAG_PACKAGE_NAMEHuksTagType.HUKS_TAG_TYPE_BYTES10002HUKS_TAG_ACCESS_TIMEHuksTagType.HUKS_TAG_TYPE_UINT10003HUKS_TAG_USES_TIMEHuksTagType.HUKS_TAG_TYPE_UINT10004HUKS_TAG_CRYPTO_CTXHuksTagType.HUKS_TAG_TYPE_ULONG10005HUKS_TAG_KEYHuksTagType.HUKS_TAG_TYPE_BYTES10006HUKS_TAG_KEY_VERSIONHuksTagType.HUKS_TAG_TYPE_UINT10007HUKS_TAG_PAYLOAD_LENHuksTagType.HUKS_TAG_TYPE_UINT10008HUKS_TAG_AE_TAGHuksTagType.HUKS_TAG_TYPE_BYTES10009HUKS_TAG_IS_KEY_HANDLEHuksTagType.HUKS_TAG_TYPE_ULONG10010HUKS_TAG_OS_VERSIONHuksTagType.HUKS_TAG_TYPE_UINT10101HUKS_TAG_OS_PATCHLEVELHuksTagType.HUKS_TAG_TYPE_UINT10102HUKS_TAG_SYMMETRIC_KEY_DATAHuksTagType.HUKS_TAG_TYPE_BYTES20001HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATAHuksTagType.HUKS_TAG_TYPE_BYTES20002HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATAHuksTagType.HUKS_TAG_TYPE_BYTES20003

huks.generateKey

generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void

生成密钥,使用Callback回调异步返回结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是别名。options[HuksOptions]是用于存放生成key所需TAG。callbackAsyncCallback<[HuksResult]>是返回HUKS_SUCCESS时表示接口使用成功,其余结果请参考HuksResult进行错误码查询。
示例:

  1. /* 以生成RSA512密钥为例 */
  2. var keyAlias = 'keyAlias';
  3. var properties = new Array();
  4. properties[0] = {
  5. tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
  6. value: huks.HuksKeyAlg.HUKS_ALG_RSA
  7. };
  8. properties[1] = {
  9. tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
  10. value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_512
  11. };
  12. properties[2] = {
  13. tag: huks.HuksTag.HUKS_TAG_PURPOSE,
  14. value:
  15. huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT |
  16. huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
  17. };
  18. properties[3] = {
  19. tag: huks.HuksTag.HUKS_TAG_PADDING,
  20. value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
  21. };
  22. properties[4] = {
  23. tag: huks.HuksTag.HUKS_TAG_DIGEST,
  24. value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
  25. };
  26. var options = {
  27. properties: properties
  28. };
  29. huks.generateKey(keyAlias, options, function (err, data){});

huks.generateKey

generateKey(keyAlias: string, options: HuksOptions) : Promise

生成密钥,使用Promise方式异步返回结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是密钥别名。options[HuksOptions]是用于存放生成key所需TAG。
返回值:(可选,如不涉及可删除)
类型说明Promise<[HuksResult]>返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。
示例:

  1. /* 以生成ECC256密钥为例 */
  2. var keyAlias = 'keyAlias';
  3. var properties = new Array();
  4. properties[0] = {
  5. tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
  6. value: huks.HuksKeyAlg.HUKS_ALG_ECC
  7. };
  8. properties[1] = {
  9. tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
  10. value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256
  11. };
  12. properties[2] = {
  13. tag: huks.HuksTag.HUKS_TAG_PURPOSE,
  14. value:
  15. huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN |
  16. huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
  17. };
  18. properties[3] = {
  19. tag: huks.HuksTag.HUKS_TAG_DIGEST,
  20. value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
  21. };
  22. var options = {
  23. properties: properties
  24. };
  25. var result = huks.generateKey(keyAlias, options);

huks.deleteKey

deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void

删除密钥,使用Callback回调异步返回结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是密钥别名,应为生成key时传入的别名。options[HuksOptions]是空对象(此处传空即可)。callbackAsyncCallback<[HuksResult]>是返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。
示例:

  1. /* 此处options选择emptyOptions传空 */
  2. var keyAlias = 'keyAlias';
  3. var emptyOptions = {
  4. properties: []
  5. };
  6. huks.deleteKey(keyAlias, emptyOptions, function (err, data) {});

huks.deleteKey

deleteKey(keyAlias: string, options: HuksOptions) : Promise

删除密钥,使用Promise方式异步返回结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是密钥别名,应为生成key时传入的别名。options[HuksOptions]是空对象(此处传空即可)。
返回值:
类型说明Promise<[HuksResult]>返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。
示例:

  1. /* 此处options选择emptyOptions传空 */
  2. var keyAlias = 'keyAlias';
  3. var emptyOptions = {
  4. properties: []
  5. };
  6. var result = huks.deleteKey(keyAlias, emptyOptions);

huks.getSdkVersion

getSdkVersion(options: HuksOptions) : string

获取当前系统sdk版本。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明options[HuksOptions]是空对象,用于存放sdk版本。
返回值:
类型说明string返回sdk版本。
示例:

  1. /* 此处options选择emptyOptions传空 */
  2. var emptyOptions = {
  3. properties: []
  4. };
  5. var result = huks.getSdkVersion(emptyOptions);

huks.importKey

importKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void

导入密钥,使用Callback方式回调异步返回结果 。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是密钥别名,用于存放所需密钥。options[HuksOptions]是用于导入时所需TAG和需要导入的密钥。callbackAsyncCallback<[HuksResult]>是返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。
示例:

  1. /* 以导入AES256密钥为例 */
  2. var plainTextSize32 = makeRandomArr(32);
  3. function makeRandomArr(size) {
  4. var arr = new Uint8Array(size);
  5. for (var i = 0; i < size; i++) {
  6. arr[i] = Math.floor(Math.random() * 10);
  7. }
  8. return arr;
  9. };
  10. var keyAlias = 'keyAlias';
  11. var properties = new Array();
  12. properties[0] = {
  13. tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
  14. value: huks.HuksKeyAlg.HUKS_ALG_AES
  15. };
  16. properties[1] = {
  17. tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
  18. value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256
  19. };
  20. properties[2] = {
  21. tag: huks.HuksTag.HUKS_TAG_PURPOSE,
  22. value:
  23. huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
  24. };
  25. properties[3] = {
  26. tag: huks.HuksTag.HUKS_TAG_PADDING,
  27. value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7
  28. };
  29. properties[4] = {
  30. tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
  31. value: huks.HuksCipherMode.HUKS_MODE_ECB
  32. };
  33. var options = {
  34. properties: properties,
  35. inData: plainTextSize32
  36. };
  37. huks.importKey(keyAlias, options, function (err, data){});

huks.importKey

importKey(keyAlias: string, options: HuksOptions) : Promise

导入密钥,使用Promise方式异步返回结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是密钥别名,用于存放所需密钥。options[HuksOptions]是用于导入时所需TAG和需要导入的密钥。
返回值:
类型说明Promise<[HuksResult]>返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。
示例:

  1. /* 以导入AES128为例 */
  2. var plainTextSize32 = makeRandomArr(32);
  3. function makeRandomArr(size) {
  4. var arr = new Uint8Array(size);
  5. for (var i = 0; i < size; i++) {
  6. arr[i] = Math.floor(Math.random() * 10);
  7. }
  8. return arr;
  9. };
  10. /*第一步:生成密钥*/
  11. var keyAlias = 'keyAlias';
  12. var properties = new Array();
  13. properties[0] = {
  14. tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
  15. value: huks.HuksKeyAlg.HUKS_ALG_AES
  16. };
  17. properties[1] = {
  18. tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
  19. value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128
  20. };
  21. properties[2] = {
  22. tag: huks.HuksTag.HUKS_TAG_PURPOSE,
  23. value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
  24. };
  25. properties[3] = {
  26. tag: huks.HuksTag.HUKS_TAG_PADDING,
  27. value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7
  28. };
  29. properties[4] = {
  30. tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
  31. value: huks.HuksCipherMode.HUKS_MODE_ECB
  32. };
  33. var huksoptions = {
  34. properties: properties,
  35. inData: plainTextSize32
  36. };
  37. var result = huks.importKey(keyAlias, huksoptions);

huks.exportKey

exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void

导出密钥,使用Callback方式回调异步返回的结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是密钥别名,应与所用密钥生成时使用的别名相同。options[HuksOptions]是空对象(此处传空即可)。callbackAsyncCallback<[HuksResult]>是返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。
示例:

  1. /* 此处options选择emptyOptions来传空 */
  2. var keyAlias = 'keyAlias';
  3. var emptyOptions = {
  4. properties: []
  5. };
  6. huks.exportKey(keyAlias, emptyOptions, function (err, data){});

huks.exportKey

exportKey(keyAlias: string, options: HuksOptions) : Promise

导出密钥,使用Promise方式回调异步返回的结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是密钥别名,应与所用密钥生成时使用的别名相同。options[HuksOptions]是空对象(此处传空即可)。
返回值:
类型说明Promise<[HuksResult]>返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。
示例:

  1. /* 此处options选择emptyOptions来传空 */
  2. var keyAlias = 'keyAlias';
  3. var emptyOptions = {
  4. properties: []
  5. };
  6. var result = huks.exportKey(keyAlias, emptyOptions);

huks.getKeyProperties

getKeyProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void

获取密钥属性,使用Callback回调异步返回结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是密钥别名,应与所用密钥生成时使用的别名相同。options[HuksOptions]是空对象(此处传空即可)。callbackAsyncCallback<[HuksResult]>是errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。
示例:

  1. /* 此处options选择emptyOptions来传空 */
  2. var keyAlias = 'keyAlias';
  3. var emptyOptions = {
  4. properties: []
  5. };
  6. huks.getKeyProperties(keyAlias, emptyOptions, function (err, data){});

huks.getKeyProperties

getKeyProperties(keyAlias: string, options: HuksOptions) : Promise

获取密钥属性,使用Promise回调异步返回结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是密钥别名,应与所用密钥生成时使用的别名相同。options[HuksOptions]是空对象(此处传空即可)。
返回值:
类型说明Promise<[HuksResult]>errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。properties:返回值为生成密钥时所需参数。
示例:

  1. /* 此处options选择emptyOptions来传空 */
  2. var keyAlias = 'keyAlias';
  3. var emptyOptions = {
  4. properties: []
  5. };
  6. var result = huks.getKeyProperties(keyAlias, emptyOptions);

huks.isKeyExist

isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void

判断密钥是否存在,使用Callback回调异步返回结果 。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是所需查找的密钥的别名。options[HuksOptions]是空对象(此处传空即可)。callbackAsyncCallback是FALSE代表密钥不存在,TRUE代表密钥存在。
示例:

  1. /* 此处options选择emptyOptions来传空 */
  2. var keyAlias = 'keyAlias';
  3. var emptyOptions = {
  4. properties: []
  5. };
  6. huks.isKeyExist(keyAlias, emptyOptions, function (err, data){});

huks.isKeyExist

isKeyExist(keyAlias: string, options: HuksOptions) : Promise

判断密钥是否存在,使用Promise回调异步返回结果 。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是所需查找的密钥的别名。options[HuksOptions]是空对象(此处传空即可)。
返回值:
类型说明PromiseFALSE代表密钥不存在,TRUE代表密钥存在。
示例:

  1. /* 此处options选择emptyOptions来传空 */
  2. var keyAlias = 'keyAlias';
  3. var emptyOptions = {
  4. properties: []
  5. };
  6. var result = huks.isKeyExist(keyAlias, emptyOptions);

huks.init

init(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void

init操作密钥接口,使用Callback回调异步返回结果 。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是Init操作密钥的别名。options[HuksOptions]是Init操作的参数集合。callbackAsyncCallback<[HuksHandle]>是将Init操作操作返回的handle添加到密钥管理系统的回调。

huks.init

init(keyAlias: string, options: HuksOptions) : Promise

init操作密钥接口,使用Promise方式异步返回结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明keyAliasstring是Init操作密钥的别名。options[HuksOptions]是Init参数集合。promisePromise<[HuksHandle]>是将Init操作返回的handle添加到密钥管理系统的回调。

huks.update

update(handle: number, token?: Uint8Array, options: HuksOptions, callback: AsyncCallback) : void

update操作密钥接口,使用Callback回调异步返回结果 。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明handlenumber是Update操作的handle。tokenUint8Array否Update操作的token。options[HuksOptions]是Update的参数集合。callbackAsyncCallback<[HuksResult]>是将Update操作的结果添加到密钥管理系统的回调。

huks.update

update(handle: number, token?: Uint8Array, options: HuksOptions) : Promise

update操作密钥接口,使用Promise方式异步返回结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明handlenumber是Update操作的handle。tokenUint8Array否Update操作的token。options[HuksOptions]是Update操作的参数集合。promisePromise<[HuksResult]>是将Update操作的结果添加到密钥管理系统的回调。

huks.finish

finish(handle: number, options: HuksOptions, callback: AsyncCallback) : void

finish操作密钥接口,使用Callback回调异步返回结果 。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明handlenumber是Finish操作的handle。options[HuksOptions]是Finish的参数集合。callbackAsyncCallback<[HuksResult]>是将Finish操作的结果添加到密钥管理系统的回调。

huks.finish

finish(handle: number, options: HuksOptions) : Promise

finish操作密钥接口,使用Promise方式异步返回结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明handlenumber是Finish操作的handle。options[HuksOptions]是Finish操作的参数集合。promisePromise<[HuksResult]>是promise实例,用于获取异步返回结果。

huks.abort

abort(handle: number, options: HuksOptions, callback: AsyncCallback) : void

abort操作密钥接口,使用Callback回调异步返回结果 。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明handlenumber是Abort操作的handle。options[HuksOptions]是Abort操作的参数集合。callbackAsyncCallback<[HuksResult]>是将Abort操作的结果添加到密钥管理系统的回调。
示例:

  1. /* huks.init, huks.update, huks.finish为三段式接口,需要一起使用,当huks.init和huks.update
  2. * 以及huks.finish操作中的任一阶段发生错误时,都需要调用huks.abort来终止密钥的使用。
  3. *
  4. * 以下以RSA1024密钥的callback操作使用为例
  5. */
  6. import router from '@system.router';
  7. import huks from '@ohos.security.huks';
  8. async function routePage() {
  9. let options = {
  10. uri: 'pages/second'
  11. }
  12. try {
  13. await router.push(options)
  14. } catch (err) {
  15. console.error(`fail callback, code: ${err.code}, msg: ${err.msg}`)
  16. }
  17. }
  18. var keyalias = "HuksDemoRSA";
  19. var properties = new Array();
  20. var options = {
  21. properties: properties,
  22. inData: new Uint8Array(0)
  23. };
  24. var handle;
  25. var resultMessage = "";
  26. async function generateKey() {
  27. properties[0] = {
  28. tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
  29. value: huks.HuksKeyAlg.HUKS_ALG_RSA
  30. };
  31. properties[1] = {
  32. tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
  33. value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024
  34. };
  35. properties[2] = {
  36. tag: huks.HuksTag.HUKS_TAG_PURPOSE,
  37. value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
  38. };
  39. properties[3] = {
  40. tag: huks.HuksTag.HUKS_TAG_PADDING,
  41. value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
  42. };
  43. properties[4] = {
  44. tag: huks.HuksTag.HUKS_TAG_DIGEST,
  45. value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
  46. };
  47. huks.generateKey(keyalias, options);
  48. }
  49. function stringToUint8Array(str) {
  50. var arr = [];
  51. for (var i = 0, j = str.length; i < j; ++i) {
  52. arr.push(str.charCodeAt(i));
  53. }
  54. var tmpUint8Array = new Uint8Array(arr);
  55. return tmpUint8Array;
  56. }
  57. async function huksInit() {
  58. await huks.init(keyalias, options).then((data) => {
  59. console.log(`test init data: ${JSON.stringify(data)}`);
  60. handle = data.handle;
  61. }).catch((err) => {
  62. console.log("test init err information: " + JSON.stringify(err))
  63. })
  64. }
  65. async function huksUpdate() {
  66. options.inData = stringToUint8Array("huksHmacTest");
  67. await huks.update(handle, options).then((data) => {
  68. if (data.errorCode === 0) {
  69. resultMessage += "update success!";
  70. } else {
  71. resultMessage += "update fail!";
  72. }
  73. });
  74. console.log(resultMessage);
  75. }
  76. function huksFinish() {
  77. options.inData = stringToUint8Array("HuksDemoHMAC");
  78. huks.finish(handle, options).then((data) => {
  79. if (data.errorCode === 0) {
  80. resultMessage = "finish success!";
  81. } else {
  82. resultMessage = "finish fail errorCode: " + data.errorCode;
  83. }
  84. }).catch((err) => {
  85. resultMessage = "finish fail, catch errorMessage:" + JSON.stringify(err)
  86. });
  87. console.log(resultMessage);
  88. }
  89. async function huksAbort() {
  90. huks.abort(handle, options).then((data) => {
  91. if (data.errorCode === 0) {
  92. resultMessage = "abort success!";
  93. } else {
  94. resultMessage = "abort fail errorCode: " + data.errorCode;
  95. }
  96. }).catch((err) => {
  97. resultMessage = "abort fail, catch errorMessage:" + JSON.stringify(err)
  98. });
  99. console.log(resultMessage);
  100. }
  101. @Entry
  102. @Component
  103. struct Index {
  104. build() {
  105. Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
  106. Text('Hello World')
  107. .fontSize(50)
  108. .fontWeight(FontWeight.Bold)
  109. Button() {
  110. Text('Tocallback')
  111. .fontSize(25)
  112. .fontWeight(FontWeight.Bold)
  113. }.type(ButtonType.Capsule)
  114. .margin({
  115. top: 20
  116. })
  117. .width('50%')
  118. .height('10%')
  119. .backgroundColor('#0D9FFB')
  120. .onClick(() => {
  121. routePage()
  122. })
  123. Button() {
  124. Text('generateKey')
  125. .fontSize(25)
  126. .fontWeight(FontWeight.Bold)
  127. }.type(ButtonType.Capsule)
  128. .margin({
  129. top: 20
  130. })
  131. .width('50%')
  132. .height('10%')
  133. .backgroundColor('#0D9FFB')
  134. .onClick(() => {
  135. generateKey()
  136. })
  137. Button() {
  138. Text('Init')
  139. .fontSize(25)
  140. .fontWeight(FontWeight.Bold)
  141. }.type(ButtonType.Capsule)
  142. .margin({
  143. top: 20
  144. })
  145. .width('50%')
  146. .height('10%')
  147. .backgroundColor('#0D9FFB')
  148. .onClick(() => {
  149. huksInit()
  150. })
  151. Button() {
  152. Text('Update')
  153. .fontSize(25)
  154. .fontWeight(FontWeight.Bold)
  155. }.type(ButtonType.Capsule)
  156. .margin({
  157. top: 20
  158. })
  159. .width('50%')
  160. .height('10%')
  161. .backgroundColor('#0D9FFB')
  162. .onClick(() => {
  163. huksUpdate()
  164. })
  165. Button() {
  166. Text('Finish')
  167. .fontSize(25)
  168. .fontWeight(FontWeight.Bold)
  169. }.type(ButtonType.Capsule)
  170. .margin({
  171. top: 20
  172. })
  173. .width('50%')
  174. .height('10%')
  175. .backgroundColor('#0D9FFB')
  176. .onClick(() => {
  177. huksFinish()
  178. })
  179. Button() {
  180. Text('Abort')
  181. .fontSize(25)
  182. .fontWeight(FontWeight.Bold)
  183. }.type(ButtonType.Capsule)
  184. .margin({
  185. top: 20
  186. })
  187. .width('50%')
  188. .height('10%')
  189. .backgroundColor('#0D9FFB')
  190. .onClick(() => {
  191. huksAbort()
  192. })
  193. }
  194. .width('100%')
  195. .height('100%')
  196. }
  197. }

huks.abort

abort(handle: number, options: HuksOptions) : Promise;

abort操作密钥接口,使用Promise方式异步返回结果。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。

参数:
参数名类型必填说明handlenumber是Abort操作的handle。options[HuksOptions]是Abort操作的参数集合。promisePromise<[HuksResult]>是将Abort操作的结果添加到密钥管理系统的回调。
示例:

  1. /* huks.init, huks.update, huks.finish为三段式接口,需要一起使用,当huks.init和huks.update
  2. * 以及huks.finish操作中的任一阶段发生错误时,都需要调用huks.abort来终止密钥的使用。
  3. *
  4. * 以下以RSA1024密钥的promise操作使用为例
  5. */
  6. import router from '@system.router';
  7. import huks from '@ohos.security.huks';
  8. async function routePage() {
  9. let options = {
  10. uri: 'pages/second'
  11. }
  12. try {
  13. await router.push(options)
  14. } catch (err) {
  15. console.error(`fail callback, code: ${err.code}, msg: ${err.msg}`)
  16. }
  17. }
  18. var keyalias = "HuksDemoRSA";
  19. var properties = new Array();
  20. var options = {
  21. properties: properties,
  22. inData: new Uint8Array(0)
  23. };
  24. var handle;
  25. var resultMessage = "";
  26. function stringToUint8Array(str) {
  27. var arr = [];
  28. for (var i = 0, j = str.length; i < j; ++i) {
  29. arr.push(str.charCodeAt(i));
  30. }
  31. var tmpUint8Array = new Uint8Array(arr);
  32. return tmpUint8Array;
  33. }
  34. async function generateKey() {
  35. properties[0] = {
  36. tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
  37. value: huks.HuksKeyAlg.HUKS_ALG_RSA
  38. };
  39. properties[1] = {
  40. tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
  41. value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024
  42. };
  43. properties[2] = {
  44. tag: huks.HuksTag.HUKS_TAG_PURPOSE,
  45. value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
  46. };
  47. properties[3] = {
  48. tag: huks.HuksTag.HUKS_TAG_PADDING,
  49. value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
  50. };
  51. properties[4] = {
  52. tag: huks.HuksTag.HUKS_TAG_DIGEST,
  53. value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
  54. };
  55. huks.generateKey(keyalias, options, function (err, data) { });
  56. }
  57. async function huksInit() {
  58. return new Promise((resolve, reject) => {
  59. huks.init(keyalias, options, async function (err, data) {
  60. if (data.errorCode === 0) {
  61. resultMessage = "init success!"
  62. handle = data.handle;
  63. } else {
  64. resultMessage = "init fail errorCode: " + data.errorCode
  65. }
  66. });
  67. });
  68. }
  69. async function huksUpdate() {
  70. options.inData = stringToUint8Array("huksHmacTest");
  71. new Promise((resolve, reject) => {
  72. huks.update(handle, options, function (err, data) {
  73. if (data.errorCode === 0) {
  74. resultMessage += "update success!";
  75. } else {
  76. resultMessage += "update fail!";
  77. }
  78. });
  79. });
  80. console.log(resultMessage);
  81. }
  82. async function huksFinish() {
  83. options.inData = stringToUint8Array("0");
  84. new Promise((resolve, reject) => {
  85. huks.finish(handle, options, function (err, data) {
  86. if (data.errorCode === 0) {
  87. resultMessage = "finish success!";
  88. } else {
  89. resultMessage = "finish fail errorCode: " + data.errorCode;
  90. }
  91. });
  92. });
  93. }
  94. function huksAbort() {
  95. new Promise((resolve, reject) => {
  96. huks.abort(handle, options, function (err, data) {
  97. console.log(`Huks_Demo hmac huksAbort1 data ${JSON.stringify(data)}`);
  98. console.log(`Huks_Demo hmac huksAbort1 err ${JSON.stringify(err)}`);
  99. });
  100. });
  101. }
  102. @Entry
  103. @Component
  104. struct Index {
  105. build() {
  106. Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
  107. Text('Hello World')
  108. .fontSize(50)
  109. .fontWeight(FontWeight.Bold)
  110. Button() {
  111. Text('to Promise')
  112. .fontSize(20)
  113. .fontWeight(FontWeight.Bold)
  114. }.type(ButtonType.Capsule)
  115. .margin({
  116. top: 20
  117. })
  118. .width('50%')
  119. .height('10%')
  120. .backgroundColor('#0D9FFB')
  121. .onClick(() => {
  122. router.back()
  123. })
  124. Button() {
  125. Text('generateKey')
  126. .fontSize(25)
  127. .fontWeight(FontWeight.Bold)
  128. }.type(ButtonType.Capsule)
  129. .margin({
  130. top: 20
  131. })
  132. .width('50%')
  133. .height('10%')
  134. .backgroundColor('#0D9FFB')
  135. .onClick(() => {
  136. generateKey()
  137. })
  138. Button() {
  139. Text('Init')
  140. .fontSize(25)
  141. .fontWeight(FontWeight.Bold)
  142. }.type(ButtonType.Capsule)
  143. .margin({
  144. top: 20
  145. })
  146. .width('50%')
  147. .height('10%')
  148. .backgroundColor('#0D9FFB')
  149. .onClick(() => {
  150. huksInit()
  151. })
  152. Button() {
  153. Text('Update')
  154. .fontSize(25)
  155. .fontWeight(FontWeight.Bold)
  156. }.type(ButtonType.Capsule)
  157. .margin({
  158. top: 20
  159. })
  160. .width('50%')
  161. .height('10%')
  162. .backgroundColor('#0D9FFB')
  163. .onClick(() => {
  164. huksUpdate()
  165. })
  166. Button() {
  167. Text('Finish')
  168. .fontSize(25)
  169. .fontWeight(FontWeight.Bold)
  170. }.type(ButtonType.Capsule)
  171. .margin({
  172. top: 20
  173. })
  174. .width('50%')
  175. .height('10%')
  176. .backgroundColor('#0D9FFB')
  177. .onClick(() => {
  178. huksFinish()
  179. })
  180. Button() {
  181. Text('Abort')
  182. .fontSize(25)
  183. .fontWeight(FontWeight.Bold)
  184. }.type(ButtonType.Capsule)
  185. .margin({
  186. top: 20
  187. })
  188. .width('50%')
  189. .height('10%')
  190. .backgroundColor('#0D9FFB')
  191. .onClick(() => {
  192. huksAbort()
  193. })
  194. }
  195. .width('100%')
  196. .height('100%')
  197. }
  198. }

HuksParam

调用接口使用的options中的properties数组中的param。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数名类型必填说明tagHuksTag是标签valuebooleannumberbigint

HuksOptions

调用接口使用的options。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数名类型必填说明propertiesArray否属性,存HuksParam的数组。inDataUint8Array否输入数据。

HuksHandle

huks Handle结构体。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数名类型必填说明errorCodenumber是错误码handlenumber是handle值tokenUint8Array否预留字段

HuksResult

调用接口返回的result。

系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数名类型必填说明errorCodenumber是错误码outDataUint8Array否输出数据propertiesArray否属性


本文转载自: https://blog.csdn.net/2301_76813281/article/details/139471302
版权归原作者 爱桥代码的程序媛 所有, 如有侵权,请联系我们删除。

“鸿蒙开发接口安全:【@ohos.security.huks (通用密钥库系统)】”的评论:

还没有评论