HarmonyOS API:头文件

joytrian
发布于 2023-4-14 17:03
浏览
0收藏

版本:v3.1 Beta

native_huks_api.h

更新时间: 2023-02-17 09:19

概述

声明用于访问HUKS的API。


起始版本:


9


相关模块:


​HuksKeyApi​

汇总

函数

名称

描述

​OH_Huks_GetSdkVersion​​​ (struct ​​OH_Huks_Blob​​ *sdkVersion)

获取当前Huks sdk版本号。

​OH_Huks_GenerateKeyItem​​​ (const struct ​​OH_Huks_Blob​​​ *keyAlias, const struct ​​OH_Huks_ParamSet​​​ *paramSetIn, struct ​​OH_Huks_ParamSet​​ *paramSetOut)

生成密钥。

​OH_Huks_ImportKeyItem​​​ (const struct ​​OH_Huks_Blob​​​ *keyAlias, const struct ​​OH_Huks_ParamSet​​​ *paramSet, const struct ​​OH_Huks_Blob​​ *key)

导入明文密钥。

​OH_Huks_ImportWrappedKeyItem​​​ (const struct ​​OH_Huks_Blob​​​ *keyAlias, const struct ​​OH_Huks_Blob​​​ *wrappingKeyAlias, const struct ​​OH_Huks_ParamSet​​​ *paramSet, const struct ​​OH_Huks_Blob​​ *wrappedKeyData)

导入密文密钥。

​OH_Huks_ExportPublicKeyItem​​​ (const struct ​​OH_Huks_Blob​​​ *keyAlias, const struct ​​OH_Huks_ParamSet​​​ *paramSet, struct ​​OH_Huks_Blob​​ *key)

导出公钥。

​OH_Huks_DeleteKeyItem​​​ (const struct ​​OH_Huks_Blob​​​ *keyAlias, const struct ​​OH_Huks_ParamSet​​ *paramSet)

删除密钥。

​OH_Huks_GetKeyItemParamSet​​​ (const struct ​​OH_Huks_Blob​​​ *keyAlias, const struct ​​OH_Huks_ParamSet​​​ *paramSetIn, struct ​​OH_Huks_ParamSet​​ *paramSetOut)

获取密钥的属性集。

​OH_Huks_IsKeyItemExist​​​ (const struct ​​OH_Huks_Blob​​​ *keyAlias, const struct ​​OH_Huks_ParamSet​​ *paramSet)

判断密钥是否存在。

​OH_Huks_AttestKeyItem​​​ (const struct ​​OH_Huks_Blob​​​ *keyAlias, const struct ​​OH_Huks_ParamSet​​​ *paramSet, struct ​​OH_Huks_CertChain​​ *certChain)

获取密钥证书链。

​OH_Huks_InitSession​​​ (const struct ​​OH_Huks_Blob​​​ *keyAlias, const struct ​​OH_Huks_ParamSet​​​ *paramSet, struct ​​OH_Huks_Blob​​​ *handle, struct ​​OH_Huks_Blob​​ *token)

初始化密钥会话接口,并获取一个句柄(必选)和挑战值(可选)。

​OH_Huks_UpdateSession​​​ (const struct ​​OH_Huks_Blob​​​ *handle, const struct ​​OH_Huks_ParamSet​​​ *paramSet, const struct ​​OH_Huks_Blob​​​ *inData, struct ​​OH_Huks_Blob​​ *outData)

分段添加密钥操作的数据并进行相应的密钥操作,输出处理数据。

​OH_Huks_FinishSession​​​ (const struct ​​OH_Huks_Blob​​​ *handle, const struct ​​OH_Huks_ParamSet​​​ *paramSet, const struct ​​OH_Huks_Blob​​​ *inData, struct ​​OH_Huks_Blob​​ *outData)

结束密钥会话并进行相应的密钥操作,输出处理数据。

​OH_Huks_AbortSession​​​ (const struct ​​OH_Huks_Blob​​​ *handle, const struct ​​OH_Huks_ParamSet​​ *paramSet)

