OpenSSL源码目录说明

来源:互联网 发布:淘宝新店如何推广运营 编辑:程序博客网 时间:2024/06/06 03:01

本文摘自 赵春平 《openssl编程 1.0》

其中红色字体是自己的学习过程中暂时不懂的地方。

openssl源代码主要有eay库(什么是eay库?)、ssl库、工具源码、范例源码以及测试源码组成。

eay库是基础的库函数,提供了很多功能。源代码放在crypto目录下。包括如下内容:

1) asn.1 DER编码解码(crypto/asn1目录),它包含了基本asn1对象的编解码以及数字证书请求、数字证书、CRL撤销列表以及PKCS8等最基本的编解码函数。这些函数主要通过来实现。

2) 抽象IO(BIO,crypto/bio目录),本目录下的函数对各种输入输出进行抽象,包括文件、没存、标准输入输出、socket和SSL协议等。

3) 大数运算(crypto/bn目录),本目录下的文件实现了各种大数运算。这些大数运算主要用于非对称算法中密钥生成以及各种加解密操作。另外还为用户提供了大量辅助函数,比如内存与大数之间的相互转换。

4) 字符缓存操作(crypto/buffer目录)。

5) 配置文件读取(crypto/conf目录),opwnssl主要的配置文件为openssl.cnf。本目录下的函数实现了对这种格式配置文件的读取操作。

6) DSO(动态共享对象,crypto/dso目录),本目录下的文件主要抽象了各种平台的动态库加载函数,为用户提供用户已接口。

7) 硬件引擎(crypto/engine目录),硬件引擎接口。用户如果要写自己的硬件引擎,必须实现它所规定的接口。

8) 错误处理(cpypto/err目录),当程序出现错误时,openssl能以对战的形式显示各个错误。本目录下只有基本的错误处理接口,具体的错误信息由各个模块提供。各个模块专门用户错误处理的文件一般为*_err.c文件。

9) 对称算法、非对称算法以及摘要算法封装(crypto/evp目录)。

10) HMAC(crypto/hmac目录),实现了基于对称算法的MAC(什么是对称算法的MAC?)

11) hash表(crypto/lhash目录),实现了散列表数据结构。openssl中很多数据结构都是以散列表来存放的。比如配置信息、ssl session和asn.1对象信息等。

12) 数字证书在线认证(crypto/ocsp目录),实现了ocsp协议的编解码以及证书有效性计算等功能。

13) PEM文件格式处理(crypto/pem),用于生成和读取各种PEM格式文件,包括各种密钥、数字证书请求、数字证书、PKCS7消息和PKCS8消息等。

14) pkcs7消息语法(crypto/pkcs7目录),主要实现了构造和解析PKCS7消息。

15) pkcs12个人证书格式(crypto/pkccs12目录),主要实现了pkcs12证书的构造和解析。

16) 队列(cpypto/pqueue目录),实现了队列数据结构,主要用于DTLS。

17) 随机数(cpypto/rand目录),实现了伪随机数生成,支持用户自定义随机数生成。

18) 堆栈(cpypto/stack目录),实现了堆栈数据结构。

19) 线程支持(crypto/threads),openssl支持多线程,但是用户必须实现相关接口。

20) 文本数据库(crypto/txt_db目录)。

21)  x509数字证书(crypto/x509目录和crypto/x509v3),包括数字证书申请、数字证书和CRL的构造、解析和签名验证等功能。

22) 对称算法(crypto/aes、crypto/bf、crypto/cast、crypto/omp和crypto/des等目录)。

23) 非对称算法(crypto/dh、crypto/dsa、crypto/ec和crypto/ecdh)。

24) 摘要算法(crypto/md2、crypto/md4、crypto/md5和cpypto/sha)以及密钥交换/认证算法(crypto/db和crpyto/krb5)。

***********************************************************************************************************************************************************************************

0 0
原创粉丝点击