linux加密框架 crypto 算法管理 - 算法查找接口 crypto_alg_lookup函数

参考链接

  • Linux加密框架的算法管理(二)_家有一希的博客-CSDN博客

函数介绍

static struct crypto_alg *crypto_alg_lookup(const char *name, u32 type,u32 mask)
{struct crypto_alg *alg;u32 test = 0;if (!((type | mask) & CRYPTO_ALG_TESTED))test |= CRYPTO_ALG_TESTED;down_read(&crypto_alg_sem);alg = __crypto_alg_lookup(name, type | test, mask | test);if (!alg && test) {alg = __crypto_alg_lookup(name, type, mask);if (alg && !crypto_is_larval(alg)) {/* Test failed */crypto_mod_put(alg);alg = ERR_PTR(-ELIBBAD);}}up_read(&crypto_alg_sem);return alg;
}
  • crypto_alg_lookup函数的输入参数包括待查找的算法名name、算法类型type和算法类型屏蔽位mask,查找命中时返回查找到的算法或算法幼虫,查找未命中时返回异常。
  • api.c - crypto/api.c - Linux source code (v5.15.12) - Bootlin
  • crypto_alg_lookup函数实际上只是一个包裹函数,在锁定算法管理链表访问信号量crypto_alg_sem的前提下调用__crypto_alg_lookup函数完成算法查找。
  • __crypto_alg_lookup函数的输入参数和返回值与crypto_alg_lookup函数完全相同,其处理流程如下所示

算法查找流程

  •  1)__crypto_alg_lookup函数的基本逻辑是从算法管理链表中查找符合条件的算法,查找命中时返回算法(可能是算法幼虫),查找未命中时返回空指针。
  • 2)在查找算法时,遵循以下原则:
    • a)算法不能处于濒死(moribund)状态。
    • b)算法类型必须满足查找要求,即(q->cra_flags ^ type) & mask=0。
    • c)算法可以是已注册的算法或者正在注册算法的算法幼虫(可能是注册用算法幼虫也可能是检测用算法幼虫),如果是注册用算法幼虫,算法类型屏蔽位必须满足查找要求。注册用算法幼虫和检测用算法幼虫的区别之一是检测用算法幼虫设置了算法驱动名
    • d)算法名符合查找要求精确符合exac和模糊符合fuzzy两种情况,如下所示。
exact = !strcmp(q->cra_driver_name, name);
fuzzy = !strcmp(q->cra_name, name);
  • 模糊符合时还要求算法的优先级要高于预期优先级best。查找到精确符合的算法时,退出查找流程,返回精确符合的算法;查找到模糊符合的算法时,必须确保返回的是优先级最高的模糊符合算法。
    • e)查找到符合要求的算法时,调用crypto_mod_get函数持有该算法,即增加算法的引用计数。
  • 3)在查找算法时,可能出现以下几种情况:
    • a)算法管理链表上有已注册且检验合格的符合要求的算法,则返回对应的算法。
    • b)算法管理链表中没有符合要求的算法,查找返回空指针,外部将按算法名加载算法模块(静态算法模块)或创建注册用算法幼虫,发起创建动态算法,等待算法注册完成,返回新注册的算法。
    • c)查找时,其他外部应用已发起创建动态算法,但未完成,此时算法管理链表中只有一个符合要求的注册用算法幼虫,返回注册用算法幼虫,外部等待算法注册检验完成,返回新注册的算法。
    • d)查找时,其他外部应用以发起创建动态算法,已完成,但正确性检验未完成,此时算法管理链表中有符合要求的注册用算法幼虫和检测用算法幼虫,而已注册的算法未检验合格故不符合要求,检测用算法幼虫优先级(>0)高于注册用算法幼虫(-1),因此返回检验用算法幼虫,外部等待算法检验结束,返回新注册的算法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux加密框架 crypto 算法管理 - 动态和静态算法管理

参考链接 Linux加密框架的算法管理(三)_家有一希的博客-CSDN博客 动态和静态算法管理 静态算法 加密框架中的算法分为静态算法和动态算法两种,其中静态算法指的是以"算法名.ko"形式存在的静态编译的算法模块,如aes.k…

3分钟入门python_3分钟带你了解世界第一语言Python 入门上手也这么简单!

一、Python入门1. Python爬虫入门一之综述Python爬虫入门二之爬虫基础了解Python爬虫入门三之Urllib库的基本使用Python爬虫入门四之Urllib库的高级用法Python爬虫入门五之URLError异常处理Python爬虫入门六之Cookie的使用Python爬虫入门七之正则表达式Python爬虫入门八之Beaut…

linux加密框架 crypto 算法管理 - 算法检测

参考链接 Linux加密框架的算法管理(四)_家有一希的博客-CSDN博客 函数介绍 如前所述,无论是静态算法还是动态算法,算法注册的最后一步都是进行算法正确性检验,一般流程是先调用__crypto_register_alg函数进行通用的算…

select选中的值_selenium下拉框处理(select)

前言 web自动化中,常见的场景还有一个下拉框的选择,哪么在selenium中如何做下拉框的操作呢?selectselect在HTML中表示元素名,可创建单选或多选菜单。HTML中select长什么样子:select在HTML中元素名,下面有选…

linux加密框架 crypto 算法管理 - 创建哈希算法实例

crypto_alloc_ahash函数 加密框架中的哈希算法可以是同步方式实现的也可以是异步方式实现的,但是算法应用不关注哈希算法的实现方式,关注的是哈希算法提供的算法接口。为实现统一管理,加密框架默认哈希算法的实现方式为异步方式,…

