OpenSSL源码库目录解析
来源:互联网 发布:办公软件激活 编辑:程序博客网 时间:2024/05/21 09:16
OpenSSL目录名以及功能描述
目录名
功能描述
Crypto
存放OpenSSL所有加密算法源码文件和相关标注如X.509源码文件,是OpenSSL中最重要的目录,包含了OpenSSL密码算法库的所有内容。
SSL
存放OpenSSL中SSL 协议各个版本和TLS 1.0 协议源码文件,包含了OpenSSL 协议库的所有内容。
Apps
存放OpenSSL中所有应用程序源码文件,如CA、X509等应用程序的源文件就存放在这里。
Doc
存放了OpenSSL中所有的使用说明文档,包含三个部分:应用程序说明文档、加密算法库API说明文档以及SSL协议API 说明文档。
Demos
存放了一些基于OpenSSL的应用程序例子,这些例子一般都很简单,演示怎么使用OpenSSL其中的一个功能。
Include
存放了使用OpenSSL的库时需要的头文件。
Test
存放了OpenSSL自身功能测试程序的源码文件
OpenSSL算法目录
OpenSSL 的算法目录Crypto目录包含了OpenSSL密码算法库的所有源代码文件,是OpenSSL中最重要的目录之一。
OpenSSL 的密码算法库包含了OpenSSL中所有密码算法、密钥管理和证书管理相关标准的实现,在Windows下编译后的库文件名为libeay32.lib,在Linux下编译后生产的库文件名为libcrypto.a。Crypto目录下包含了众多的子目录,这些目录大多数以相关的算法或标准名称的简写命名。当然,并非所有这些目录存放的源文件都是密码算法和标准,有些是OpenSSL本身的一些相关功能文件,如BIO、DSO和EVP 等。
Crypto 子目录列表
AES
对称算法,美国新的对称加密算法标准AES 算法源码。
Bf
对称算法,Blowfish 对称加密算法源码。
Cast
对称算法,CAST 对称加密算法源码。
Des
对称算法,包括了DES 和3DES 对称加密算法源码。
Idea
对称算法,IDEA 对称加密算法源码。
Rc2
对称算法,RC2 对称加密算法源码。
Rc4
对称算法,RC4 对称加密算法源码
Rc5
对称算法,RC5 对称加密算法源码。
Dh
非对称算法,DH 非对称密钥交换算法源码。
Dsa
非对称算法,DSA 非对称算法源码,用于数字签名。
Ec
非对称算法,EC 椭圆曲线算法源码。
Rsa
非对称算法,RSA 非对称加密算法源码,既可以用于密钥交换,也可以用于数字签名。
Md2
信息摘要算法,MD2 信息摘要算法源码。
Md5
信息摘要算法,MD5 信息摘要算法源码。
Mdc2
信息摘要算法,MDC2 信息摘要算法源码。
Sha
信息摘要算法,SHA 信息摘要算法源码,包括了SHA1 算法。
Ripemd
信息摘要算法,RIPEMD-160 信息摘要算法源码。
Comp
数据压缩算法数,据压缩算法的函数接口,目前没有压缩算法,只是定义了一些空的接口函数
Asn1
PKI 相关标准ASN.1 标准实现源码,只实现了PKI 相关的部分,不是完全实现。包括DER 编解码等功能。
Ocsp
PKI 相关标准OCSP(在线证书服务协议)实现源码。
Pem
PKI 相关标准PEM 标准实现源码,包括了PEM 的编解码功能。
Pkcs7
PKI 相关标准PKCS#7 标准实现源码。PKCS#7 是实现加密信息封装的标准,包括了证书封装的标准和加密数据的封装标准。
Pkcs12
PKI 相关标准PKCS#12 标准实现源码。包括了PKCS#12 文件的编解码功能。PKCS#12是一种常用的证书和密钥封装格式。
X509
PKI 相关标准X.509 标准的实现源码。包括了X.509 的编解码功能,证书管理功能等。X509v3 PKI 相关标准X.509 第三版扩展功能的实现源码。
对称加密算法
OpenSSL 一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES 算法里面不仅仅是常用的DES 算法,还支持三个密钥和两个密钥3DES算法。虽然每种加密算法都定义了自己的接口函数,但是OpenSSL还使用EVP 封装了所有的对称加密算法,使得各种对成加密算法能够使用统一的API接口EVP_Encrypt和EVP_Decrypt进行数据的加密和解密,大大提供了代码的可重用性能。
非对称加密算法
OpenSSL 一共实现了4种非对称加密算法,包括DH算法、RSA 算法、DSA 算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。跟对称加密算法相似,OpenSSL也使用EVP 技术对不同功能的非对称加密算法进行封装,提供了统一的API接口。如果使用非对称加密算法进行密钥交换或者密钥加密,则使用EVP_Seal和EVP_Open 进行加密和解密;如果使用非对称加密算法进行数字签名,则使用EVP_Sign和EVP_Verify进行签名和验证。
信息摘要算法
OpenSSL 实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA1和SHA256两种信息摘要算法,此外,OpenSSL还实现了DSS 标准中规定的两种信息摘要算法DSS 和DSS1。OpenSSL 采用EVP_Digest接口作为信息摘要算法统一的EVP接口,对所有信息摘要算法进行了封装,提供了代码的重用性。
密钥和证书管理
密钥和证书管理是PKI的一个重要组成部分,OpenSSL为之提供了丰富的功能,支持多种标准。首先,OpenSSL实现了ASN.1 的证书和密钥相关标准,提供了对证书、公钥、私钥、证书请求以及CRL等数据对象的DER、PEM和BASE64 的编解码功能。OpenSSL 提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序,同时提供了对公钥和私钥的DER编解码功能。并实现了私钥的PKCS#12和PKCS#8 的编解码功能。OpenSSL 在标准中提供了对私钥的加密保护功能,使得密钥可以安全地进行存储和分发。在此基础上,OpenSSL实现了对证书的X.509标准编解码、PKCS#12格式的编解码以及PKCS#7的编解码功能。并提供了一种文本数据库,支持证书的管理功能,包括证书密钥产生、请求产生、证书签发、吊销和验证等功能。事实上,OpenSSL提供的CA 应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。
Engine 机制
Engine 机制的出现是在OpenSSL的0.9.6 版的事情,开始的时候是将普通版本跟支持Engine的版本分开的,到了OpenSSL的0.9.7 版,Engine 机制集成到了OpenSSL的内核中,成为了OpenSSL不可缺少的一部分。Engine 机制目的是为了使OpenSSL能够透明地使用第三方提供的软件加密库或者硬件加密设备进行加密。OpenSSL的Engine 机制成功地达到了这个目的,这使得OpenSSL已经不仅仅使一个加密库,而是提供了一个通用地加密接口,能够与绝大部分加密库或者加密设备协调工作。当然,要使特定加密库或加密设备更OpenSSL协调工作,需要写少量的接口代码,但是这样的工作量并不大,虽然还是需要一点密码学的知识。Engine机制的功能跟Windows提供的CSP 功能目标是基本相同的。
BIO 机制
BIO 机制是OpenSSL提供的一种高层IO 接口, BIO封装了几乎所有类型的IO接口,如内存访问、文件访问以及Socket等。
这使得代码的重用性大幅度提高,OpenSSL提供API 的复杂性也降低了很多。
- OpenSSL源码库目录解析
- OpenSSL源码目录说明
- openssl master源码目录
- Openssl 目录名以及功能解析
- Android源码目录解析
- JMeter源码目录解析
- Framework源码解析系列[目录]
- Redis源码解析—源码目录介绍
- 《stlport》源码解析-目录篇 @原创@
- Android2.1 源码结构目录解析
- CAS单点登录源码解析【目录】
- CAS单点登录源码解析【目录】
- Android6.0Framework源码解析系列[目录]
- Spark2.0 源码解析系列目录
- RocketMQ原理以及源码解析目录介绍
- Android 6.0 Framework源码解析系列[目录]
- Android6.0Framework源码解析系列[目录]
- Redis源码解析(1)——源码目录介绍
- Redis企业集群工具RLEC
- APK签名的一些问题
- Java中的修饰符说明(public,private,protected,default,final,abstract,static)
- Android动画学习笔记-Android Animation
- Spring源码学习20160120
- OpenSSL源码库目录解析
- 微信内置浏览器的JsAPI
- 懒加载
- Linux 查找目录下的所有文件中是否含有某个字符串
- jQuery获取事件元素
- 关于iOS 简单动画效果的实现(用 beginAnimations 和 commitAnimations 来实现最简单的动画)
- 《Python for kids》学习笔记(三)
- AFNetworking2.0源码解析<二>
- POI操作Excel常用方法总结