OpenSSL源码总览之文件结构

       Openssl是ssl协议的具体实现,下面从目录的角度对openssl各个模块文件夹加以说明,从总体上把握openssl。

       1、Crypto目录包含了整个openssl中的一些最基础的结构,如下:
       (1)、bio是对io等操作的封装像文件,标准输入输出,socket都是在该范畴内,可以说bio提供了一个io相关操作的框架。
       (2)、evp主要是实现对于各种算法包括对称算法以及非对称算法的封装,作用在于方便算法的增加和删除,因此evp也是一个基础框架。
       (3)、各类对称加密,非对称加密,摘要算法的实现,包括md目录,rc目录,aes,des,ec,dh,rsa,dsa等目录。还包括相应的bn大数操作以及rand随机数操作等。
       (4)、一些通用数据结构的实现,例如stack目录实现了所需的栈数据结构以及栈方法,lhash实现了哈希表数据结构及其方法,X509表示证书等结构的操作和实现,pkcs7,pkcs12,pem目录表示这类结构以及方法操作实现。Asn1目录实现了ASN.1相关操作。
       (5)、动态加载模块实现一些动态库的加载,屏蔽了不同平台上例如windows和linux动态库加载的差异性。
       (6)、conf目录配置文件读取等操作的实现。
       (7)、engine目录用于控制管理各种加密算法操作,主要是方便硬件算法的加入。

       2、ssl目录是握手协议的实现,证书校验过程等,具体包括ssl3.0、tls1.0、tls1.1、tls1.2等主流版本。

       3、apps目录是所有应用程序代码的实现,就是使用linux命令来进行ssl证书生成等操作的实现。test目录存放的是测试代码。demos是对于接口函数的一些使用事例。其实在具体使用openssl的时候可以参考apps、test以及demos目录中对于接口的调用。

       4、doc目录是一些函数的说明文档,可以看到cypto以及ssl目录均有相关说明文档。

       5、include目录是在第三方程序调用openssl库的时候提供给第三方使用的接口头文件。

       以上就是openssl主要的目录结构信息,后面将学习具体的ssl握手过程,具体包括1、初始化ssl环境;2、建立ssl链接;3、在ssl连接上交换数据;4、关闭ssl链接等方面的内容。

       本文为CSDN村中少年原创文章,转载记得加上小尾巴偶,博主链接这里。

你可能感兴趣的:(openssl,源码剖析)