鸿蒙开发接口安全:【@ohos.security.huks (通用密钥库系统)】
通用密钥库系统
说明
本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。 HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。
导入模块
import huks from '@ohos.security.huks'
HuksErrorCode
表示错误码的枚举。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 名称 | 值 | 说明 |
|---|---|---|
| HUKS_SUCCESS | 0 | 表示成功。 |
| 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_ENCRYPT | 1 | 表示密钥用于对明文进行加密操作。 |
| HUKS_KEY_PURPOSE_DECRYPT | 2 | 表示密钥用于对密文进行解密操作。 |
| HUKS_KEY_PURPOSE_SIGN | 4 | 表示密钥用于对数据进行签名。 |
| HUKS_KEY_PURPOSE_VERIFY | 8 | 表示密钥用于验证签名后的数据。 |
| HUKS_KEY_PURPOSE_DERIVE | 16 | 表示密钥用于派生密钥。 |
| HUKS_KEY_PURPOSE_WRAP | 32 | 表示密钥用于加密导入。 |
| HUKS_KEY_PURPOSE_UNWRAP | 64 | 表示密钥加密导出。 |
| HUKS_KEY_PURPOSE_MAC | 128 | 表示密钥用于生成mac消息验证码。 |
| HUKS_KEY_PURPOSE_AGREE | 256 | 表示密钥用于进行密钥协商。 |
HuksKeyDigest
表示摘要算法。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 名称 | 值 | 说明 |
|---|---|---|
| HUKS_DIGEST_NONE | 0 | 表示无摘要算法。 |
| HUKS_DIGEST_MD5 | 1 | 表示MD5摘要算法。 |
| HUKS_DIGEST_SHA1 | 10 | 表示SHA1摘要算法。 |
| HUKS_DIGEST_SHA224 | 11 | 表示SHA224摘要算法。 |
| HUKS_DIGEST_SHA256 | 12 | 表示SHA256摘要算法。 |
| HUKS_DIGEST_SHA384 | 13 | 表示SHA384摘要算法。 |
| HUKS_DIGEST_SHA512 | 14 | 表示SHA512摘要算法。 |
HuksKeyPadding
表示补齐算法。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 名称 | 值 | 说明 |
|---|---|---|
| HUKS_PADDING_NONE | 0 | 表示不使用补齐算法。 |
| HUKS_PADDING_OAEP | 1 | 表示使用OAEP补齐算法。 |
| HUKS_PADDING_PSS | 2 | 表示使用PSS补齐算法。 |
| HUKS_PADDING_PKCS1_V1_5 | 3 | 表示使用PKCS1_V1_5补齐算法。 |
| HUKS_PADDING_PKCS5 | 4 | 表示使用PKCS5补齐算法。 |
| HUKS_PADDING_PKCS7 | 5 | 表示使用PKCS7补齐算法。 |
HuksCipherMode
表示加密模式。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 名称 | 值 | 说明 |
|---|---|---|
| HUKS_MODE_ECB | 1 | 表示使用ECB加密模式。 |
| HUKS_MODE_CBC | 2 | 表示使用CBC加密模式。 |
| HUKS_MODE_CTR | 3 | 表示使用CTR加密模式。 |
| HUKS_MODE_OFB | 4 | 表示使用OFB加密模式。 |
| HUKS_MODE_CCM | 31 | 表示使用CCM加密模式。 |
| HUKS_MODE_GCM | 32 | 表示使用GCM加密模式。 |
HuksKeySize
表示密钥长度。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 名称 | 值 | 说明 |
|---|---|---|
| HUKS_RSA_KEY_SIZE_512 | 512 | 表示使用RSA算法的密钥长度为512bit。 |
| HUKS_RSA_KEY_SIZE_768 | 768 | 表示使用RSA算法的密钥长度为768bit。 |
| HUKS_RSA_KEY_SIZE_1024 | 1024 | 表示使用RSA算法的密钥长度为1024bit。 |
| HUKS_RSA_KEY_SIZE_2048 | 2048 | 表示使用RSA算法的密钥长度为2048bit。 |
| HUKS_RSA_KEY_SIZE_3072 | 3072 | 表示使用RSA算法的密钥长度为3072bit。 |
| HUKS_RSA_KEY_SIZE_4096 | 4096 | 表示使用RSA算法的密钥长度为4096bit。 |
| HUKS_ECC_KEY_SIZE_224 | 224 | 表示使用ECC算法的密钥长度为224bit。 |
| HUKS_ECC_KEY_SIZE_256 | 256 | 表示使用ECC算法的密钥长度为256bit。 |
| HUKS_ECC_KEY_SIZE_384 | 384 | 表示使用ECC算法的密钥长度为384bit。 |
| HUKS_ECC_KEY_SIZE_521 | 521 | 表示使用ECC算法的密钥长度为521bit。 |
| HUKS_AES_KEY_SIZE_128 | 128 | 表示使用AES算法的密钥长度为128bit。 |
| HUKS_AES_KEY_SIZE_192 | 196 | 表示使用AES算法的密钥长度为196bit。 |
| HUKS_AES_KEY_SIZE_256 | 256 | 表示使用AES算法的密钥长度为256bit。 |
| HUKS_AES_KEY_SIZE_512 | 512 | 表示使用AES算法的密钥长度为512bit。 |
| HUKS_CURVE25519_KEY_SIZE_256 | 256 | 表示使用CURVE25519算法的密钥长度为256bit。 |
| HUKS_DH_KEY_SIZE_2048 | 2048 | 表示使用DH算法的密钥长度为2048bit。 |
| HUKS_DH_KEY_SIZE_3072 | 3072 | 表示使用DH算法的密钥长度为3072bit。 |
| HUKS_DH_KEY_SIZE_4096 | 4096 | 表示使用DH算法的密钥长度为4096bit。 |
HuksKeyAlg
表示密钥使用的算法。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 名称 | 值 | 说明 |
|---|---|---|
| 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算法。 |
HuksKeyGenerateType
表示生成密钥的类型。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 名称 | 值 | 说明 |
|---|---|---|
| HUKS_KEY_GENERATE_TYPE_DEFAULT | 0 | 默认生成的密钥。 |
| HUKS_KEY_GENERATE_TYPE_DERIVE | 1 | 派生生成的密钥。 |
| HUKS_KEY_GENERATE_TYPE_AGREE | 2 | 协商生成的密钥。 |
HuksKeyFlag
表示密钥的产生方式。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 名称 | 值 | 说明 |
|---|---|---|
| HUKS_KEY_FLAG_IMPORT_KEY | 1 | 表示通过导入公钥接口导入的密钥。 |
| HUKS_KEY_FLAG_GENERATE_KEY | 2 | 表示通过生成密钥接口生成的密钥。 |
| HUKS_KEY_FLAG_AGREE_KEY | 3 | 表示通过生成密钥协商接口生成的密钥。 |
| HUKS_KEY_FLAG_DERIVE_KEY | 4 | 表示通过生成密钥派生接口生成的密钥。 |
HuksKeyStorageType
表示密钥存储方式。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 名称 | 值 | 说明 |
|---|---|---|
| HUKS_STORAGE_TEMP | 0 | 表示通过本地直接管理密钥。 |
| HUKS_STORAGE_PERSISTENT | 1 | 表示通过HUKS service管理密钥。 |
HuksSendType
表示发送Tag的方式。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 名称 | 值 | 说明 |
|---|---|---|
| HUKS_SEND_TYPE_ASYNC | 0 | 表示异步发送TAG。 |
| HUKS_SEND_TYPE_SYNC | 1 | 表示同步发送TAG。 |
HuksTagType
表示Tag的数据类型。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 名称 | 值 | 说明 |
|---|---|---|
| HUKS_TAG_TYPE_INVALID | 0 << 28 | 表示非法的Tag类型。 |
| HUKS_TAG_TYPE_INT | 1 << 28 | 表示该Tag的数据类型为int类型的number。 |
| HUKS_TAG_TYPE_UINT | 2 << 28 | 表示该Tag的数据类型为uint类型的number。 |
| HUKS_TAG_TYPE_ULONG | 3 << 28 | 表示该Tag的数据类型为bigint。 |
| HUKS_TAG_TYPE_BOOL | 4 << 28 | 表示该Tag的数据类型为boolean。 |
| HUKS_TAG_TYPE_BYTES | 5 << 28 | 表示该Tag的数据类型为Uint8Array。 |
HuksTag
表示调用参数的Tag。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 名称 | 值 | 说明 |
|---|---|---|
| HUKS_TAG_INVALID | HuksTagType.HUKS_TAG_TYPE_INVALID | 0 |
| HUKS_TAG_ALGORITHM | HUKS_TAG_TYPE_UINT | 1 |
| HUKS_TAG_PURPOSE | HuksTagType.HUKS_TAG_TYPE_UINT | 2 |
| HUKS_TAG_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT | 3 |
| HUKS_TAG_DIGEST | HuksTagType.HUKS_TAG_TYPE_UINT | 4 |
| HUKS_TAG_PADDING | HuksTagType.HUKS_TAG_TYPE_UINT | 5 |
| HUKS_TAG_BLOCK_MODE | HuksTagType.HUKS_TAG_TYPE_UINT | 6 |
| HUKS_TAG_KEY_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 7 |
| HUKS_TAG_ASSOCIATED_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 8 |
| HUKS_TAG_NONCE | HuksTagType.HUKS_TAG_TYPE_BYTES | 9 |
| HUKS_TAG_IV | HuksTagType.HUKS_TAG_TYPE_BYTES | 10 |
| HUKS_TAG_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES | 11 |
| HUKS_TAG_SALT | HuksTagType.HUKS_TAG_TYPE_BYTES | 12 |
| HUKS_TAG_PWD | HuksTagType.HUKS_TAG_TYPE_BYTES | 13 |
| HUKS_TAG_ITERATION | HuksTagType.HUKS_TAG_TYPE_UINT | 14 |
| HUKS_TAG_KEY_GENERATE_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 15 |
| HUKS_TAG_DERIVE_MAIN_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES | 16 |
| HUKS_TAG_DERIVE_FACTOR | HuksTagType.HUKS_TAG_TYPE_BYTES | 17 |
| HUKS_TAG_DERIVE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT | 18 |
| HUKS_TAG_AGREE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT | 19 |
| HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL | 20 |
| HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES | 21 |
| HUKS_TAG_AGREE_PUBLIC_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES | 22 |
| HUKS_TAG_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES | 23 |
| HUKS_TAG_DERIVE_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT | 24 |
| HUKS_TAG_ACTIVE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG | 201 |
| HUKS_TAG_ORIGINATION_EXPIRE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG | 202 |
| HUKS_TAG_USAGE_EXPIRE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG | 203 |
| HUKS_TAG_CREATION_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG | 204 |
| HUKS_TAG_ALL_USERS | ksTagType.HUKS_TAG_TYPE_BOOL | 301 |
| HUKS_TAG_USER_ID | HuksTagType.HUKS_TAG_TYPE_UINT | 302 |
| HUKS_TAG_NO_AUTH_REQUIRED | HuksTagType.HUKS_TAG_TYPE_BOOL | 303 |
| HUKS_TAG_USER_AUTH_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 304 |
| HUKS_TAG_AUTH_TIMEOUT | HuksTagType.HUKS_TAG_TYPE_UINT | 305 |
| HUKS_TAG_AUTH_TOKEN | HuksTagType.HUKS_TAG_TYPE_BYTES | 306 |
| HUKS_TAG_ATTESTATION_CHALLENGE | HuksTagType.HUKS_TAG_TYPE_BYTES | 501 |
| HUKS_TAG_ATTESTATION_APPLICATION_ID | HuksTagType.HUKS_TAG_TYPE_BYTES | 502 |
| HUKS_TAG_ATTESTATION_ID_BRAND | HuksTagType.HUKS_TAG_TYPE_BYTES | 503 |
| HUKS_TAG_ATTESTATION_ID_DEVICE | HuksTagType.HUKS_TAG_TYPE_BYTES | 504 |
| HUKS_TAG_ATTESTATION_ID_PRODUCT | HuksTagType.HUKS_TAG_TYPE_BYTES | 505 |
| HUKS_TAG_ATTESTATION_ID_SERIAL | HuksTagType.HUKS_TAG_TYPE_BYTES | 506 |
| HUKS_TAG_ATTESTATION_ID_IMEI | HuksTagType.HUKS_TAG_TYPE_BYTES | 507 |
| HUKS_TAG_ATTESTATION_ID_MEID | HuksTagType.HUKS_TAG_TYPE_BYTES | 508 |
| HUKS_TAG_ATTESTATION_ID_MANUFACTURER | HuksTagType.HUKS_TAG_TYPE_BYTES | 509 |
| HUKS_TAG_ATTESTATION_ID_MODEL | HuksTagType.HUKS_TAG_TYPE_BYTES | 510 |
| HUKS_TAG_ATTESTATION_ID_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES | 511 |
| HUKS_TAG_ATTESTATION_ID_SOCID | HuksTagType.HUKS_TAG_TYPE_BYTES | 512 |
| HUKS_TAG_ATTESTATION_ID_UDID | HuksTagType.HUKS_TAG_TYPE_BYTES | 513 |
| HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES | 514 |
| HUKS_TAG_ATTESTATION_ID_VERSION_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES | 515 |
| HUKS_TAG_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL | 1001 |
| HUKS_TAG_KEY_STORAGE_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT | 1002 |
| HUKS_TAG_IS_ALLOWED_WRAP | HuksTagType.HUKS_TAG_TYPE_BOOL | 1003 |
| HUKS_TAG_KEY_WRAP_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 1004 |
| HUKS_TAG_KEY_AUTH_ID | HuksTagType.HUKS_TAG_TYPE_BYTES | 1005 |
| HUKS_TAG_KEY_ROLE | HuksTagType.HUKS_TAG_TYPE_UINT | 1006 |
| HUKS_TAG_KEY_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT | 1007 |
| HUKS_TAG_IS_ASYNCHRONIZED | HuksTagType.HUKS_TAG_TYPE_UINT | 1008 |
| HUKS_TAG_SECURE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL | 1009 |
| HUKS_TAG_SECURE_KEY_UUID | HuksTagType.HUKS_TAG_TYPE_BYTES | 1010 |
| HUKS_TAG_KEY_DOMAIN | HuksTagType.HUKS_TAG_TYPE_UINT | 1011 |
| HUKS_TAG_PROCESS_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES | 10001 |
| HUKS_TAG_PACKAGE_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES | 10002 |
| HUKS_TAG_ACCESS_TIME | HuksTagType.HUKS_TAG_TYPE_UINT | 10003 |
| HUKS_TAG_USES_TIME | HuksTagType.HUKS_TAG_TYPE_UINT | 10004 |
| HUKS_TAG_CRYPTO_CTX | HuksTagType.HUKS_TAG_TYPE_ULONG | 10005 |
| HUKS_TAG_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES | 10006 |
| HUKS_TAG_KEY_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT | 10007 |
| HUKS_TAG_PAYLOAD_LEN | HuksTagType.HUKS_TAG_TYPE_UINT | 10008 |
| HUKS_TAG_AE_TAG | HuksTagType.HUKS_TAG_TYPE_BYTES | 10009 |
| HUKS_TAG_IS_KEY_HANDLE | HuksTagType.HUKS_TAG_TYPE_ULONG | 10010 |
| HUKS_TAG_OS_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT | 10101 |
| HUKS_TAG_OS_PATCHLEVEL | HuksTagType.HUKS_TAG_TYPE_UINT | 10102 |
| HUKS_TAG_SYMMETRIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 20001 |
| HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 20002 |
| HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 20003 |
huks.generateKey
generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
生成密钥,使用Callback回调异步返回结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | 别名。 |
| options | [HuksOptions] | 是 | 用于存放生成key所需TAG。 |
| callback | AsyncCallback<[HuksResult]> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其余结果请参考HuksResult进行错误码查询。 |
示例:
/* 以生成RSA512密钥为例 */
var keyAlias = 'keyAlias';
var 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
};
var options = {properties: properties
};
huks.generateKey(keyAlias, options, function (err, data){});
huks.generateKey
generateKey(keyAlias: string, options: HuksOptions) : Promise
生成密钥,使用Promise方式异步返回结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | 密钥别名。 |
| options | [HuksOptions] | 是 | 用于存放生成key所需TAG。 |
返回值:(可选,如不涉及可删除)
| 类型 | 说明 |
|---|---|
| Promise<[HuksResult]> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
示例:
/* 以生成ECC256密钥为例 */
var keyAlias = 'keyAlias';
var 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
};
var options = {properties: properties
};
var result = huks.generateKey(keyAlias, options);
huks.deleteKey
deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
删除密钥,使用Callback回调异步返回结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | 密钥别名,应为生成key时传入的别名。 |
| options | [HuksOptions] | 是 | 空对象(此处传空即可)。 |
| callback | AsyncCallback<[HuksResult]> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
示例:
/* 此处options选择emptyOptions传空 */
var keyAlias = 'keyAlias';
var emptyOptions = {properties: []
};
huks.deleteKey(keyAlias, emptyOptions, function (err, data) {});
huks.deleteKey
deleteKey(keyAlias: string, options: HuksOptions) : Promise
删除密钥,使用Promise方式异步返回结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | 密钥别名,应为生成key时传入的别名。 |
| options | [HuksOptions] | 是 | 空对象(此处传空即可)。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<[HuksResult]> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
示例:
/* 此处options选择emptyOptions传空 */
var keyAlias = 'keyAlias';
var emptyOptions = {properties: []
};
var result = huks.deleteKey(keyAlias, emptyOptions);
huks.getSdkVersion
getSdkVersion(options: HuksOptions) : string
获取当前系统sdk版本。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | [HuksOptions] | 是 | 空对象,用于存放sdk版本。 |
返回值:
| 类型 | 说明 |
|---|---|
| string | 返回sdk版本。 |
示例:
/* 此处options选择emptyOptions传空 */
var emptyOptions = {properties: []
};
var result = huks.getSdkVersion(emptyOptions);
huks.importKey
importKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
导入密钥,使用Callback方式回调异步返回结果 。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | 密钥别名,用于存放所需密钥。 |
| options | [HuksOptions] | 是 | 用于导入时所需TAG和需要导入的密钥。 |
| callback | AsyncCallback<[HuksResult]> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
示例:
/* 以导入AES256密钥为例 */
var plainTextSize32 = makeRandomArr(32);
function makeRandomArr(size) {var arr = new Uint8Array(size);for (var i = 0; i < size; i++) {arr[i] = Math.floor(Math.random() * 10);}return arr;
};
var keyAlias = 'keyAlias';
var 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
};
var options = {properties: properties,inData: plainTextSize32
};
huks.importKey(keyAlias, options, function (err, data){});
huks.importKey
importKey(keyAlias: string, options: HuksOptions) : Promise
导入密钥,使用Promise方式异步返回结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | 密钥别名,用于存放所需密钥。 |
| options | [HuksOptions] | 是 | 用于导入时所需TAG和需要导入的密钥。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<[HuksResult]> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
示例:
/* 以导入AES128为例 */
var plainTextSize32 = makeRandomArr(32);function makeRandomArr(size) {var arr = new Uint8Array(size);for (var i = 0; i < size; i++) {arr[i] = Math.floor(Math.random() * 10);}return arr;
};/*第一步:生成密钥*/
var keyAlias = 'keyAlias';
var 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
};
var huksoptions = {properties: properties,inData: plainTextSize32
};
var result = huks.importKey(keyAlias, huksoptions);
huks.exportKey
exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
导出密钥,使用Callback方式回调异步返回的结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 |
| options | [HuksOptions] | 是 | 空对象(此处传空即可)。 |
| callback | AsyncCallback<[HuksResult]> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 |
示例:
/* 此处options选择emptyOptions来传空 */
var keyAlias = 'keyAlias';
var emptyOptions = {properties: []
};
huks.exportKey(keyAlias, emptyOptions, function (err, data){});
huks.exportKey
exportKey(keyAlias: string, options: HuksOptions) : Promise
导出密钥,使用Promise方式回调异步返回的结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 |
| options | [HuksOptions] | 是 | 空对象(此处传空即可)。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<[HuksResult]> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 |
示例:
/* 此处options选择emptyOptions来传空 */
var keyAlias = 'keyAlias';
var emptyOptions = {properties: []
};
var result = huks.exportKey(keyAlias, emptyOptions);
huks.getKeyProperties
getKeyProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
获取密钥属性,使用Callback回调异步返回结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 |
| options | [HuksOptions] | 是 | 空对象(此处传空即可)。 |
| callback | AsyncCallback<[HuksResult]> | 是 | errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 |
示例:
/* 此处options选择emptyOptions来传空 */
var keyAlias = 'keyAlias';
var emptyOptions = {properties: []
};
huks.getKeyProperties(keyAlias, emptyOptions, function (err, data){});
huks.getKeyProperties
getKeyProperties(keyAlias: string, options: HuksOptions) : Promise
获取密钥属性,使用Promise回调异步返回结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 |
| options | [HuksOptions] | 是 | 空对象(此处传空即可)。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<[HuksResult]> | errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。properties:返回值为生成密钥时所需参数。 |
示例:
/* 此处options选择emptyOptions来传空 */
var keyAlias = 'keyAlias';
var emptyOptions = {properties: []
};
var result = huks.getKeyProperties(keyAlias, emptyOptions);
huks.isKeyExist
isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
判断密钥是否存在,使用Callback回调异步返回结果 。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | 所需查找的密钥的别名。 |
| options | [HuksOptions] | 是 | 空对象(此处传空即可)。 |
| callback | AsyncCallback | 是 | FALSE代表密钥不存在,TRUE代表密钥存在。 |
示例:
/* 此处options选择emptyOptions来传空 */
var keyAlias = 'keyAlias';
var emptyOptions = {properties: []
};
huks.isKeyExist(keyAlias, emptyOptions, function (err, data){});
huks.isKeyExist
isKeyExist(keyAlias: string, options: HuksOptions) : Promise
判断密钥是否存在,使用Promise回调异步返回结果 。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | 所需查找的密钥的别名。 |
| options | [HuksOptions] | 是 | 空对象(此处传空即可)。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise | FALSE代表密钥不存在,TRUE代表密钥存在。 |
示例:
/* 此处options选择emptyOptions来传空 */
var keyAlias = 'keyAlias';
var emptyOptions = {properties: []
};
var result = huks.isKeyExist(keyAlias, emptyOptions);
huks.init
init(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
init操作密钥接口,使用Callback回调异步返回结果 。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | Init操作密钥的别名。 |
| options | [HuksOptions] | 是 | Init操作的参数集合。 |
| callback | AsyncCallback<[HuksHandle]> | 是 | 将Init操作操作返回的handle添加到密钥管理系统的回调。 |
huks.init
init(keyAlias: string, options: HuksOptions) : Promise
init操作密钥接口,使用Promise方式异步返回结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keyAlias | string | 是 | Init操作密钥的别名。 |
| options | [HuksOptions] | 是 | Init参数集合。 |
| promise | Promise<[HuksHandle]> | 是 | 将Init操作返回的handle添加到密钥管理系统的回调。 |
huks.update
update(handle: number, token?: Uint8Array, options: HuksOptions, callback: AsyncCallback) : void
update操作密钥接口,使用Callback回调异步返回结果 。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| handle | number | 是 | Update操作的handle。 |
| token | Uint8Array | 否 | Update操作的token。 |
| options | [HuksOptions] | 是 | Update的参数集合。 |
| callback | AsyncCallback<[HuksResult]> | 是 | 将Update操作的结果添加到密钥管理系统的回调。 |
huks.update
update(handle: number, token?: Uint8Array, options: HuksOptions) : Promise
update操作密钥接口,使用Promise方式异步返回结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| handle | number | 是 | Update操作的handle。 |
| token | Uint8Array | 否 | Update操作的token。 |
| options | [HuksOptions] | 是 | Update操作的参数集合。 |
| promise | Promise<[HuksResult]> | 是 | 将Update操作的结果添加到密钥管理系统的回调。 |
huks.finish
finish(handle: number, options: HuksOptions, callback: AsyncCallback) : void
finish操作密钥接口,使用Callback回调异步返回结果 。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| handle | number | 是 | Finish操作的handle。 |
| options | [HuksOptions] | 是 | Finish的参数集合。 |
| callback | AsyncCallback<[HuksResult]> | 是 | 将Finish操作的结果添加到密钥管理系统的回调。 |
huks.finish
finish(handle: number, options: HuksOptions) : Promise
finish操作密钥接口,使用Promise方式异步返回结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| handle | number | 是 | Finish操作的handle。 |
| options | [HuksOptions] | 是 | Finish操作的参数集合。 |
| promise | Promise<[HuksResult]> | 是 | promise实例,用于获取异步返回结果。 |
huks.abort
abort(handle: number, options: HuksOptions, callback: AsyncCallback) : void
abort操作密钥接口,使用Callback回调异步返回结果 。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| handle | number | 是 | Abort操作的handle。 |
| options | [HuksOptions] | 是 | Abort操作的参数集合。 |
| callback | AsyncCallback<[HuksResult]> | 是 | 将Abort操作的结果添加到密钥管理系统的回调。 |
示例:
/* huks.init, huks.update, huks.finish为三段式接口,需要一起使用,当huks.init和huks.update* 以及huks.finish操作中的任一阶段发生错误时,都需要调用huks.abort来终止密钥的使用。** 以下以RSA1024密钥的callback操作使用为例*/
import router from '@system.router';
import huks from '@ohos.security.huks';async function routePage() {let options = {uri: 'pages/second'}try {await router.push(options)} catch (err) {console.error(`fail callback, code: ${err.code}, msg: ${err.msg}`)}
}
var keyalias = "HuksDemoRSA";
var properties = new Array();
var options = {properties: properties,inData: new Uint8Array(0)
};
var handle;
var 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) {var arr = [];for (var i = 0, j = str.length; i < j; ++i) {arr.push(str.charCodeAt(i));}var tmpUint8Array = new Uint8Array(arr);return tmpUint8Array;
}
async function huksInit() {await huks.init(keyalias, options).then((data) => {console.log(`test init data: ${JSON.stringify(data)}`);handle = data.handle;}).catch((err) => {console.log("test init err information: " + JSON.stringify(err))})
}
async function huksUpdate() {options.inData = stringToUint8Array("huksHmacTest");await huks.update(handle, options).then((data) => {if (data.errorCode === 0) {resultMessage += "update success!";} else {resultMessage += "update fail!";}});console.log(resultMessage);
}
function huksFinish() {options.inData = stringToUint8Array("HuksDemoHMAC");huks.finish(handle, options).then((data) => {if (data.errorCode === 0) {resultMessage = "finish success!";} else {resultMessage = "finish fail errorCode: " + data.errorCode;}}).catch((err) => {resultMessage = "finish fail, catch errorMessage:" + JSON.stringify(err)});console.log(resultMessage);
}
async function huksAbort() {huks.abort(handle, options).then((data) => {if (data.errorCode === 0) {resultMessage = "abort success!";} else {resultMessage = "abort fail errorCode: " + data.errorCode;}}).catch((err) => {resultMessage = "abort fail, catch errorMessage:" + JSON.stringify(err)});console.log(resultMessage);
}@Entry
@Component
struct Index {build() {Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {Text('Hello World').fontSize(50).fontWeight(FontWeight.Bold)Button() {Text('Tocallback').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).width('50%').height('10%').backgroundColor('#0D9FFB').onClick(() => {routePage()})Button() {Text('generateKey').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).width('50%').height('10%').backgroundColor('#0D9FFB').onClick(() => {generateKey()})Button() {Text('Init').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).width('50%').height('10%').backgroundColor('#0D9FFB').onClick(() => {huksInit()})Button() {Text('Update').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).width('50%').height('10%').backgroundColor('#0D9FFB').onClick(() => {huksUpdate()})Button() {Text('Finish').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).width('50%').height('10%').backgroundColor('#0D9FFB').onClick(() => {huksFinish()})Button() {Text('Abort').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).width('50%').height('10%').backgroundColor('#0D9FFB').onClick(() => {huksAbort()})}.width('100%').height('100%')}
}
huks.abort
abort(handle: number, options: HuksOptions) : Promise;
abort操作密钥接口,使用Promise方式异步返回结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| handle | number | 是 | Abort操作的handle。 |
| options | [HuksOptions] | 是 | Abort操作的参数集合。 |
| promise | Promise<[HuksResult]> | 是 | 将Abort操作的结果添加到密钥管理系统的回调。 |
示例:
/* huks.init, huks.update, huks.finish为三段式接口,需要一起使用,当huks.init和huks.update* 以及huks.finish操作中的任一阶段发生错误时,都需要调用huks.abort来终止密钥的使用。** 以下以RSA1024密钥的promise操作使用为例*/
import router from '@system.router';
import huks from '@ohos.security.huks';async function routePage() {let options = {uri: 'pages/second'}try {await router.push(options)} catch (err) {console.error(`fail callback, code: ${err.code}, msg: ${err.msg}`)}
}var keyalias = "HuksDemoRSA";
var properties = new Array();
var options = {properties: properties,inData: new Uint8Array(0)
};
var handle;
var resultMessage = "";
function stringToUint8Array(str) {var arr = [];for (var i = 0, j = str.length; i < j; ++i) {arr.push(str.charCodeAt(i));}var 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)}`);});});
}
@Entry
@Component
struct Index {build() {Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {Text('Hello World').fontSize(50).fontWeight(FontWeight.Bold)Button() {Text('to Promise').fontSize(20).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).width('50%').height('10%').backgroundColor('#0D9FFB').onClick(() => {router.back()})Button() {Text('generateKey').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).width('50%').height('10%').backgroundColor('#0D9FFB').onClick(() => {generateKey()})Button() {Text('Init').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).width('50%').height('10%').backgroundColor('#0D9FFB').onClick(() => {huksInit()})Button() {Text('Update').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).width('50%').height('10%').backgroundColor('#0D9FFB').onClick(() => {huksUpdate()})Button() {Text('Finish').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).width('50%').height('10%').backgroundColor('#0D9FFB').onClick(() => {huksFinish()})Button() {Text('Abort').fontSize(25).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).width('50%').height('10%').backgroundColor('#0D9FFB').onClick(() => {huksAbort()})}.width('100%').height('100%')}
}
HuksParam
调用接口使用的options中的properties数组中的param。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tag | HuksTag | 是 | 标签 |
| value | boolean | number | bigint |
HuksOptions
调用接口使用的options。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| properties | Array | 否 | 属性,存HuksParam的数组。 |
| inData | Uint8Array | 否 | 输入数据。 |
HuksHandle
huks Handle结构体。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| errorCode | number | 是 | 错误码 |
| handle | number | 是 | handle值 |
| token | Uint8Array | 否 | 预留字段 |
HuksResult
调用接口返回的result。
系统能力:以下各项对应的系统能力均为SystemCapability.Security.Huks。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| errorCode | number | 是 | 错误码 |
| outData | Uint8Array | 否 | 输出数据 |
| properties | Array | 否 | 属性 |
相关文章:
鸿蒙开发接口安全:【@ohos.security.huks (通用密钥库系统)】
通用密钥库系统 说明 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。 HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。 导…...
黄仁勋:打破摩尔定律,机器人时代来了
6月2日,英伟达联合创始人兼首席执行官黄仁勋在Computex 2024(2024台北国际电脑展)上发表主题演讲,分享了人工智能时代如何助推全球新产业革命。 以下为本次演讲的要点: ①黄仁勋展示了最新量产版Blackwell芯片&#…...
每天的CTF小练--6.5(ascll码高级运用)
题目:[HUBUCTF 2022 新生赛]baby_encrypt hint: 781612443113954655886887407898899451044114412011257135914071455155316031651170318041861191719652013207021272183228423832485254125932643269827992924 注意查看前面的数字,这题不想现…...
docker参数大P与小p的区别
大P -P用于随机映射一个49000-49900之间的端口到容器内部的网络端口。 小p -p可以指定具体的主机端口映射到容器内部的网络端口。 示例 随机映射主机端口到容器的80端口 docker run -P -d nginx指定主机的8080端口映射到容器的80端口 docker run -p 8080:80 -d nginx...
智慧启航 网联无限丨2024高通汽车技术与合作峰会美格智能分论坛隆重举行
5月30日下午,以“智慧启航 网联无限”为主题的2024高通汽车技术与合作峰会&美格智能分论坛在无锡国际会议中心隆重举行,本次论坛由高通技术公司与美格智能技术股份有限公司共同主办,上海市车联网协会、江苏省智能网联汽车产业创新联盟、江…...
20.Redis之缓存
1.什么是缓存? Redis 最主要的用途,三个方面:1.存储数据(内存数据库)2.缓存 【redis 最常用的场景】3.消息队列【很少见】 缓存 (cache) 是计算机中的⼀个经典的概念. 在很多场景中都会涉及到. 核⼼思路就是把⼀些常⽤的数据放到触⼿可及(访问速度更快)的地⽅, ⽅…...
vue中实现一个时间选择器的级联框,第一层小时,第二层分钟
最近在做一个考勤系统时,新增班次的时候需要设置打卡时段,类似如下效果: 1、封装自定义组件Time.vue 接收参数有endHour(范围结束的小时数)、endMinute(最后一小时结束的分钟数)等,根据具体需求变动 <template><div&…...
数据分析必备:一步步教你如何用Pandas做数据分析(17)
1、Pandas 连接 Pandas 连接的操作实例 Pandas具有与SQL等关系数据库非常相似的功能齐全的高性能内存中连接操作。 Pandas提供单个功能merge作为DataFrame对象之间所有标准数据库联接操作的入口点 pd.merge(left, right, howinner, onNone, left_onNone, right_onNone,left_i…...
检查用户是否在错误的目录中运行了CMake命令
我们知道,在CMake中执行,我们一般是以下3条命令: mkdir build cd build cmake .. 这样可以避免 生成的一些文件污染 代码目录。 但是有一些不熟悉CMake的依然会直接在当前目录配置,比如 CMake . 那么我们如何在CMakeLists.…...
前端工程化工具系列(四)—— Commitlint(v19.3.0):规范化 Git 提交
commitlint 是对 Git 提交的 message 进行校验的工具。 1. 环境要求 v19 以上的 Stylelint,支持 Node.js 的版本为 v18 。 在命令行中输入以下内容后回车,来查看当前系统中 Node.js 的版本。 node -vNode.js 推荐使用 v18.20.3 或者 v20.13.1。 这里使…...
<vs2022><问题记录>visual studio 2022使用console打印输出时,输出窗口不显示内容
前言 本文为问题记录。 问题概述 在使用visual studio 2022编写代码时,如C#,在代码中使用console.writeline来打印某些内容,以便于观察,但发现输出窗口不显示,而代码是完全没有问题的。 解决办法 根据网上提供的办法…...
推荐一个免费的相亲工具
推荐一个免费的相亲工具,步骤如下: 1)微信里面搜索公众号“光源桥”,并关注 2)输入搜索条件进行搜索对象 例如下面搜索:...
写一个盲盒模拟器
最近想写一个小程序,随便写一个玩吧,先想了下功能: 1.有很多盲盒,可以选择模拟开启 2.自定义盲盒,我们可以自定义制作盲盒自己玩 3.用户界面,记录盲盒历史,可以给坏越提意见 所用技术栈&…...
Java使用正则表达式匹配以某个字符开始,某个字符结束
前言 好久没用regex了,之前用的贼溜的东西都忘完了,这次遇到一个东西恰好我觉得用正则表达式会方便一点,所以把这次的开发过程记录一下 这遍文章包括Java如何使用正则表达式去匹配解决正确的表达式却匹配不到数据的问题使用正则表达式却出现栈溢出的问题背景需求 首先我会根…...
什么叫硬编码?如何避免硬编码
硬编码(Hardcoding或Hard-coding)是指在编写程序时,直接将具体的值(如字符串、数字、路径等)写入源代码中,而不是通过变量、配置文件、数据库查询或其他动态方法来获取这些值。这种方式虽然简单直接&#x…...
RK3588 Android13自定义一个按键实现长按短按
一、kernel修改 diff --git a/arch/arm64/boot/dts/rockchip/rk3588-nvr-demo.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-nvr-demo.dtsi index 5aae5c613825..4cc1223f9cbf 100755 --- a/arch/arm64/boot/dts/rockchip/rk3588-nvr-demo.dtsib/arch/arm64/boot/dts/rockchip…...
映射网络驱动器自动断开的解决方法
如果将驱动器映射到网络共享,映射的驱动器可能会在定期处于非活动状态后断开连接,并且 Windows 资源管理器可能会在映射驱动器的图标上显示红色 X。,出现此行为的原因是,系统可以在指定的超时期限后断开空闲连接, (默认…...
(Arkts界面示例)ets pages Demo(笔记版本0.0.1)
数据类型概述number数值boolean布尔string字符串undefined一个未定义或不存在的值null空object对象Symbol独一无二的值bigint任意大的整数enum枚举any任意unknown未知类型void没有任何返回值的类型never永远不存在的类型 Index.ets 文件 import router from ohos.routerEntry/…...
Python 动态导入库
Python 动态导入库 从一个文件夹下遍历所有.py文件,并利用__Import__()函数实现全局导入 例程 import os # 导入操作系统接口模块 import sys # 导入系统模块# 将当前目录下的 DIR 目录添加到系统路径中,以便后续导入模块 sys.path.append(./DIR)# …...
【WP|8】深入解析WordPress钩子函数
钩子函数(Hook)是WordPress插件和主题开发中最重要的概念之一。钩子函数允许开发者在特定的时刻或事件发生时插入自定义代码,以改变WordPress的默认行为或者添加新功能。钩子分为两种主要类型:动作(Actions)…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
