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 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值