一、crypto目录

openssl 源代码主要由 eay 库、ssl 库、工具源码、范例源码以及测试源码组成。eay 库是基础的库函数,提供了很多功能。源代码放在 crypto 目录下。包括如下内

容:

1) asn.1 DER 编码解码(crypto/asn1

2) 抽象 IO(BIO,crypto/bio

3) 大数运算(crypto/bn

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

5) 配置文件读取(crypto/conf

6) DSO(动态共享对象,crypto/dso

7) 硬件引擎(crypto/engine

8) 错误处理(crypto/err

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

10)HMAC(crypto/hmac

11)hash 表(crypto/lhash

12)数字证书在线认证(crypto/ocsp

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

14)pkcs7 消息语法(crypto/pkcs7

15)pkcs12 个人证书格式(crypto/pckcs12

16)队列(crypto/pqueue

17)随机数(crypto/rand

18)堆栈(crypto/stack

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

20)文本数据库(crypto/txt_db

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

22)对称算法(crypto/aes、crypto/bf、crypto/cast、ccrypto/omp 和 crypto/des

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

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

 

ssl 库所有源代码在 ssl 目录下,包括了 sslv2、sslv3、tlsv1 和 DTLS 的源代码。各个版本基本上都有客户端源码(*_clnt.c)、服务源码(*_srvr.c)、通用源码(*_both.c)、底层包源码(*_pkt.c)、方法源码(*_meth.c)以及协议相关的各种密钥计算源码(*_enc.c)等,都很有规律。

二、apps目录

所以openssl命令,都是根据这个目录下的代码编译生成的,通过对openssl各种基础库的调用,实现了openssl的各种命令。