当前位置: 首页 > news >正文

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

通用密钥库系统

说明

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

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

导入模块

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_INVALID0
HUKS_TAG_ALGORITHMHUKS_TAG_TYPE_UINT1
HUKS_TAG_PURPOSEHuksTagType.HUKS_TAG_TYPE_UINT2
HUKS_TAG_KEY_SIZEHuksTagType.HUKS_TAG_TYPE_UINT3
HUKS_TAG_DIGESTHuksTagType.HUKS_TAG_TYPE_UINT4
HUKS_TAG_PADDINGHuksTagType.HUKS_TAG_TYPE_UINT5
HUKS_TAG_BLOCK_MODEHuksTagType.HUKS_TAG_TYPE_UINT6
HUKS_TAG_KEY_TYPEHuksTagType.HUKS_TAG_TYPE_UINT7
HUKS_TAG_ASSOCIATED_DATAHuksTagType.HUKS_TAG_TYPE_BYTES8
HUKS_TAG_NONCEHuksTagType.HUKS_TAG_TYPE_BYTES9
HUKS_TAG_IVHuksTagType.HUKS_TAG_TYPE_BYTES10
HUKS_TAG_INFOHuksTagType.HUKS_TAG_TYPE_BYTES11
HUKS_TAG_SALTHuksTagType.HUKS_TAG_TYPE_BYTES12
HUKS_TAG_PWDHuksTagType.HUKS_TAG_TYPE_BYTES13
HUKS_TAG_ITERATIONHuksTagType.HUKS_TAG_TYPE_UINT14
HUKS_TAG_KEY_GENERATE_TYPEHuksTagType.HUKS_TAG_TYPE_UINT15
HUKS_TAG_DERIVE_MAIN_KEYHuksTagType.HUKS_TAG_TYPE_BYTES16
HUKS_TAG_DERIVE_FACTORHuksTagType.HUKS_TAG_TYPE_BYTES17
HUKS_TAG_DERIVE_ALGHuksTagType.HUKS_TAG_TYPE_UINT18
HUKS_TAG_AGREE_ALGHuksTagType.HUKS_TAG_TYPE_UINT19
HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIASHuksTagType.HUKS_TAG_TYPE_BOOL20
HUKS_TAG_AGREE_PRIVATE_KEY_ALIASHuksTagType.HUKS_TAG_TYPE_BYTES21
HUKS_TAG_AGREE_PUBLIC_KEYHuksTagType.HUKS_TAG_TYPE_BYTES22
HUKS_TAG_KEY_ALIASHuksTagType.HUKS_TAG_TYPE_BYTES23
HUKS_TAG_DERIVE_KEY_SIZEHuksTagType.HUKS_TAG_TYPE_UINT24
HUKS_TAG_ACTIVE_DATETIMEHuksTagType.HUKS_TAG_TYPE_ULONG201
HUKS_TAG_ORIGINATION_EXPIRE_DATETIMEHuksTagType.HUKS_TAG_TYPE_ULONG202
HUKS_TAG_USAGE_EXPIRE_DATETIMEHuksTagType.HUKS_TAG_TYPE_ULONG203
HUKS_TAG_CREATION_DATETIMEHuksTagType.HUKS_TAG_TYPE_ULONG204
HUKS_TAG_ALL_USERSksTagType.HUKS_TAG_TYPE_BOOL301
HUKS_TAG_USER_IDHuksTagType.HUKS_TAG_TYPE_UINT302
HUKS_TAG_NO_AUTH_REQUIREDHuksTagType.HUKS_TAG_TYPE_BOOL303
HUKS_TAG_USER_AUTH_TYPEHuksTagType.HUKS_TAG_TYPE_UINT304
HUKS_TAG_AUTH_TIMEOUTHuksTagType.HUKS_TAG_TYPE_UINT305
HUKS_TAG_AUTH_TOKENHuksTagType.HUKS_TAG_TYPE_BYTES306
HUKS_TAG_ATTESTATION_CHALLENGEHuksTagType.HUKS_TAG_TYPE_BYTES501
HUKS_TAG_ATTESTATION_APPLICATION_IDHuksTagType.HUKS_TAG_TYPE_BYTES502
HUKS_TAG_ATTESTATION_ID_BRANDHuksTagType.HUKS_TAG_TYPE_BYTES503
HUKS_TAG_ATTESTATION_ID_DEVICEHuksTagType.HUKS_TAG_TYPE_BYTES504
HUKS_TAG_ATTESTATION_ID_PRODUCTHuksTagType.HUKS_TAG_TYPE_BYTES505
HUKS_TAG_ATTESTATION_ID_SERIALHuksTagType.HUKS_TAG_TYPE_BYTES506
HUKS_TAG_ATTESTATION_ID_IMEIHuksTagType.HUKS_TAG_TYPE_BYTES507
HUKS_TAG_ATTESTATION_ID_MEIDHuksTagType.HUKS_TAG_TYPE_BYTES508
HUKS_TAG_ATTESTATION_ID_MANUFACTURERHuksTagType.HUKS_TAG_TYPE_BYTES509
HUKS_TAG_ATTESTATION_ID_MODELHuksTagType.HUKS_TAG_TYPE_BYTES510
HUKS_TAG_ATTESTATION_ID_ALIASHuksTagType.HUKS_TAG_TYPE_BYTES511
HUKS_TAG_ATTESTATION_ID_SOCIDHuksTagType.HUKS_TAG_TYPE_BYTES512
HUKS_TAG_ATTESTATION_ID_UDIDHuksTagType.HUKS_TAG_TYPE_BYTES513
HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFOHuksTagType.HUKS_TAG_TYPE_BYTES514
HUKS_TAG_ATTESTATION_ID_VERSION_INFOHuksTagType.HUKS_TAG_TYPE_BYTES515
HUKS_TAG_IS_KEY_ALIASHuksTagType.HUKS_TAG_TYPE_BOOL1001
HUKS_TAG_KEY_STORAGE_FLAGHuksTagType.HUKS_TAG_TYPE_UINT1002
HUKS_TAG_IS_ALLOWED_WRAPHuksTagType.HUKS_TAG_TYPE_BOOL1003
HUKS_TAG_KEY_WRAP_TYPEHuksTagType.HUKS_TAG_TYPE_UINT1004
HUKS_TAG_KEY_AUTH_IDHuksTagType.HUKS_TAG_TYPE_BYTES1005
HUKS_TAG_KEY_ROLEHuksTagType.HUKS_TAG_TYPE_UINT1006
HUKS_TAG_KEY_FLAGHuksTagType.HUKS_TAG_TYPE_UINT1007
HUKS_TAG_IS_ASYNCHRONIZEDHuksTagType.HUKS_TAG_TYPE_UINT1008
HUKS_TAG_SECURE_KEY_ALIASHuksTagType.HUKS_TAG_TYPE_BOOL1009
HUKS_TAG_SECURE_KEY_UUIDHuksTagType.HUKS_TAG_TYPE_BYTES1010
HUKS_TAG_KEY_DOMAINHuksTagType.HUKS_TAG_TYPE_UINT1011
HUKS_TAG_PROCESS_NAMEHuksTagType.HUKS_TAG_TYPE_BYTES10001
HUKS_TAG_PACKAGE_NAMEHuksTagType.HUKS_TAG_TYPE_BYTES10002
HUKS_TAG_ACCESS_TIMEHuksTagType.HUKS_TAG_TYPE_UINT10003
HUKS_TAG_USES_TIMEHuksTagType.HUKS_TAG_TYPE_UINT10004
HUKS_TAG_CRYPTO_CTXHuksTagType.HUKS_TAG_TYPE_ULONG10005
HUKS_TAG_KEYHuksTagType.HUKS_TAG_TYPE_BYTES10006
HUKS_TAG_KEY_VERSIONHuksTagType.HUKS_TAG_TYPE_UINT10007
HUKS_TAG_PAYLOAD_LENHuksTagType.HUKS_TAG_TYPE_UINT10008
HUKS_TAG_AE_TAGHuksTagType.HUKS_TAG_TYPE_BYTES10009
HUKS_TAG_IS_KEY_HANDLEHuksTagType.HUKS_TAG_TYPE_ULONG10010
HUKS_TAG_OS_VERSIONHuksTagType.HUKS_TAG_TYPE_UINT10101
HUKS_TAG_OS_PATCHLEVELHuksTagType.HUKS_TAG_TYPE_UINT10102
HUKS_TAG_SYMMETRIC_KEY_DATAHuksTagType.HUKS_TAG_TYPE_BYTES20001
HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATAHuksTagType.HUKS_TAG_TYPE_BYTES20002
HUKS_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进行错误码查询。

