linux加密框架 crypto 通用算法注册接口__crypto_register_alg注册流程
函数介绍
- __crypto_register_alg函数实现向加密框架注册算法(包括静态算法和动态算法)的功能,输入参数为算法说明alg,注册成功时返回算法注册用的算法幼虫larval,注册失败时返回失败原因。
- __crypto_register_alg函数执行的算法注册流程如下所示。
- 1)算法注册过程可类比为幼虫(larval)成长为成虫(adult)的过程,成虫指的是带注册算法,而幼虫指的是在注册和算法正确性检验过程中使用的临时算法(之所以称之为幼虫是因为这个临时的算法不能提供可供调用的算法接口,只是提供算法的一些基本属性,而且其生命周期有限)。算法幼虫虽然是临时的算法,但是也可以表示为通用算法说明的一个实例,并且加密框架也是通过算法管理链表管理算法幼虫的,通过算法标志cra_flags中的标志位CRYPTO_ALG_LARVAL标识算法幼虫。
- 2)在算法注册前,首先要遍历算法管理链表确认是否可以进行本次注册,包括以下几种情况:
- a)算法不能重复注册,如果同名算法已注册或正在注册(即算法管理链表上有同名的算法幼虫,说明同名算法正在注册中)则终止注册流程;
- b)算法处于濒死状态(CRYPTO_ALG_DEAD状态或CRYPTO_ALG_DYING状态),说明该算法正在被删除或卸载,终止注册流程;
- c)如果待注册的算法是已注册算法的算法驱动(即注册算法的算法名和已注册算法的算法驱动名相同),说明算法注册流程有问题,终止注册流程。
- 3)如果遍历算法管理链表确认可以继续执行算法注册流程时,调用crypto_larval_alloc函数创建对应的算法幼虫larval,这个算法幼虫称之为检测用算法幼虫。检测用算法幼虫继承待注册算法的算法名、算法驱动名、优先级(>0)、算法类型等属性,设置算法幼虫标志CRYPTO_ALG_LARVAL和已检验标志CRYPTO_ALG_TESTED,初始化完成量completion,将通用算法说明的cra_destroy接口设置为crypto_larval_destroy函数,再将待注册算法设置为对应的算法成虫adult(此时待注册算法的引用计数为2)。
- 4)某个算法第一次注册时,__crypto_register_alg函数中接口调用情况如下所示。
- 5)假设在向加密框架注册AES算法,__crypto_register_alg函数执行完毕时,管理算法链表中已注册算法情况如下所示:
- 其中aes_alg为AES算法的通用算法说明,aes_larval_t表示AES算法注册时的检测用算法幼虫,也是算法幼虫对应的通用算法说明。
函数调用完整流程
参考链接
- Linux加密框架的算法管理(一)_家有一希的博客-CSDN博客_linux加密框架设计与实现
linux加密框架 crypto 通用算法注册接口__crypto_register_alg注册流程相关推荐
- Linux crypto相关知识的汇总 Linux加密框架crypto对称算法和哈希算法加密模式
参考链接 Linux加密框架中的算法和算法模式(二)_家有一希的博客-CSDN博客 对称算法 分组算法模式 ECB模式 ECB模式下,明文数据被分为大小合适的分组,然后对每个分组独立进行加密或解密 如 ...
- linux加密框架 crypto 算法管理 - 算法查找接口 crypto_alg_mod_lookup
参考链接 Linux加密框架的算法管理(二)_家有一希的博客-CSDN博客 linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg_CHYabc123456hh的 ...
- linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg
算法查找接口crypto_find_alg 算法实例tfm是算法的一个可运行的副本,因此在创建算法实例前首先要查找确认算法是否已经注册有效,此时算法查找由函数crypto_find_alg实现. 补充 ...
- linux加密框架 crypto 算法管理 - 算法查找接口
参考链接 Linux加密框架的算法管理(二)_家有一希的博客-CSDN博客 linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg_CHYabc123456hh的 ...
- linux加密框架 crypto 算法管理 - 哈希算法应用实例
参考链接 Linux加密框架应用示例(二)_家有一希的博客-CSDN博客 linux加密框架 crypto 算法管理 - 应用角度讲解加密框架的运行流程_CHYabc123456hh的博客-CSDN博 ...
- Linux加密框架 crypto算法模板 以及CBC算法模板实例
参考链接 Linux加密框架中的主要数据结构(四)_家有一希的博客-CSDN博客 algapi.h - include/crypto/algapi.h - Linux source code (v5. ...
- Linux加密框架 crypto 哈希算法举例 MD5
参考链接 Linux加密框架 crypto 哈希算法说明 同步哈希shash_alg | 异步哈希 ahash_alg | 通用部分抽象 hash_alg_common_CHYabc123456hh的 ...
- Linux加密框架 crypto 算法模板 HMAC模板举例
参考链接 Linux加密框架中的主要数据结构(三)_家有一希的博客-CSDN博客 Linux加密框架 crypto 算法模板_CHYabc123456hh的博客-CSDN博客 HMAC算法模板 hma ...
- Linux加密框架中的算法和算法模式
参考链接 Linux加密框架中的算法和算法模式(三)_家有一希的博客-CSDN博客 对称算法 14 如上所示,在arc4.c中定义了两个与RC4算法相关的算法实现,分别为arc4和ecb(arc4) ...
最新文章
- python解释器的功能_python的解释器是什么?
- 生死讯息:密码背后的数学
- python对应位置相乘
- 亲测_精简版Fiddler抓包手机端GET请求过程.
- 微软加入字节码联盟,进一步开发支持Blazor 的WebAssembly技术
- 【华为云实战开发】6.Cocos游戏项目如何在云端开发
- 定了!百度运维工程师非法挖矿获利 10 万、被判 3 年,如何避免面向监狱编程?...
- python里none什么意思_Python 中None的用法
- python爬虫哪个选择器好用_Python爬虫学习8-css选择器使用
- 利用反射来实现动态代理
- 【OpenCV实战】简洁易懂的车牌号识别Python+OpenCV实现“超详解”(含代码)
- 左程云 Java 笔记--排序
- 【教程】阿里云服务器挂载硬盘(其中硬盘为从快照中创建的云硬盘)
- 请开启微信或者手机定位服务器,微信在哪里设置定位(微信开启定位功能设置)...
- lopa分析_LOPA分析法之独立保护层浅析
- 雨课堂刷视频Python脚本
- Power BI可视化案例分享
- Z-Stack + OSAL操作系统
- linux加速访问github
- 思科虚拟服务器修改域名,思科域名服务器设置
热门文章
- bitnamigitlab_Bitnami Gitlab 修改端口
- mysql声明declare_mysql8 参考手册--DECLARE ... CONDITION声明
- 【转】Dicom文件解析!!!!!!
- 【转】magento性能优化的教程(非常详细)
- 【转】Dynamics CRM 365零基础入门学习(一)Dynamics介绍以及开发工具配置
- viper4android fxifi,ViPer4android. FX顶级音效!
- 【PAT - 甲级1010】Radix (25分)(二分,进制转化)
- 【ZOJ - 3963】Heap Partition (STLset,二叉树的性质,构造,贪心,思维)
- 【POJ - 3041】Asteroids (二分图,最小点覆盖)
- 【CodeForces - 195A】Let's Watch Football (追及问题,模拟)