取消密钥会话。

native_huks_param.h

更新时间: 2023-02-17 09:19

概述

提供参数集构造、使用和销毁的API。


起始版本:


9


相关模块:


​HuksParamSetApi​

汇总

函数

名称

描述

​OH_Huks_InitParamSet​​​ (struct ​​OH_Huks_ParamSet​​ **paramSet)

初始化参数集。

​OH_Huks_AddParams​​​ (struct ​​OH_Huks_ParamSet​​​ *paramSet, const struct ​​OH_Huks_Param​​ *params, uint32_t paramCnt)

添加参数到参数集里面。

​OH_Huks_BuildParamSet​​​ (struct ​​OH_Huks_ParamSet​​ **paramSet)

构造正式的参数集。

​OH_Huks_FreeParamSet​​​ (struct ​​OH_Huks_ParamSet​​ **paramSet)

销毁参数集。

​OH_Huks_CopyParamSet​​​ (const struct ​​OH_Huks_ParamSet​​​ *fromParamSet, uint32_t fromParamSetSize, struct ​​OH_Huks_ParamSet​​ **paramSet)

复制参数集(深拷贝)。

​OH_Huks_GetParam​​​ (const struct ​​OH_Huks_ParamSet​​​ *paramSet, uint32_t tag, struct ​​OH_Huks_Param​​ **param)

从参数集中获取参数。

​OH_Huks_FreshParamSet​​​ (struct ​​OH_Huks_ParamSet​​ *paramSet, bool isCopy)

刷新(复制)参数集内Blob类型的数据到参数集内。

​OH_Huks_isParamSetTagValid​​​ (const struct ​​OH_Huks_ParamSet​​ *paramSet)

检查参数集中的参数是否有效、是否有重复。

​OH_Huks_isParamSetValid​​​ (const struct ​​OH_Huks_ParamSet​​ *paramSet, uint32_t size)

检查参数集大小是否有效。

​OH_Huks_CheckParamMatch​​​ (const struct ​​OH_Huks_Param​​​ *baseParam, const struct ​​OH_Huks_Param​​ *param)

比较两个参数是否相同

native_huks_type.h

更新时间: 2023-02-17 09:19

概述

提供huks中的枚举变量、结构体定义与宏定义。


起始版本:


9


相关模块:


​HuksTypeApi​

汇总

结构体

名称

描述

​OH_Huks_Result​

表示状态返回数据,包括返回码和消息。

​OH_Huks_Blob​

定义存放数据的结构体类型。

​OH_Huks_Param​

定义参数集中的参数结构体类型。

​OH_Huks_ParamSet​

定义参数集的结构体类型。

​OH_Huks_CertChain​

定义证书链的结构体类型。

​OH_Huks_KeyInfo​

定义密钥信息的结构体类型。

​OH_Huks_PubKeyInfo​

定义公钥信息的结构体类型。

​OH_Huks_KeyMaterialRsa​

定义Rsa密钥的结构体类型。

​OH_Huks_KeyMaterialEcc​

定义Ecc密钥的结构体类型。

​OH_Huks_KeyMaterialDsa​

定义Dsa密钥的结构体类型。

​OH_Huks_KeyMaterialDh​

定义Dh密钥的结构体类型。

​OH_Huks_KeyMaterial25519​

定义25519类型密钥的结构体类型。

宏定义

名称

OH_HUKS_AE_TAG_LEN

16

OH_HUKS_BITS_PER_BYTE

8

OH_HUKS_MAX_KEY_SIZE

2048

OH_HUKS_AE_NONCE_LEN

12

OH_HUKS_MAX_KEY_ALIAS_LEN

64

OH_HUKS_MAX_PROCESS_NAME_LEN

50

OH_HUKS_MAX_RANDOM_LEN

1024

OH_HUKS_SIGNATURE_MIN_SIZE

64

OH_HUKS_MAX_OUT_BLOB_SIZE

(5 * 1024 * 1024)

