Linux加密框架 crypto 算法模板
参考链接
- Linux加密框架中的主要数据结构(三)_家有一希的博客-CSDN博客
- algapi.h - include/crypto/algapi.h - Linux source code (v5.15.11) - Bootlin
定义
struct crypto_template {struct list_head list;struct hlist_head instances;struct module *module;int (*create)(struct crypto_template *tmpl, struct rtattr **tb);char name[CRYPTO_MAX_ALG_NAME];
};
crypto_template各成员变量含义
- 1)list:算法模板链表节点。
- 2)instance:算法模板实例哈希链表的头节点。算法模板通过实例哈希链表管理由该模板创建的所有算法模板实例。
- 3)module:算法模板所属的模块,一般为THIS_MODULE,编译时确定。
- 4)name:算法模板名,最多包含64个字符。
- 5)alloc:创建算法模板实例(struct crypto_instance)的接口,返回值为新创建的算法模板实例。创建完需要调用注册接口完成算法模板实例注册。 删除
- 6)free:算法模板实例的析构函数,用于释放算法模板实例占用的内存资源 删除
- 7)create:创建算法模板实例的接口。与alloc接口不同,create接口不会显式地创建一个算法模板实例(无论返回值还是输出参数都不是struct crypto_instance类型),而是隐式地创建一个算法模板实例,同时将注册新创建的算法模板实例 (源码可知)。
- 一般情况下,分组算法模式的实例地创建接口为alloc接口,哈希算法模式的实例创建接口为create接口。
- 无论是通过alloc接口还是create接口创建算法模板实例,输入参数tb为创建算法模板实例的相关参数,至少包括算法类型及屏蔽位(tb[0])和基础算法的算法名(tb[1])。每个参数都是TLV格式,类型T有CRYPTOA_TYPE(算法类型)、CRYPTOA_ALG(基础算法名)、CRYPTOA_U32等多种类型,而每种类型的参数值不同,因此接口输入参数tb的数据类型struct rtattr只包括rta_len和rta_type两个成员变量,分别对应着TLV结构的L和T,参数值数据结构根据参数类型定义。
/* Generic structure for encapsulation of optional route information.It is reminiscent of sockaddr, but with sa_family replacedwith attribute type.*/struct rtattr {unsigned short rta_len;unsigned short rta_type;
};
- 参数类型为CRYPTOA_TYPE时,算法类型TLV结构(即tb[0])如下所示,通过函数crypto_get_attr_type可以获取算法类型和屏蔽位。
- algapi.c - crypto/algapi.c - Linux source code (v5.15.11) - Bootlin
- #define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0))) 返回空指针指向一个结构体,第一个参数char*指向的是type,第二个参数int是mask屏蔽位
- #define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
struct crypto_attr_type {u32 type;u32 mask;
};
- 参数类型为CRYPTOA_ALG时,基础算法名TLV结构(即tb[1])如下所示,通过函数crypto_attr_alg_name获取基础算法名
- algapi.c - crypto/algapi.c - Linux source code (v5.15.11) - Bootlin
const char *crypto_attr_alg_name(struct rtattr *rta)
{struct crypto_attr_alg *alga;if (!rta)return ERR_PTR(-ENOENT);if (RTA_PAYLOAD(rta) < sizeof(*alga))return ERR_PTR(-EINVAL);if (rta->rta_type != CRYPTOA_ALG)return ERR_PTR(-EINVAL);alga = RTA_DATA(rta);alga->name[CRYPTO_MAX_ALG_NAME - 1] = 0;return alga->name;
}
EXPORT_SYMBOL_GPL(crypto_attr_alg_name);
参考链接
- C/C++ struct初始化/复制/内存分配技巧_wys的专栏-CSDN博客
Linux加密框架 crypto 算法模板相关推荐
- Linux加密框架 crypto算法模板 以及CBC算法模板实例
参考链接 Linux加密框架中的主要数据结构(四)_家有一希的博客-CSDN博客 algapi.h - include/crypto/algapi.h - Linux source code (v5. ...
- Linux加密框架 crypto 算法模板 HMAC模板举例
参考链接 Linux加密框架中的主要数据结构(三)_家有一希的博客-CSDN博客 Linux加密框架 crypto 算法模板_CHYabc123456hh的博客-CSDN博客 HMAC算法模板 hma ...
- Linux加密框架 crypto算法模板 以及HMAC算法模板实例
HMAC算法模板实例 HMAC算法模板的创建实例的接口是hmac_create函数 hmac.c - crypto/hmac.c - Linux source code (v5.15.11) - Bo ...
- Linux加密框架 crypto 算法模板 CBC模板举例
参考链接 Linux加密框架中的主要数据结构(三)_家有一希的博客-CSDN博客 https://blog.csdn.net/CHYabc123456hh/article/details/122194 ...
- linux加密框架 crypto 算法管理 - 哈希算法应用实例
参考链接 Linux加密框架应用示例(二)_家有一希的博客-CSDN博客 linux加密框架 crypto 算法管理 - 应用角度讲解加密框架的运行流程_CHYabc123456hh的博客-CSDN博 ...
- linux加密框架 crypto 算法管理 - 算法查找接口
参考链接 Linux加密框架的算法管理(二)_家有一希的博客-CSDN博客 linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg_CHYabc123456hh的 ...
- linux加密框架 crypto 算法管理 - 算法查找接口 crypto_alg_mod_lookup
参考链接 Linux加密框架的算法管理(二)_家有一希的博客-CSDN博客 linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg_CHYabc123456hh的 ...
- linux加密框架 crypto 算法管理 - 动态和静态算法管理
参考链接 Linux加密框架的算法管理(三)_家有一希的博客-CSDN博客 动态和静态算法管理 静态算法 加密框架中的算法分为静态算法和动态算法两种,其中静态算法指的是以"算法名.ko&qu ...
- linux加密框架 crypto 算法管理 - 算法检测
参考链接 Linux加密框架的算法管理(四)_家有一希的博客-CSDN博客 函数介绍 如前所述,无论是静态算法还是动态算法,算法注册的最后一步都是进行算法正确性检验,一般流程是先调用__crypto_ ...
最新文章
- ubuntu /boot 空间清理
- win10 安装MySQL过程和遇到的坑
- 黄海广博士的机器学习个人笔记及深度学习笔记
- 描述Linux的虚拟化实现,Linux中实现虚拟化的四种常用方法
- Qt读写ini文件的问题
- 实战-130W表增加字段耗时
- ADO.NET提供的Connection类总结
- 程序反编译找pdf打开密码_即时密码保护PDF文件的免费工具
- [2018.07.31 T3] 第三题
- 动易2007后台模板上传任意文件漏洞
- ExoPlayer的缓存 四 缓存Cache 的应用
- msvcr71.dll丢失的解决方法,哪种解决方法更好?
- 腾讯QQ空间穿越时光轴3D特效
- win7搭建nas存储服务器_普通用户的低成本家庭文件服务器(伪NAS)的搭建(系统篇)...
- macbook 如何在开盖的情况下连接外接显示器, 同时 macbook 的键盘和触摸板都能工作
- 动态规划经典问题--TSP问题
- 数据库关系代数思维导图
- wps怎么把字缩到最小_wps怎么把最左侧的字体变小
- IE网页出现js错误修复方法_离水的鱼_新浪博客
- python支持复数类型、以下说法错误的是_Python支持复数类型,以下哪个说法是错误的?...
热门文章
- qt能使用logback_X04Logback的配置
- spring boot web项目_阿里技术专家带你使用Spring框架快速搭建Web工程项目
- 域用户更改密码提示拒绝访问_AD域中的ACL攻防探索
- 解决方案架构师我需要懂代码吗_架构师不写代码,能行吗?
- arcgis坡度结果有误或z因子前有感叹号
- 【转】DHF、DMR、MDF、DHR医疗器械文件要求与解读
- Python 数据分析三剑客之 Matplotlib(十):3D 图的绘制
- 完美解决 bash: hexo: command not found
- Navicat15安装笔记
- 【CodeForces - 361D】Levko and Array (二分,dp)