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

哈希算法应用示例(一)

  1. 在应用模块中创建并初始化哈希算法实例

假设某个SA配置使用的认证算法为"hmac(md5)“(即x->aalg->alg_name为"hmac(md5)”),在调用ah_init_state函数初始化SA状态时,将创建认证算法对应的异步哈希算法实例ahash,并设置HMAC密钥(密钥数据保存在SA中,即x->aalg->alg_key)。
由于默认算法以异步方式实现,因此在ah_init_state函数中将调用crypto_alloc_ahash函数创建与认证算法"hmac(md5)"对应的异步哈希算法实例,记为hmac_md5_ahash。
由于MD5算法是以同步方式实现的,由其衍生的"hmac(md5)"算法也是以同步方式实现的,因此也会同步创建"hmac(md5)"算法的同步哈希算法实例,记为hmac_md5_shash。
由于"hmac(md5)"算法是在MD5算法基础上构造的,具体的算法运算由MD5算法实现,因此还会同步创建MD5算法的同步哈希算法实例,记为md5_shash。
综上所述,调用crypto_alloc_ahash函数实际上创建了三个算法实例,其中hmac_md5_ahash是面向具体算法应用(如IPSEC模块)的,md5_shash是面向具体算法实现(如MD5算法)的,hmac_md5_shash负责将hmac_md5_ahash和md5_shash两个算法实例串联在一起,三个算法实例的关系如下所示。
在这里插入图片描述
2. 创建异步哈希算法实例hmac_md5_ahash(一)

下面将按照函数调用关系逐步说明如何创建哈希算法实例hmac_md5_ahash。
1)ah_init_state函数
ah_init_state函数调用crypto_alloc_ahash函数异步哈希算法实例hmac_md5_ahash时,输入参数包括算法alg_name(=“hmac(md5)”)、算法类型type(=0)和算法类型屏蔽字mask(=0)。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值