OH_HUKS_WRAPPED_FORMAT_MAX_SIZE

(1024 * 1024)

OH_HUKS_IMPORT_WRAPPED_KEY_TOTAL_BLOBS

10

TOKEN_CHALLENGE_LEN

32

SHA256_SIGN_LEN

32

TOKEN_SIZE

32

MAX_AUTH_TIMEOUT_SECOND

60

SECURE_SIGN_VERSION

0x01000001

枚举

名称

描述

​OH_Huks_KeyPurpose​​ {

OH_HUKS_KEY_PURPOSE_ENCRYPT = 1,

OH_HUKS_KEY_PURPOSE_DECRYPT = 2,

OH_HUKS_KEY_PURPOSE_SIGN = 4,

OH_HUKS_KEY_PURPOSE_VERIFY = 8,

OH_HUKS_KEY_PURPOSE_DERIVE = 16,

OH_HUKS_KEY_PURPOSE_WRAP = 32,

OH_HUKS_KEY_PURPOSE_UNWRAP = 64,

OH_HUKS_KEY_PURPOSE_MAC = 128,

OH_HUKS_KEY_PURPOSE_AGREE = 256

}

密钥用途类型。

​OH_Huks_KeyDigest​​ {

OH_HUKS_DIGEST_NONE = 0,

OH_HUKS_DIGEST_MD5 = 1,

OH_HUKS_DIGEST_SM3 = 2,

OH_HUKS_DIGEST_SHA1 = 10,

OH_HUKS_DIGEST_SHA224 = 11,

OH_HUKS_DIGEST_SHA256 = 12,

OH_HUKS_DIGEST_SHA384 = 13,

OH_HUKS_DIGEST_SHA512 = 14

}

摘要算法类型。

​OH_Huks_KeyPadding​​ {

OH_HUKS_PADDING_NONE = 0,

OH_HUKS_PADDING_OAEP = 1,

OH_HUKS_PADDING_PSS = 2,

OH_HUKS_PADDING_PKCS1_V1_5 = 3,

OH_HUKS_PADDING_PKCS5 = 4,

OH_HUKS_PADDING_PKCS7 = 5

}

补齐算法类型。

​OH_Huks_CipherMode​​ {

OH_HUKS_MODE_ECB = 1,

OH_HUKS_MODE_CBC = 2,

OH_HUKS_MODE_CTR = 3,

OH_HUKS_MODE_OFB = 4,

OH_HUKS_MODE_CCM = 31,

OH_HUKS_MODE_GCM = 32

}

加解密算法工作模式。

​OH_Huks_KeySize​​ {

OH_HUKS_RSA_KEY_SIZE_512 = 512,

OH_HUKS_RSA_KEY_SIZE_768 = 768,

OH_HUKS_RSA_KEY_SIZE_1024 = 1024,

OH_HUKS_RSA_KEY_SIZE_2048 = 2048,

OH_HUKS_RSA_KEY_SIZE_3072 = 3072,

OH_HUKS_RSA_KEY_SIZE_4096 = 4096,

OH_HUKS_ECC_KEY_SIZE_224 = 224,

OH_HUKS_ECC_KEY_SIZE_256 = 256,

OH_HUKS_ECC_KEY_SIZE_384 = 384,

OH_HUKS_ECC_KEY_SIZE_521 = 521,

OH_HUKS_AES_KEY_SIZE_128 = 128,

OH_HUKS_AES_KEY_SIZE_192 = 192,

OH_HUKS_AES_KEY_SIZE_256 = 256,

OH_HUKS_AES_KEY_SIZE_512 = 512,

OH_HUKS_CURVE25519_KEY_SIZE_256 = 256,

OH_HUKS_DH_KEY_SIZE_2048 = 2048,

OH_HUKS_DH_KEY_SIZE_3072 = 3072,

OH_HUKS_DH_KEY_SIZE_4096 = 4096,

OH_HUKS_SM2_KEY_SIZE_256 = 256,

OH_HUKS_SM4_KEY_SIZE_128 = 128

}

