Huks模块之hks_types.h代码评注

本文详细介绍了Huks模块中的关键头文件hks_types.h,包括版本号定义、常量定义如密钥长度、随机数长度等,并深入解析了hks_blob结构体、hks_key_param结构体、加密解密参数及证书链结构体等,展示了密钥管理和加密操作的基础要素。
摘要由CSDN通过智能技术生成

综述

hks_types.h是Huks模块中关键的头文件,其中对密钥参数、密钥的算法格式、密钥加密解密所用信息、证书链等用结构体进行了封装。

宏定义

#define HKS_SDK_VERSION                          "1.0.0.10"//版本号
#define HKS_BOOL_FALSE                           0//布尔值错误
#define HKS_BOOL_TRUE                            1
#define HKS_ALIAS_MAX_SIZE                       64//别名最大长度
#define HKS_SALT_MAX_SIZE                        16//系统添加的随机数(用来散列化密码)
#define HKS_NONCE_MIN_SIZE                       7//临时的随机数最小值
#define HKS_KEY_BYTES_CURVE25519                 32//基于CURVE25519算法的位宽
#define HKS_RANDOM_MAX_LEN                       1024//随机数最大长度
#define HKS_MAX_KEY_LEN_128                      128//最大密码长度
#define HKS_MAX_KEY_LEN_192                      192
#define HKS_MAX_KEY_LEN_256                      256
#define HKS_KEY_DERIVE_LEN                       32
#define HKS_BINARY_OF_DEC                        10//二进制的十进制表现
#define HKS_BINARY_OF_HEX                        16//二进制的十六进制表现
#define HKS_HASH256_MIN_OUT_SIZE                 32
#define HKS_HASH512_MIN_OUT_SIZE                 64
#define HKS_DERIVED_KEY_MIN_OUT_SIZE             16
#define HKS_BITS_PER_BYTES                       8//每字节占八位比特
#define HKS_SIGNATURE_MIN_SIZE                   64//数字签名最小长度
#define HKS_RSA2048_SIGNATURE_SIZE               256//基于RSA2048的数字签名长度
#define HKS_PUBLIC_BYTES_ED25519                 32//基于E25519产生的公开数字签名字节长度
#define HKS_PRIVATE_BYTES_ED25519                64
#define HKS_KEY_PAIR_CIPHER_ED25519              80//基于ED25519生成的密钥对
#define HKS_HEADER_HASH_SIZE                     64
#define HKS_AUTH_ID_MAX_SIZE                     64//授权id最大长度
#define HKS_KEY_LEN_RSA_KEYPAIR                  2048
#define HKS_CHALLENGE_MIN_LEN                    16//挑战码最小长度
#define HKS_CHALLENGE_MAX_LEN                    128//挑战码最大长度
#define HKS_ENCRYPTED_KEY_TAG_LEN                16//被加密的密钥的标签
#define HKS_ENCRYPTED_KEY_NONCE_LEN              16//被加密的一次性随机数长度
#define HKS_ENCRYPTED_KEY_AAD_LEN                16

关键结构体

hks_blob

这个结构体描述了数据的类型、地址、大小,是下面许多结构体的基石。


struct hks_blob {
    uint8_t type;//数据类型
    uint8_t *data;//数据地址
    uint32_t size;//数据大小
};

密钥参数结构体


struct hks_key_param {//密钥参数
    uint32_t key_type; /* algorithm *///密钥类型
    uint32_t key_len;//密钥长度
    uint32_t key_usage; /* usage *///密钥用法
    uint32_t key_pad; /* Fill mode *///密码填充
    uint32_t key_mode; /* Group mode *///密码模式
    uint32_t key_role; /* role */
    uint16_t key_domain;//密钥域
    struct hks_blob key_auth_id; /* auth id */
};

加密解密所用的参数

struct hks_crypt_param {
    struct hks_blob nonce; /* Nonce value or iv vector */ //在密码散列时系统添加的随机数或向量
    struct hks_blob aad;//附加的验证数据
};

加密所用的信息

struct hks_encrypt_material {
    struct hks_blob *cipher_text;//加密信息
    struct hks_blob *nonce_blob; /* Nonce value or iv vector *///一次性随机数的区域
    struct hks_blob *aad_blob;//附加的验证数据区域
    struct hks_blob *plain_text;//纯文本数据、明文
    struct hks_storage_key_info *key_info;//密钥信息
    uint32_t sealing_alg;
};

证书链

struct hks_cert_chain {
    uint32_t count;//证书总数
    struct hks_blob *cert; /* cert array list *///存储证书的地址
};

hks_usage_spec

struct hks_usage_spec {
    uint32_t mode;//模式
    uint32_t padding;//填充
    uint32_t digest;//摘要
    void *param; /* extended param *///参数
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值