OpenSSL_密码学摘要

使用版本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 session和asn.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/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)等,都很有规律。

四、工具源码

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

五、范例源码

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

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

相关推荐
应长天4 小时前
密码学(斯坦福)
密码学
Turbo正则1 天前
量子计算基础概念以及八大分支
密码学·量子计算
网安INF12 天前
公钥加密与签名算法计算详解(含计算题例子)
网络·算法·网络安全·密码学
电院工程师13 天前
基于机器学习的侧信道分析(MLSCA)Python实现(带测试)
人工智能·python·嵌入式硬件·安全·机器学习·密码学
电院工程师14 天前
SM3算法C语言实现(无第三方库,带测试)
c语言·算法·安全·密码学
小七mod16 天前
【BTC】密码学原理
web3·区块链·密码学·比特币·btc·肖臻·北大区块链
电院工程师21 天前
轻量级密码算法PRESENT的C语言实现(无第三方库)
c语言·算法·安全·密码学
电院工程师21 天前
轻量级密码算法CHAM的python实现
python·嵌入式硬件·算法·安全·密码学
电院工程师22 天前
SM3算法Python实现(无第三方库)
开发语言·python·算法·安全·密码学
网安INF22 天前
SHA-1算法详解:原理、特点与应用
java·算法·密码学