算法密钥长度。

​OH_Huks_KeyAlg​​ {

OH_HUKS_ALG_RSA = 1,

OH_HUKS_ALG_ECC = 2,

OH_HUKS_ALG_DSA = 3,

OH_HUKS_ALG_AES = 20,

OH_HUKS_ALG_HMAC = 50,

OH_HUKS_ALG_HKDF = 51,

OH_HUKS_ALG_PBKDF2 = 52,

OH_HUKS_ALG_ECDH = 100,

OH_HUKS_ALG_X25519 = 101,

OH_HUKS_ALG_ED25519 = 102,

OH_HUKS_ALG_DH = 103,

OH_HUKS_ALG_SM2 = 150,

OH_HUKS_ALG_SM3 = 151,

OH_HUKS_ALG_SM4 = 152

}

密钥使用的算法。

​OH_Huks_AlgSuite​​ {

OH_HUKS_UNWRAP_SUITE_X25519_AES_256_GCM_NOPADDING = 1,

OH_HUKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING = 2

}

密文导入所需的算法套件类型

​OH_Huks_KeyGenerateType​​ {

OH_HUKS_KEY_GENERATE_TYPE_DEFAULT = 0,

OH_HUKS_KEY_GENERATE_TYPE_DERIVE = 1,

OH_HUKS_KEY_GENERATE_TYPE_AGREE = 2

}

生成的密钥类型。

​OH_Huks_KeyFlag​​ {

OH_HUKS_KEY_FLAG_IMPORT_KEY = 1,

OH_HUKS_KEY_FLAG_GENERATE_KEY = 2,

OH_HUKS_KEY_FLAG_AGREE_KEY = 3,

OH_HUKS_KEY_FLAG_DERIVE_KEY = 4

}

密钥的产生方式。

​OH_Huks_KeyStorageType​​ {

OH_HUKS_STORAGE_TEMP = 0,

OH_HUKS_STORAGE_PERSISTENT = 1

}

密钥的存储方式。

​OH_Huks_ImportKeyType​​ {

OH_HUKS_KEY_TYPE_PUBLIC_KEY = 0,

OH_HUKS_KEY_TYPE_PRIVATE_KEY = 1,

OH_HUKS_KEY_TYPE_KEY_PAIR = 2

}

导入密钥的类型,默认为导入公钥,导入对称密钥时不需要该字段。

​OH_Huks_ErrCode​​ {

OH_HUKS_SUCCESS = 0,

OH_HUKS_ERR_CODE_PERMISSION_FAIL = 201,

OH_HUKS_ERR_CODE_ILLEGAL_ARGUMENT = 401,

OH_HUKS_ERR_CODE_NOT_SUPPORTED_API = 801,

OH_HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED = 12000001,

OH_HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT = 12000002,

OH_HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT = 12000003,

OH_HUKS_ERR_CODE_FILE_OPERATION_FAIL = 12000004,

OH_HUKS_ERR_CODE_COMMUNICATION_FAIL = 12000005,

OH_HUKS_ERR_CODE_CRYPTO_FAIL = 12000006,

OH_HUKS_ERR_CODE_KEY_AUTH_PERMANENTLY_INVALIDATED = 12000007,

OH_HUKS_ERR_CODE_KEY_AUTH_VERIFY_FAILED = 12000008,

OH_HUKS_ERR_CODE_KEY_AUTH_TIME_OUT = 12000009,

OH_HUKS_ERR_CODE_SESSION_LIMIT = 12000010,

OH_HUKS_ERR_CODE_ITEM_NOT_EXIST = 12000011,

OH_HUKS_ERR_CODE_INTERNAL_ERROR = 12000012,

OH_HUKS_ERR_CODE_CREDENTIAL_NOT_EXIST = 12000013

}

错误码。