示例:

/* 以生成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。

参数:

参数名类型必填说明
keyAliasstring密钥别名。
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。

参数:

参数名类型必填说明
keyAliasstring密钥别名,应为生成key时传入的别名。
options[HuksOptions]空对象(此处传空即可)。
callbackAsyncCallback<[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。

参数:

参数名类型必填说明
keyAliasstring密钥别名,应为生成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。

参数:

参数名类型必填说明
keyAliasstring密钥别名,用于存放所需密钥。
options[HuksOptions]用于导入时所需TAG和需要导入的密钥。
callbackAsyncCallback<[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。

参数:

参数名类型必填说明
keyAliasstring密钥别名,用于存放所需密钥。
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。

参数:

参数名类型必填说明
keyAliasstring密钥别名,应与所用密钥生成时使用的别名相同。
options[HuksOptions]空对象(此处传空即可)。
callbackAsyncCallback<[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。

参数:

参数名类型必填说明
keyAliasstring密钥别名,应与所用密钥生成时使用的别名相同。
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。

参数:

参数名类型必填说明
keyAliasstring密钥别名,应与所用密钥生成时使用的别名相同。
options[HuksOptions]空对象(此处传空即可)。
callbackAsyncCallback<[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。

参数:

参数名类型必填说明
keyAliasstring密钥别名,应与所用密钥生成时使用的别名相同。
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。

参数:

参数名类型必填说明
keyAliasstring所需查找的密钥的别名。
options[HuksOptions]空对象(此处传空即可)。
callbackAsyncCallbackFALSE代表密钥不存在,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。

参数:

参数名类型必填说明
keyAliasstring所需查找的密钥的别名。
options[HuksOptions]空对象(此处传空即可)。

返回值:

类型说明
PromiseFALSE代表密钥不存在,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。

参数:

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

huks.init

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

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

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

参数:

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

huks.update

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

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

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

参数:

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

huks.update

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

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

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

参数:

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

huks.finish

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

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

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

参数:

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

huks.finish

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

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

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

参数:

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

huks.abort

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

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

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

参数:

参数名类型必填说明
handlenumberAbort操作的handle。
options[HuksOptions]Abort操作的参数集合。
callbackAsyncCallback<[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。

参数:

参数名类型必填说明
handlenumberAbort操作的handle。
options[HuksOptions]Abort操作的参数集合。
promisePromise<[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。

参数名类型必填说明
tagHuksTag标签
valuebooleannumberbigint

HuksOptions

调用接口使用的options。

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

参数名类型必填说明
propertiesArray属性,存HuksParam的数组。
inDataUint8Array输入数据。

HuksHandle

huks Handle结构体。

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

参数名类型必填说明
errorCodenumber错误码
handlenumberhandle值
tokenUint8Array预留字段

HuksResult

调用接口返回的result。

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

参数名类型必填说明
errorCodenumber错误码
outDataUint8Array输出数据
propertiesArray属性

相关文章:

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

通用密钥库系统 说明 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 向应用提供密钥库能力&#xff0c;包括密钥管理及密钥的密码学操作等功能。 HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。 导…...

黄仁勋:打破摩尔定律,机器人时代来了

6月2日&#xff0c;英伟达联合创始人兼首席执行官黄仁勋在Computex 2024&#xff08;2024台北国际电脑展&#xff09;上发表主题演讲&#xff0c;分享了人工智能时代如何助推全球新产业革命。 以下为本次演讲的要点&#xff1a; ①黄仁勋展示了最新量产版Blackwell芯片&#…...

每天的CTF小练--6.5(ascll码高级运用)

题目&#xff1a;[HUBUCTF 2022 新生赛]baby_encrypt hint&#xff1a; 781612443113954655886887407898899451044114412011257135914071455155316031651170318041861191719652013207021272183228423832485254125932643269827992924 注意查看前面的数字&#xff0c;这题不想现…...

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日下午&#xff0c;以“智慧启航 网联无限”为主题的2024高通汽车技术与合作峰会&美格智能分论坛在无锡国际会议中心隆重举行&#xff0c;本次论坛由高通技术公司与美格智能技术股份有限公司共同主办&#xff0c;上海市车联网协会、江苏省智能网联汽车产业创新联盟、江…...

20.Redis之缓存

1.什么是缓存&#xff1f; Redis 最主要的用途,三个方面:1.存储数据(内存数据库)2.缓存 【redis 最常用的场景】3.消息队列【很少见】 缓存 (cache) 是计算机中的⼀个经典的概念. 在很多场景中都会涉及到. 核⼼思路就是把⼀些常⽤的数据放到触⼿可及(访问速度更快)的地⽅, ⽅…...

vue中实现一个时间选择器的级联框,第一层小时,第二层分钟

最近在做一个考勤系统时&#xff0c;新增班次的时候需要设置打卡时段&#xff0c;类似如下效果&#xff1a; 1、封装自定义组件Time.vue 接收参数有endHour(范围结束的小时数)、endMinute(最后一小时结束的分钟数)等&#xff0c;根据具体需求变动 <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命令

我们知道&#xff0c;在CMake中执行&#xff0c;我们一般是以下3条命令&#xff1a; mkdir build cd build cmake .. 这样可以避免 生成的一些文件污染 代码目录。 但是有一些不熟悉CMake的依然会直接在当前目录配置&#xff0c;比如 CMake . 那么我们如何在CMakeLists.…...

前端工程化工具系列(四)—— Commitlint(v19.3.0):规范化 Git 提交

commitlint 是对 Git 提交的 message 进行校验的工具。 1. 环境要求 v19 以上的 Stylelint&#xff0c;支持 Node.js 的版本为 v18 。 在命令行中输入以下内容后回车&#xff0c;来查看当前系统中 Node.js 的版本。 node -vNode.js 推荐使用 v18.20.3 或者 v20.13.1。 这里使…...

<vs2022><问题记录>visual studio 2022使用console打印输出时,输出窗口不显示内容

前言 本文为问题记录。 问题概述 在使用visual studio 2022编写代码时&#xff0c;如C#&#xff0c;在代码中使用console.writeline来打印某些内容&#xff0c;以便于观察&#xff0c;但发现输出窗口不显示&#xff0c;而代码是完全没有问题的。 解决办法 根据网上提供的办法…...

推荐一个免费的相亲工具

推荐一个免费的相亲工具&#xff0c;步骤如下&#xff1a; 1&#xff09;微信里面搜索公众号“光源桥”&#xff0c;并关注 2&#xff09;输入搜索条件进行搜索对象 例如下面搜索&#xff1a;...

写一个盲盒模拟器

最近想写一个小程序&#xff0c;随便写一个玩吧&#xff0c;先想了下功能&#xff1a; 1.有很多盲盒&#xff0c;可以选择模拟开启 2.自定义盲盒&#xff0c;我们可以自定义制作盲盒自己玩 3.用户界面&#xff0c;记录盲盒历史&#xff0c;可以给坏越提意见 所用技术栈&…...

Java使用正则表达式匹配以某个字符开始,某个字符结束

前言 好久没用regex了,之前用的贼溜的东西都忘完了,这次遇到一个东西恰好我觉得用正则表达式会方便一点,所以把这次的开发过程记录一下 这遍文章包括Java如何使用正则表达式去匹配解决正确的表达式却匹配不到数据的问题使用正则表达式却出现栈溢出的问题背景需求 首先我会根…...

什么叫硬编码?如何避免硬编码

硬编码&#xff08;Hardcoding或Hard-coding&#xff09;是指在编写程序时&#xff0c;直接将具体的值&#xff08;如字符串、数字、路径等&#xff09;写入源代码中&#xff0c;而不是通过变量、配置文件、数据库查询或其他动态方法来获取这些值。这种方式虽然简单直接&#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…...

映射网络驱动器自动断开的解决方法

如果将驱动器映射到网络共享&#xff0c;映射的驱动器可能会在定期处于非活动状态后断开连接&#xff0c;并且 Windows 资源管理器可能会在映射驱动器的图标上显示红色 X。&#xff0c;出现此行为的原因是&#xff0c;系统可以在指定的超时期限后断开空闲连接&#xff0c; (默认…...

(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文件&#xff0c;并利用__Import__()函数实现全局导入 例程 import os # 导入操作系统接口模块 import sys # 导入系统模块# 将当前目录下的 DIR 目录添加到系统路径中&#xff0c;以便后续导入模块 sys.path.append(./DIR)# …...

【WP|8】深入解析WordPress钩子函数

钩子函数&#xff08;Hook&#xff09;是WordPress插件和主题开发中最重要的概念之一。钩子函数允许开发者在特定的时刻或事件发生时插入自定义代码&#xff0c;以改变WordPress的默认行为或者添加新功能。钩子分为两种主要类型&#xff1a;动作&#xff08;Actions&#xff09…...

Java集合简略记录

一、集合体系结构 单列集合&#xff1a;Collection 双列集合&#xff1a;Map 二、单列集合 List系列集合&#xff1a;添加的元素是有序、可重复、有索引 有序指的是存和取的顺序是一致的&#xff0c;和之前排序的从小到大是没有任何关系的 Set系列集合&#xff1a;添加的元素是…...

能获取淘宝商品简化链接的浏览器书签

零&#xff0e;冗长的商品链接 访问网页版本淘宝时&#xff0c;浏览器的地址栏显示的链接太长就像这样(此链接非真实商品)&#xff1a; 于是使用如下方法 一&#xff0e;使用浏览器书签获取淘宝商品简化链接 1.新建书签 Chrome - 打开书签管理器(CtrlShiftO) - 左侧选择书签…...

JMeter Plugins Manager---插件安装

参考文章&#xff1a;https://blog.51cto.com/u_14126/6291032 需求&#xff1a; 安装【jpgc - Standard Set】插件 常用插件&#xff1a; 点击下载–报错如下&#xff1a; Failed to apply changes:Cannotapplychanges:Haveno write accessforJMeterdirectories,notpossib…...

docker-compose入门级实战教程

&#x1f31f;&#x1f30c; 欢迎来到知识与创意的殿堂 — 远见阁小民的世界&#xff01;&#x1f680; &#x1f31f;&#x1f9ed; 在这里&#xff0c;我们一起探索技术的奥秘&#xff0c;一起在知识的海洋中遨游。 &#x1f31f;&#x1f9ed; 在这里&#xff0c;每个错误都…...

MATLAB sort

对数字数组排序对字符串排序对 cell 数组排序降序排序对多维数组排序对结构体数组排序注意事项 在 MATLAB 中&#xff0c; sort 函数用于对数组进行排序。 sort 函数可以对数字数组、字符串、 cell 数组等进行升序或降序排序。以下是 sort 函数的一些常见用法&#xff1a;…...

AB测试实战

AB测试实战 1、AB测试介绍&#x1f43e; 很多网站/APP的首页都会挂一张头图(Banner)&#xff0c;用来展示重要信息&#xff0c;头图是否吸引人会对公司的营收带来重大影响&#xff0c;一家寿险公司Humana设计了如下三张头图&#xff0c;现在需要决定使用哪一张放到首页&#x…...

Java高级面试精粹:问题与解答集锦(六)

Java 面试问题及答案 1. 请解释Java中的多线程概念&#xff0c;并说明如何实现它&#xff1f; 答案&#xff1a; 多线程是指在Java程序中同时运行多个线程的功能。线程是程序执行的最小单元&#xff0c;Java中的多线程可以通过继承Thread类或实现Runnable接口来实现。 继承Th…...

MySQL之数据库数据库范式学习笔记(二)

三大范式 范式是数据库设计中的概念&#xff0c;用于规范化数据结构&#xff0c;以减少数据冗余并确保数据的一致性和完整性。MySQL 数据库设计通常遵循一定的范式&#xff0c;其中最常见的是第一至第三范式。以下是各个范式的简要说明&#xff1a; 第一范式&#xff08;1NF&…...

【Qt】 new成功,但是没有进入到构造函数。

NameTest工程中 nametest.cpp NameTest::NameTest() {pdata new privateAB; }NameTest::~NameTest() {if (pdata){privateAB *p (privateAB *)pData; //void *pdata nullptr;delete p;pdata nullptr;} }内部类&#xff1a; privateAB #include "private.h"#i…...

高清多媒体接口(High Definition Multimedia Interface, HDMI)

目录 1. Overview1.1. Time Minimized Differential Signal(TMDS)1.2. Display Data Channel(DDC)1.3. Consumer Electronics Control(CEC)1.4. HDMI Ethernet and Audio Return Channel(HEAC)1.5. Hot Plug Detected(HPD)2. Signaling and Encoding3. Video4. Control and Con…...

做网站 珠海/免费发布推广信息的b2b

这个intern()官方说法的作用是返回字符串对象的规范化表示... 然而不明觉厉... 用我通俗一点说法其实就是&#xff0c;拿到一个字符串&#xff0c;那它到字符串常量池中去执行equals方法&#xff0c;如果返回为true&#xff0c;就代表&#xff0c;有相同的则返回字符串常量池里…...

做citation的网站/seo查询5118

我正在为Android手机的客户端/服务器应用程序设计框架.我对Java和Android都很陌生(但对于一般的编程或特别是线程编程来说并不陌生).有时我的服务器和客户端将处于相同的进程中,有时它们将处于不同的进程中,具体取决于具体的用例.客户端和服务器接口类似于以下内容&#xff1a;…...

如何使用天翼云主机建设网站/世界杯数据分析

使用CentOS最新的安装镜像CentOS 7.3在测试环境安装了一台服务器&#xff0c;然后安装一堆软件。然后安装P软件时报错&#xff1a;找不到vxlan内核模块。 之前在CentOS 7.2上都安装好好的。要么重新安装服务器&#xff0c;要么给7.3降低到7.2的内核。查看当前内核版本&#xff…...

工业设计网站排名/站长工具网站备案查询

本文档的Copyleft归yfydz所有&#xff0c;使用GPL发布&#xff0c;可以自由拷贝&#xff0c;转载&#xff0c;转载时请保持文档的完整性&#xff0c;严禁用于任何商业用途。msn: yfydz_no1hotmail.com来源&#xff1a;http://yfydz.cublog.cn11. 状态操作关于连接的基本处理在p…...

网站导航这么做/怎么给公司做网站推广

(1)从文件中加载图片void CScale3DCUserManageView::OnDraw(CDC* pDC) {// TODO: 在此添加专用代码和/或调用基类CImage image; //创建图片类 USES_CONVERSION;INT re _access(W2A(m_strUserPicPath), 0);//判文件是否存在if (re -1)return;image.Load(m_strUserPicPath); /…...

免费拒绝收费网站/我有广告位怎么找客户

懂的让自己快乐,那才是真的。做人一定要经得起谎言&#xff0c;受得起敷衍&#xff0c;忍得住欺骗&#xff0c;忘得了诺言&#xff0c;放得下一切&#xff0c;最后用笑来伪装掉下的眼泪&#xff0c;要记住越是忍住泪水&#xff0c;越会变成幸福的良药。 没有人瞧不起你&#xf…...