• openssl源码介绍


    一、crypto目录

    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)等,都很有规律。

    二、apps目录

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

  • 相关阅读:
    今天封装了一下 gridview 在没有数据的时候显示表头 并且提示数据为空的方法
    动态绑定treeview的方法
    Android为拨号盘dialer定制声音DTMF Tones
    如何降低android应用程序的耗电量
    DTMF双音多频按键信号的定义
    ant 实现批量打包android应用
    android网络编程——使用Android中的网络连接
    Android Service被关闭后自动重启,解决被异常kill 服务
    android中阿拉伯文研究
    android网络编程——http get
  • 原文地址:https://www.cnblogs.com/Hello-words/p/15161390.html
Copyright © 2020-2023  润新知