security_huks模块下hks_service部分代码框架
本篇综述
本篇文章主要讲解hks_service的代码框架,依照hks_service.h部分函数的申明和头文件的定义,我们能够先入为主地了解到hks_service.c实现的功能,本部分security_huks\frameworks\huks_lite\source\hw_keystore_sdk\soft_service\hks_service.h
hks_service代码框架
hks_service
├── generate_key_service
│ └── hks_service_generate_key
│ └── hks_service_generate_asymmetric_key
├── algorithm_sign_verify_service
│ └── hks_service_aead_encrypt_ex
│ └── hks_service_aead_decrypt_ex
│ └── hks_service_key_derivation
│ └── hks_service_key_agreement
│ └── hks_service_asymmetric_verify
│ └── hks_service_asymmetric_sign
├── functional_service
│ └── hks_service_get_random
│ └── hks_service_hmac_ex
│ └── hks_service_hash
│ └── hks_service_bn_exp_mod
├── key_management_service
│ └── hks_service_import_public_key
│ └── hks_service_export_public_key
│ └── hks_service_delete_key
│ └── hks_service_get_key_param
│ └── hks_service_is_key_exist
├── general_security_guarantee
│ └── hks_service_register_file_callbacks
│ └── hks_service_get_pub_key_alias_list
│ └── hks_service_key_info_init
│ └── hks_service_destroy
│ └── hks_service_refresh_key_info
│ └── hks_service_register_get_hardware_udid_callback
generate_key_service部分
详细代码如下:
//声明函数
//声明hks服务生成密钥 输入参数:密钥(别称)、密钥参数
int32_t hks_service_generate_key(const struct hks_blob *key_alias,
const struct hks_key_param *key_param);
//声明hks服务生成非对称密钥 输入参数:密钥参数、主密钥、公共密钥
int32_t hks_service_generate_asymmetric_key(
const struct hks_key_param *key_param, struct hks_blob *pri_key,
struct hks_blob *pub_key);
algorithm_sign_verify_service部分
详细代码如下:
//声明hks服务aead加密方案 输入参数:密钥、密钥参数、加密参数、明文、带标志的密文
int32_t hks_service_aead_encrypt_ex(const struct hks_blob *key,
const struct hks_key_param *key_param,
const struct hks_crypt_param *crypt_param,
const struct hks_blob *plain_text,
struct hks_blob *cipher_text_with_tag);
//声明hks_aead算法解密服务方案 输入参数:密钥、密钥参数、加密参数、明文、带标志的密文
int32_t hks_service_aead_decrypt_ex(const struct hks_blob *key,
const struct hks_key_param *key_param,
const struct hks_crypt_param *crypt_param,
const struct hks_blob *cipher_text_with_tag,
struct hks_blob *plain_text);
//声明hks派生密钥服务 输入参数:派生密钥、密钥导出扩展、椒盐化、标志、密钥参数
int32_t hks_service_key_derivation(struct hks_blob *derived_key,
const struct hks_blob *kdf_key, const struct hks_blob *salt,
const struct hks_blob *label, const struct hks_key_param *key_params);
//声明hks密钥协议服务 输入参数:许可密钥、私有密钥参数、私有密钥、对等公钥、许可算法
int32_t hks_service_key_agreement(struct hks_blob *agreed_key,
const struct hks_key_param *private_key_param,
const struct hks_blob *private_key,
const struct hks_blob *peer_public_key,
const uint32_t agreement_alg);
//声明hks非对称签名服务 输入参数:密钥别名、密钥参数、hash算法、签名(密钥结构体)
int32_t hks_service_asymmetric_sign(const struct hks_blob *key_alias,
const struct hks_key_param *key_param, const struct hks_blob *hash,
struct hks_blob *signature);
functional_service部分
详细代码如下:
//声明hks获取随机数服务 输入参数:随机数(生成密钥)
int32_t hks_service_get_random(struct hks_blob *random);
//声明hmac对称服务 输入参数:密钥、使用算法、src数据、以及将output作为输出
int32_t hks_service_hmac_ex(const struct hks_blob *key,
uint32_t alg, const struct hks_blob *src_data,
struct hks_blob *output);
//声明hks哈希服务 输入参数:使用算法、src数据、最终将hash作为返回结果
int32_t hks_service_hash(uint32_t alg, const struct hks_blob *src_data,
struct hks_blob *hash);
//声明hks大数指数-模运算服务 输入参数:模幂运算相关参数X=(A^E)modN
int32_t hks_service_bn_exp_mod(struct hks_blob *x,
const struct hks_blob *a, const struct hks_blob *e,
const struct hks_blob *n);
key_management_service部分
详细代码如下:
//声明hks非对称性证明服务 输入参数:密钥别名、hash算法、签名(密钥结构体)
int32_t hks_service_asymmetric_verify(const struct hks_blob *key_alias,
const struct hks_blob *hash, const struct hks_blob *signature);
//声明hks导入公钥服务 输入参数:密钥别名、密钥参数、密钥
int32_t hks_service_import_public_key(const struct hks_blob *key_alias,
const struct hks_key_param *key_param, const struct hks_blob *key);
//声明hks导出公钥服务 输入参数:密钥别名、密钥
int32_t hks_service_export_public_key(const struct hks_blob *key_alias,
struct hks_blob *key);
//声明删除密钥服务 输入参数:密钥别名
int32_t hks_service_delete_key(const struct hks_blob *key_alias);
//声明获取密钥参数服务 输入参数:密钥别名、密钥参数
int32_t hks_service_get_key_param(const struct hks_blob *key_alias,
struct hks_key_param *key_param);
//声明判断密钥是否存在服务 输入参数:密钥别名
int32_t hks_service_is_key_exist(const struct hks_blob *key_alias);
general_security_guarantee部分
详细代码如下:
//声明hks注册文件回调服务 输入参数:文件回调结构体
int32_t hks_service_register_file_callbacks(
const struct hks_file_callbacks *callbacks);
//声明hks获取公共密钥别名列表服务 输入参数:密钥别名列表、计数列表
int32_t hks_service_get_pub_key_alias_list(
struct hks_blob *key_alias_list, uint32_t *list_count);
//声明密钥信息初始化服务
int32_t hks_service_key_info_init(void);
//声明内存销毁服务
void hks_service_destroy(void);
//声明hks更新密钥信息服务
int32_t hks_service_refresh_key_info(void);
//声明寄存器获取硬件udid回调服务
int32_t hks_service_register_get_hardware_udid_callback(
hks_get_hardware_udid_callback callback);
#endif /* HKS_SERVICE_H */