目录
3.2.2 调用算法前端frontend的init_tfm接口初始化tfm
3.3 进一步初始化tfm(tfm->exit && alg->cra_init && (err = alg->cra_init(tfm))
1. crypto_alloc_ahash函数
加密框架中的哈希算法可以是同步方式实现的也可以是异步方式实现的,但是算法应用不关注哈希算法的实现方式,关注的是哈希算法提供的算法接口。为实现统一管理,加密框架默认哈希算法的实现方式为异步方式,将哈希算法的外部接口统一定义为异步哈希算法接口。
算法实例是算法应用和加密框架之间的桥梁,算法应用通过算法实例实现算法调用。以哈希算法实例为例,在IPSEC框架的AH协议模块中,协议状态初始化(ah_init_state函数)时,将根据配置的认证算法名(x->aalg->alg_name)创建对应的异步哈希算法实例ahash,如下所示。
net\ipv4\ah4.c
static int ah_init_state(struct xfrm_state *x)
{
................
ahash = crypto_alloc_ahash(x->aalg->alg_name, 0, 0);
if (IS_ERR(ahash))
goto error;
ahp->ahash