linux内核cryto接口的实现以及与openssl的比较
linux内核实现了crypto接口,用于类似IPSec之类要在内核中实现的与操作系统绑定的安全机制,如果不是用于这样的机制,不要使用内核中的crypto接口,总的来说,linux的crypto中最重要的结构体有两个:crypto_tfm和crypto_alg
struct crypto_tfm {
u32 crt_flags;
union {
struct cipher_tfm cipher;
struct digest_tfm digest;
struct compress_tfm compress;
} crt_u; //该联合体指出linux实现了cipher,digest和compress三类算法,每一类中有许多种算法,注意这个联合的每一个都仅仅实现了一大类算法的实现封装,并不是具体的实现。
struct crypto_alg *__crt_alg;
char __crt_ctx[] __attribute__ ((__aligned__));
};
下面这个结构体才是具体算法的实现,上面crypto_tfm中的crt_u中一系列函数都是对下面结构体中cra_u中一系列函数的封装:
struct crypto_alg {
struct list_head cra_list;
u32 cra_flags; //这个flags很重要
unsigned int cra_blocksize;
unsigned int cra_ctxsize;
unsigned int cra_alignmask;
int cra_priority;
char cra_name[CRYPTO_MAX_ALG_NAME];
char cra_driver_name[CRYPTO_MAX_ALG_NAME];
union {
struct cipher_alg cipher;
struct digest_alg digest;
struct compress_alg compress;
} cra_u;
int (*cra_init)(struct crypto_tfm *tfm);
void (*cra_exit)(struct crypto_tfm *tfm);
struct module *cra_module;
};
上面的两个结构中都有一个联合体,事实上每个联合体字段都是一个完整的算法实现,而且三个算法类型几乎没有任何共同点可言,对于摘要类算法来说,回调函数是init,update,final等,而对于cipher而言,就是encrypt和decrypt等,linux实际上是利用联合
相关文档:
操作系统要实现多进程,进程调度必不可少。
有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说"某某函数比某某函数效率高XX倍"一样,脱离了
实际环境,这些结论是比较片面的。
而进程调度究竟有多重要呢? 首先,我们需要明确一点:进程调度是对TASK_R ......
red hat linux 下安装 oracle 10g
racle考资料:
Oracle官方网站: http://download.oracle.com/docs/html/B10813_01/toc.htm
一、以root用户登录, 进行如下操作:
1 检查硬件要求
* 主要包括:
********************************************************************
* 内存: & ......
[/home/brimmer/src]$ ctags -R
"
-R"表示递归创建,也就包括源代码根目录下的所有子目录下的源程序。"
tags"文件中包括这些对象的列表:
l
用
#define定义的宏
l
枚举型变量的值
l  ......
启动配置:
/etc/init.d/rcS
# mkfs.jffs2 -r yyfs/ -o yy.jffs2 -p -l -n -e 0x8000 -m size
内核启动显示:
unable to open an initial console.
解决:
创建rootfs过程中,在/dev目录下手动创建如下节点:
mknod -m 660 null c 1 3
mknod -m 660 console c 5 1
Taking the GNU/Linux hos ......