OpenSSL采用的BIO接口和EVP接口

2023年2月27日09:07:17OpenSSL采用的BIO接口和EVP接口已关闭评论

BIO接口

在OpenSSL源代码中,I/O操作主要有网络操作、磁盘操作。为了方便调用者实现其I/O操作,OpenSSL源代码中将所有与I/O操作有关的函数进行统一封装,即无论是网络还是磁盘操作,其接口都是一样的。对于函数调用者来说,以统一的接口函数去实现真正的I/O操作。

为了达到此目的,OpenSSL采用BIO抽象接口。BIO是在底层覆盖了许多类型I/O接口细节的一种应用接口,如果在程序中使用BIO,就可以和SSL连接、非加密的网络连接以及文件I/O进行透明的连接。BIO接口的定义如下:

OpenSSL采用的BIO接口和EVP接口

上面定义了7个文件操作的接口函数入口,这7个文件操作函数的具体实现与操作系统提供的API有关。BIO_METHOD结构体用于网络操作时,其结构体如下:

OpenSSL采用的BIO接口和EVP接口

它跟文件类型BIO在实现的动作上基本一样,只是前缀名和类型字段名称不一样。其实在像Linux这样的系统里,Socket类型跟fd类型一样,都是可以通用的。但是,为什么要分开来实现呢?那是因为有些系统(如Windows系统)的Socket跟文件描述符是不一样的,为了平台的兼容性,OpenSSL就将这两类分开了。

EVP接口

EVP系列的函数定义包含在evp.h里面,这是一系列封装了OpenSSL加密库中所有算法的函数。通过这样的统一封装,只需要在初始化参数的时候做很少的改变就可以使用相同的代码、采用不同的加密算法进行数据的加密和解密。

EVP系列函数主要封装了三大类型的算法。如果要全部支持这些算法,可以调用OpenSSL_addall_algorithms函数。

1.公开密钥算法

函数名称:EVPSeal*...*,EVPOpen*...*。

功能描述:该系列函数封装提供了公开密钥算法的加密和解密功能,实现了电子信封的功能。

相关文件:p_seal,p_open.c。

2.数字签名算法

函数名称:EVP_Sign*...*,EVP_Verify*...*。

功能描述:该系列函数封装提供了数字签名算法和功能。相关文件:p_sign.c,p_verify.c。

3.对称加密算法

函数名称:EVP_Encrypt*...*。

功能描述:该系列函数封装提供了对称加密算法的功能。

相关文件:evp_enc.c,p_enc.c,p_dec.c,e_*.c。

4.信息摘要算法

函数名称:EVPDigest*...*。

功能描述:该系列函数封装实现了多种信息摘要算法。

相关文件:digest.c,m_*.c。

5.信息编码算法

函数名称:EVPEncode*...*。

功能描述:该系列函数封装实现了ASCII码与二进制码之间的转换函数和功能。

  • A+
所属分类:JAVA
  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。