Linux加密框架应用示例(三)

本文详细介绍了Linux中如何通过哈希算法MD5使用HMAC算法模板动态创建加密算法"hmac(md5)"。内容涵盖了从查找基础算法、创建动态算法、关联基础算法、设置动态算法参数到注册动态算法的完整过程。
摘要由CSDN通过智能技术生成

哈希算法应用实例(二)

  1. 创建动态算法"hmac(md5)"(二)

算法"hmac(md5)“是在基础算法MD5基础上通过HMAC算法模板创建的动态算法,流程如下:
1)查找基础算法
shash_attr_alg函数根据输入的参数rta(包含基础算法名"md5”)、预期算法类型(算法类型type(=0)和算法类型屏蔽字mask(=0))查找基础算法对应的同步哈希算法说明salg(即md5_salg)。
在shash_attr_alg函数中,先调用crypto_attr_alg2函数查找基础算法对应的通用算法说明alg(即md5_alg),算法前端指定为crypto_shash_type,然后通过功能宏container_of根据通用算法说明获取对应的同步哈希算法说明(即md5_salg)。
在crypto_attr_alg2函数中,先调用crypto_attr_alg_name函数从参数rta中获取基础算法名name(即"md5"),然后再调用crypto_find_alg函数查找符合算法名name、预期算法类型等查找条件的通用算法说明alg(即md5_alg)。
查找到符合条件的算法时,由于要以其作为基础算法通过算法模板创建动态算法,因此更新其引用计数(cra_refcnt)。
2)创建动态算法
shash_alloc_instance函数根据算法模板名name(即"hmac")和 基础算法通用描述alg(即md5_alg)创建同步哈希算法模板实例inst(即hmac_md5_shash_inst)。
shash_alloc_instance函数实际上是一个内联函数,展开后调用crypto_alloc_instance2函数创建同步哈希算法模板实例,其中头部空间大小head即同步哈希算法个性化参数占用的空间大小,即sizeof(struct shash_alg) - sizeof(*alg)。
在crypto_alloc_instance2函数中,先申请内存空间,除输入的头部空间外还能够容纳一个通用算法模板实例(即hmac_md5_inst)和一个通用算法卵(hmac_md5_spawn),然后设置动态算法的算法名(即“hmac(md5)”)和算法驱动名(即“hmac(md5_generic)”),最后返回申请的内存空间,如下图所示。
在这里插入图片描述
3)关联基础算法
crypto_init_shash_spawn函数实现通过同步哈希算法卵(如hmac_md5_spwan&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值