​OH_Huks_TagType​​ {

OH_HUKS_TAG_TYPE_INVALID = 0 << 28,

OH_HUKS_TAG_TYPE_INT = 1 << 28,

OH_HUKS_TAG_TYPE_UINT = 2 << 28,

OH_HUKS_TAG_TYPE_ULONG = 3 << 28,

OH_HUKS_TAG_TYPE_BOOL = 4 << 28,

OH_HUKS_TAG_TYPE_BYTES = 5 << 28

}

参数集中参数类型的掩码值。

​OH_Huks_UserAuthType​​ {

OH_HUKS_USER_AUTH_TYPE_FINGERPRINT = 1 << 0,

OH_HUKS_USER_AUTH_TYPE_FACE = 1 << 1,

OH_HUKS_USER_AUTH_TYPE_PIN = 1 << 2

}

密钥访问控制中的用户认证类型

​OH_Huks_AuthAccessType​​ {

OH_HUKS_AUTH_ACCESS_INVALID_CLEAR_PASSWORD = 1 << 0,

OH_HUKS_AUTH_ACCESS_INVALID_NEW_BIO_ENROLL = 1 << 1

}

安全访问控制类型,表示密钥失效的原则

​OH_Huks_ChallengeType​​ {

OH_HUKS_CHALLENGE_TYPE_NORMAL = 0,

OH_HUKS_CHALLENGE_TYPE_CUSTOM = 1,

OH_HUKS_CHALLENGE_TYPE_NONE = 2

}

密钥使用时生成challenge的类型

​OH_Huks_ChallengePosition​​ {

OH_HUKS_CHALLENGE_POS_0 = 0,

OH_HUKS_CHALLENGE_POS_1,

OH_HUKS_CHALLENGE_POS_2,

OH_HUKS_CHALLENGE_POS_3

}

challenge类型为用户自定义类型时,生成的challenge有效长度仅为8字节连续的数据,且仅支持4种位置。

​OH_Huks_SecureSignType​​ { OH_HUKS_SECURE_SIGN_WITH_AUTHINFO = 1 }

生成或导入密钥时,指定该密钥的安全签名类型。

