本文介绍: 在ssl目录下,包括了sslv2、sslv3、tlsv1和DTLS的源代码各个版本基本上都有客户端源码(*_clnt.c)、服务源码(*_srvr.c)、通用源码(*_both.c)、底层包源码(*_pkt.c)、方法源码(*_meth.c)以及协议相关的各种密钥计算源码(*_enc.c)等,都很有规律。此目录下的各个源码可以单独进行编译。OpenSSL源代码主要由eay库、ssl库、工具源码、范例源码以及测试源码组成。一、eay库是基础的库函数,提供了很多功能。六、测试源码主要在test目录下。

使用版本V3.2.0

来源https://www.openssl.org/

OpenSSL源代码主要由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目录),OpenSSL主要的配置文件为OpenSSL.cnf。本目录下的函数实现了对这种格式配置文件读取操作
  6. DSO(动态共享对象,crypto/dso目录),本目录下的文件主要抽象了各种平台动态加载函数,为用户提供统一接口
  7. 硬件引擎(crypto/engine目录),硬件引擎接口用户如果要写自己硬件引擎,必须实现它所规定的接口
  8. 错误处理(crypto/err目录),当程序出现错误时,OpenSSL能以堆栈的形式显示各个错误。本目录下只有基本错误处理接口,具体的的错误信息各个模块提供。各个模块专门用于错误处理文件一般为*_err..c文件
  9. 对称算法、非对称算法摘要算法封装(crypto/evp目录)。
  10. HMAC(crypto/hmac目录),实现基于对称算法的MAC。
  11. hash表(crypto/lhash目录),实现了散列表数据结构。OpenSSL中很多数据结构都是以散列表存放的。比如配置信息ssl sessionasn.1对象信息等。
  12. 数字证书在线认证(crypto/ocsp目录),实现了ocsp协议编解码以及证书有效计算功能
  13. PEM文件格式处理(crypto/pem),用于生成读取各种PEM格式文件,包括各种密钥数字证书请求数字证书、PKCS7消息和PKCS8消息等。
  14. pkcs7消息语法(crypto/pkcs7目录),主要实现构造和解析PKCS7消息
  15. pkcs12个人证书格式(crypto/pckcs12目录),主要实现pkcs12证书的构造和解析。
  16. 队列(crypto/pqueue目录),实现了队列数据结构,主要用于DTLS。
  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/castccrypto/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)等,都很有规律。

四、工具源码

        主要在crypto/apps目录下,默认编译时只编译成OpenSSL可执行文件。该命令包含了各种命令工具。此目录下的各个源码可以单独进行编译

五、范例源码

     在demo目录下,另外engines目录给出了OpenSSL支持几种硬件engines源码,也可以作为engine编写参考

六、测试源码主要在test目录下。

原文地址:https://blog.csdn.net/lh__huahuan/article/details/134805893

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_49694.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注