linux内核加解密接口,Linux加解密支持模块代码详细分析之核心文件分析(1)

原标题:Linux加解密支持模块代码详细分析之核心文件分析(1)

2.4.核心文件分析2.4.1.文件一algapi.c2.4.1.1.文件描述本文件名称:algapi.c

algapi.c文件完整路径为linux-3.5.4/crypto/algapi.c,该文件主要描述了算法加密程序应用接口的实现,文件以内核模块的形式实现。

路径:linux-3.5.4/crypto/algapi.c

涉及主要函数:__crypto_register_alg crypto_alg_tested crypto_register_alg crypto_remove_alg crypto_unregister_alg crypto_register_template crypto_unregister_templat__crypto_lookup_template crypto_register_instance crypto_unregister_instance crypto_alloc_instance2 crypto_alloc_instance

2.4.1.2.主要变量及宏定义

algapi.c文件中涉及的主要变量见下表2-1。

表2-1 文件algapi.c中主要变量解释

变量名称

变量类型

变量说明

alg

struct crypto_alg

变量包含在函数crypto_larval_error中,指向算法抽象统一接口。

driver_name

char *

变量包含在函数crypto_set_driver_name中,算法驱动名称。

inst

struct crypto_instance

*

变量包含在函数crypto_destroy_instance中,算法实例对象。

tmpl

struct crypto_template *

变量包含在函数crypto_destroy_instance中,算法模板对象。

spawn

struct crypto_spawn *

变量包含在函数crypto_more_spawns中,

larval

struct crypto_larval *

变量包含在函数__crypto_register_alg中,一种算法。

err

int

变量包含在函数crypto_wait_for_test中,算法事件通知的返回值。

ret

int

变量包含在函数crypto_unregister_alg中,算法删除的返回值。

q

struct crypto_template *

变量包含在函数crypto_register_template中,算法模板。

list

struct hlist_head *

变量包含在函数crypto_unregister_template中,Hash链表的头节点。

p

struct hlist_node *

变量包含在函数crypto_unregister_template中,hash链表的节点。

tfm

struct crypto_tfm

变量包含在函数crypto_spawn_tfm中,算法对象返回值。

p

char *

变量包含在函数crypto_alloc_instance中,分配内核空间地址。

request

struct list_head *

变量包含在函数__crypto_dequeue_request中,双链表。

2.4.1.3.结构体定义

1. 结构体crypto_alg是对不同算法库进行统一抽象的接口,主要用于算法实现时对里面成员进行赋值操作。具体定义如下。

struct{

struct;

;

unsigned int;

unsigned int;

const char[];

union {

struct;

struct;

struct;

};

struct*;

};

如上所述,结构体crypto_alg中各字段的信息见下表2-2。

表2-2 结构体crypto_alg中各字段解释

字段名

类型

字段说明

cra_list

struct list_head

算法以双链表结构组织

cra_flags

u32

算法的标志信息

cra_blocksize

unsigned int

算法分组大小

cra_ctxsize

unsigned int

算法上下文大小

cra_alignmask

unsigned int

算法的对齐掩码

算法优先级

算法引用计数

char

算法名

char

算法驱动名称

struct *

算法类型

struct

异步分组算法

struct

认证加密算法

struct

分组加密算法

struct

对称加密算法

struct

压缩算法

struct

随机数生成算法

int *

算法初始化钩子函数

void *

算法退出钩子函数

void *

算法销毁钩子函数

struct *

算法模块

2. 结构体crypto_instance是对算法实例进行描述的,这里算法实例仅仅和算法联系起来的,具体的算法还需要在算法调用时才会实现,也就是说算法实例表明存在这样的算法。具体结构及解释如下所示。

struct{

struct;

struct*;

struct;

void*[];

};

结构体crypto_instance中各字段的信息见下表2-3。

表2-3 结构体crypto_instance中各字段解释

字段名

类型

字段说明

struct

算法统一抽象接口

struct

算法模板

struct

算法实例的组织方式

void *[]

责任编辑:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值