linux加密框架 crypto 算法管理 - 算法查找接口 crypto_larval_lookup

 本文详细介绍了Linux加密框架中crypto_larval_lookup函数的工作流程,包括算法查找、动态加载模块和算法幼虫的使用。在找不到匹配算法时,系统会尝试自动加载相应模块并再次查找。如果仍未找到,会创建算法幼虫并等待注册完成。该过程涉及到内核的模块管理和算法管理机制,对于理解Linux内核加密机制具有重要意义。
摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考链接
Linux加密框架的算法管理(二)_家有一希的博客-CSDN博客
crypto_larval_lookup函数介绍
crypto_larval_lookup函数的输入参数包括待查找的算法名name、算法类型type和算法类型屏蔽位mask,查找命中时返回查找到的算法或注册用算法幼虫,查找未命中时返回异常。
api.c - crypto/api.c - Linux source code (v5.15.12) - Bootlin


crypto_larval_lookup函数执行流程


1)在算法查找前首先确认算法名是否有效,如果算法名为空,终止查找流程,返回异常。
2)算法查找流程由函数crypto_alg_lookup实现,返回值为空说明未查找到符合的算法,否则为查找到符合条件的算法(可能是算法幼虫)。
3)在crypto_larval_lookup函数中,最多可能进行三次算法查找,其中前两次显式地调用crypto_alg_lookup函数进行,第三次在crypto_larval_add函数中进行。
4)在第一次未查找到算法时,尝试通过request_module函数按算法名自动加载静态算法模块(算法名.ko),然后进行第二次查找。
5)如果第二次仍然未查找到算法,调用crypto_larval_add函数创建同名的算法幼虫(称之为注册用算法幼虫,算法优先级为-1),创建完成后会进行第三次查找,如下所示。


 crypto_larval_add函数要么返回第三次查找命中的算法(如果是算法幼虫,则调用crypto_larval_wait函数等待算法注册完成,返回新注册的算法)要么返回创建的注册用算法幼虫(已添加到算法管理链表中)。
6)如果前两次查找命中,但查找到的是算法幼虫(可能是注册用算法幼虫也可能是检测用算法幼虫),说明符合要求的算法正在注册中,调用crypto_larval_wait函数等待算法注册完成,返回注册成功的算法。如果是检测用算法幼虫,注册完成的标志是算法成虫已完成正确性检验;如果是注册用算法幼虫,注册完成的标志是已设置有效的算法成虫(并且已完成正确性检验)。
7)crypto_larval_lookup函数中接口调用情况如下所示。

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/CHYabc123456hh/article/details/122298226

你可能感兴趣的:(Linux内核-Crypto,linux,运维,服务器)