发票管理软件_企业为什么需要ERP企业管理软件?

对于一个制造企业来说,生产是企业最大的动力,而生产也需要进行优化管理,一个好的生产管理方式会带给企业巨大的发展空间和利润价值。对于一个制造企业来说,生产是企业最大的动力,而生产也需要进行优化管理,…

python 画风场 scipy_Python数据分析及可视化实例之Scipy

强大到没有朋友的科学计算库,不知道怎么介绍ta!大牛张若愚出了厚本的《Python 科学计算》第二版里面包罗万象,就不做搬运工了,尽快开工pandas。来一弹在NLP自然语言处理中用到的稀疏矩阵处理:# coding: utf-8# # 稀疏矩…

linux加密框架 crypto 算法管理 - 应用角度讲解加密框架的运行流程

参考链接 Linux加密框架的应用示例(一)_家有一希的博客-CSDN博客 本文大纲 本节将从应用角度说明加密框架的运行流程,包括加密框架如何管理算法、如何动态创建算法,应用模块如何创建算法实例、如何通过算法实例调用算法接口等。…

java 累进计费率计算_设计费400万,缴纳所得税100万,如何筹划

很多公司老板都会把利润放在第一位,照理说这是没错的,公司要盈利才能继续经营下去。我国有很多针对小微企业的政策,盈利不高的情况下,基本不会去考虑纳税问题,也没有多少税收压力。但是对一些暴利的服务型行业、软件设…

linux加密框架 crypto 算法管理 - 哈希算法应用实例

参考链接 Linux加密框架应用示例(二)_家有一希的博客-CSDN博客linux加密框架 crypto 算法管理 - 应用角度讲解加密框架的运行流程_CHYabc123456hh的博客-CSDN博客 在应用模块中创建并初始化哈希算法实例 假设某个SA配置使用的认证算法为"hmac(md5…

guido python正式发布年份_Python语言适合哪些领域的计算问题? (1.3分)_学小易找答案...

【单选题】关于Python中的复数,下列说法错误的是 (1.3分)【多选题】药物作用的基本规律包括?【单选题】Python 中,以下哪个赋值操作符是错误的? (1.3分)【单选题】哪个选项是下面代码的执行结果? s "abcd1234" print ( s . find ( "cd" )) (1.3分)【填…

Linux加密框架 crypto crypto_larval | crypto_larval_alloc | __crypto_register_alg 介绍

参考链接 Lniux加密框架中的主要数据结构(五)_家有一希的博客-CSDN博客crypto_larval struct crypto_larval {struct crypto_alg alg;struct crypto_alg *adult;struct completion completion;u32 mask; };结构体名叫 crypto_larval (算法幼…

好玩的脚本代码大全_Github | 推荐一个Python脚本集合项目

点击上方"蓝字"关注我们Python大数据分析记录 分享 成长用python写小脚本是一件好玩的事情,因为不是个大活儿,而且能解决眼边前十分繁琐的事情,这种轻松且便宜的代码颇受人民群众的欢迎~有点生活小妙招的意味大家较为熟知的脚本…

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

参考链接 Linux加密框架的算法管理(二)_家有一希的博客-CSDN博客linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg_CHYabc123456hh的博客-CSDN博客linux加密框架 crypto 算法管理 - 算法查找接口 crypto_alg_mod_lookup_CHYabc123456hh的…

python中以下关于列表描述错误的_10. 以下关于列表操作的描述,错误的是:_学小易找答案...

【单选题】Python 语句 a1211.21 print(type(a)) 的输出结果为( )【单选题】Python语句序列"s1 [4, 5, 6]; s2 s1; s1[1]0; print(s2)"的运行结果是( )。【填空题】Python语句print(%d%%%d%(3/2, 3%2))的运行结果是( 1 )。【单选题】python语句print(type(123))的数…

写论文注意事项

参考链接 给研究生修改了一篇论文后,该985博导几近崩溃…… 重点分析 摘要与结论几乎重合 这一条是我见过研究生论文中最常出现的事情,很多情况下,他们论文中摘要部分与结论部分重复率超过70%。对于摘要而言,首先要用一小句话引…

xml模糊查询语句_2Mybatis学习笔记07:动态SQL语句(原创,转载请注明来源)

开发环境:硬件环境:Windows10JDK 1.8; 软件环境:JavaEclipseMybatismaven3.6tomcat8.0Postgresql 10.6; 用到的jar包: asm-3.3.1.jar cglib-2.2.2.jar commons-logging-1.1.1.jar javassist-3.17.1-GA.jar …

硬件密码组件的硬件结构、作用及实现应用设计

引 言 1 硬件密码组件的概念 密码技术是解决信息安全问题的核心技术。要实现信息的保密性、完整性、可控性和不可否认性等安全要求,都离不开密码技术的运用。在具体的信息安全系统中,密码技术的运用可以基于软件密码组件(简称为SCM&#xf…

sql倒序查询语句_SQL丨1.基本查询语句复习

此为自用查询语句1.selectSELECT column1,column2 FROM table1;常用的格式惯例:大写了SELECT和FROM,而将表名和列名小写;通常在列名中使用下划线,避免使用空格;在每个语句末尾添加分号;SQL不区分大小写。2.…

基于区块链的档案共享 项目启动

注意事项 已经备份了一个配置fabric的完整ubuntu系统,其需要注意的细节如下1,此镜像系统需要配置host文件,sudo vim /etc/hosts,添加如下内容127.0.0.1 orderer.example.com peer0.org1.example.com peer1.org1.example.c…