​OH_Huks_Tag​​ {

OH_HUKS_TAG_ALGORITHM = OH_HUKS_TAG_TYPE_UINT | 1, OH_HUKS_TAG_PURPOSE = OH_HUKS_TAG_TYPE_UINT | 2, OH_HUKS_TAG_KEY_SIZE = OH_HUKS_TAG_TYPE_UINT | 3,

OH_HUKS_TAG_DIGEST = OH_HUKS_TAG_TYPE_UINT | 4, OH_HUKS_TAG_PADDING = OH_HUKS_TAG_TYPE_UINT | 5, OH_HUKS_TAG_BLOCK_MODE = OH_HUKS_TAG_TYPE_UINT | 6, OH_HUKS_TAG_KEY_TYPE = OH_HUKS_TAG_TYPE_UINT | 7,

OH_HUKS_TAG_ASSOCIATED_DATA = OH_HUKS_TAG_TYPE_BYTES | 8, OH_HUKS_TAG_NONCE = OH_HUKS_TAG_TYPE_BYTES | 9, OH_HUKS_TAG_IV = OH_HUKS_TAG_TYPE_BYTES | 10, OH_HUKS_TAG_INFO = OH_HUKS_TAG_TYPE_BYTES | 11,

OH_HUKS_TAG_SALT = OH_HUKS_TAG_TYPE_BYTES | 12, OH_HUKS_TAG_ITERATION = OH_HUKS_TAG_TYPE_UINT | 14, OH_HUKS_TAG_KEY_GENERATE_TYPE = OH_HUKS_TAG_TYPE_UINT | 15,

OH_HUKS_TAG_AGREE_ALG = OH_HUKS_TAG_TYPE_UINT | 19,

OH_HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS = OH_HUKS_TAG_TYPE_BOOL | 20, OH_HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS = OH_HUKS_TAG_TYPE_BYTES | 21, OH_HUKS_TAG_AGREE_PUBLIC_KEY = OH_HUKS_TAG_TYPE_BYTES | 22, OH_HUKS_TAG_KEY_ALIAS = OH_HUKS_TAG_TYPE_BYTES | 23,

OH_HUKS_TAG_DERIVE_KEY_SIZE = OH_HUKS_TAG_TYPE_UINT | 24, OH_HUKS_TAG_IMPORT_KEY_TYPE = OH_HUKS_TAG_TYPE_UINT | 25, OH_HUKS_TAG_UNWRAP_ALGORITHM_SUITE = OH_HUKS_TAG_TYPE_UINT | 26, OH_HUKS_TAG_ALL_USERS = OH_HUKS_TAG_TYPE_BOOL | 301,

OH_HUKS_TAG_USER_ID = OH_HUKS_TAG_TYPE_UINT | 302, OH_HUKS_TAG_NO_AUTH_REQUIRED = OH_HUKS_TAG_TYPE_BOOL | 303, OH_HUKS_TAG_USER_AUTH_TYPE = OH_HUKS_TAG_TYPE_UINT | 304, OH_HUKS_TAG_AUTH_TIMEOUT = OH_HUKS_TAG_TYPE_UINT | 305,

OH_HUKS_TAG_AUTH_TOKEN = OH_HUKS_TAG_TYPE_BYTES | 306, OH_HUKS_TAG_KEY_AUTH_ACCESS_TYPE = OH_HUKS_TAG_TYPE_UINT | 307, OH_HUKS_TAG_KEY_SECURE_SIGN_TYPE = OH_HUKS_TAG_TYPE_UINT | 308, OH_HUKS_TAG_CHALLENGE_TYPE = OH_HUKS_TAG_TYPE_UINT | 309,

OH_HUKS_TAG_CHALLENGE_POS = OH_HUKS_TAG_TYPE_UINT | 310, OH_HUKS_TAG_ATTESTATION_CHALLENGE = OH_HUKS_TAG_TYPE_BYTES | 501, OH_HUKS_TAG_ATTESTATION_APPLICATION_ID = OH_HUKS_TAG_TYPE_BYTES | 502,

OH_HUKS_TAG_ATTESTATION_ID_ALIAS = OH_HUKS_TAG_TYPE_BYTES | 511,

OH_HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO = OH_HUKS_TAG_TYPE_BYTES | 514, OH_HUKS_TAG_ATTESTATION_ID_VERSION_INFO = OH_HUKS_TAG_TYPE_BYTES | 515,

OH_HUKS_TAG_IS_KEY_ALIAS = OH_HUKS_TAG_TYPE_BOOL | 1001, OH_HUKS_TAG_KEY_STORAGE_FLAG = OH_HUKS_TAG_TYPE_UINT | 1002, OH_HUKS_TAG_IS_ALLOWED_WRAP = OH_HUKS_TAG_TYPE_BOOL | 1003, OH_HUKS_TAG_KEY_WRAP_TYPE = OH_HUKS_TAG_TYPE_UINT | 1004,

OH_HUKS_TAG_KEY_AUTH_ID = OH_HUKS_TAG_TYPE_BYTES | 1005, OH_HUKS_TAG_KEY_ROLE = OH_HUKS_TAG_TYPE_UINT | 1006, OH_HUKS_TAG_KEY_FLAG = OH_HUKS_TAG_TYPE_UINT | 1007, OH_HUKS_TAG_IS_ASYNCHRONIZED = OH_HUKS_TAG_TYPE_UINT | 1008,

OH_HUKS_TAG_KEY_DOMAIN = OH_HUKS_TAG_TYPE_UINT | 1011, OH_HUKS_TAG_SYMMETRIC_KEY_DATA = OH_HUKS_TAG_TYPE_BYTES | 20001,

OH_HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA = OH_HUKS_TAG_TYPE_BYTES | 20002, OH_HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA = OH_HUKS_TAG_TYPE_BYTES | 20003

}


文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/native__huks__type_8h-0000001446810564-V3?catalogVersion=V3​

已于2023-4-14 17:03:55修改
收藏
回复
举报
回复