openssl之BIO系列之1---抽象的IO接口

2021SC@SDUSC openssl-gpu 抽象IO 7 抽象IO 7.1 openssl 抽象 IO openssl 抽象 IO(I/O abstraction,即 BIO)是 openssl 对于 io 类型的抽象封装, 包括:内存、 文件、日志、标准输入输出、socket(TCP/UDP)、加/解密、摘要和 ssl 通道等。 Openssl BIO 通过回调函数为用户隐藏了底层实现细节,所有类型的 bio 的调用大体上是类似的。 Bio 中的数据能从一个 BIO 传送到另外一个 BIO 或者是应用程序。 其实包含了很多种接口,用通用的函数接口,主要控制在 阅读详情
BIO-抽象的IO接口
    
    其实包含了很多种接口,用通用的函数接口,主要控制在BIO_METHOD中的不通实现函数控制,
    我初步估计了一下,大概有14种,包括6种filter型和8种source/sink型。
    
    BIO是在底层覆盖了许多类型I/O接口细节的一种应用接口,如果你在程序中使用BIO,那么就可以和SSL连接、非加密的网络连接以及文件IO进行透明的连接。
    有两种不通的BIO接口,一种是source/sink型,一种是fileter型的。
    顾名思义,source/sink类型的BIO是数据源或数据目标(我不知道sink该怎么翻译,据水木liaojzh说,一般是destination(目标、宿)的同义词,大家自己理解吧,呵呵),例如,sokect BIO和文件BIO。
    而filter BIO就是把数据从一个BIO转换到另外一个BIO或应用接口,在转换过程中,这些数据可以不修改(如信息摘要BIO),也可以进行转换。例如在加密BIO中,如果写操作,数据就会被加密,如果是读操作,数据就会被解密。
    
    BIO可以连接在一起成为一个BIO链(单个的BIO就是一个环节的BIO链的特例),如下是BIO的结构定义,可以看到它有上下环节的:
    struct bio_st
     {
          BIO_METHOD *method;
          /* bio, mode, argp, argi, argl, ret */
          long (*callback)(struct bio_st *,int,const char *,int, long,long);
          char *cb_arg; /* first argument for the callback */
    
          int init;
          int shutdown;
          int flags; /* extra storage */
          int retry_reason;
          int num;
          void *ptr;
          struct bio_st *next_bio; /* used by filter BIOs */BIO下联
          struct bio_st *prev_bio; /* used by filter BIOs */BIO上联
          int references;
          unsigned long num_read;
          unsigned long num_write;
    
          CRYPTO_EX_DATA ex_data;
     };
    一个BIO链通常包括一个source BIO和一个或多个filter BIO,数据从第一个BIO读出或写入,然后经过一系列BIO变化到输出(通常是一个source/sink BIO)。
    

    注:这是根据openssl的BIO.pod翻译和根据我自己的理解添加的,以后我会慢慢将BIO的细节说出来,希望大家一起努力。


FW: http://blog.youkuaiyun.com/gdwzh/article/details/19194

openssl之BIO系列(01-25) openssl之BIO系列之1---抽象的IO接口 1 openssl之BIO系列之2---BIO结构和BIO相关文件介绍 2 openssl之BIO系列之3---BIO的声明和释放等基本操作 5 openssl之BIO系列之4---BIO控制函数介绍 6 openssl之BIO系列之5---CallBack函数及其控制 9 openssl之BIO系列之6---BIO的IO操作函数 11 openssl之BIO系列之7---BIO链的操作 12 openssl之BIO系列之8---读写出错控制 13 openssl之BIO系列之9---BIO对的创建和应用 14 openssl之BIO系列之10---BIO链的定位操作 16 openssl之BIO系列之11---文件(file)类型BIO 18 openssl之BIO系列之12---文件描述符(fd)类型BIO 21 openssl之BIO系列之13---Socket类型BIO 22 openssl之BIO系列之14---源类型的NULL型BIO 23 openssl之BIO系列之15---内存(mem)类型BIO 24 openssl之BIO系列之16---BIO对(pair)类型BIO 26 openssl之BIO系列之17---连接(connect)类型BIO 29 openssl之BIO系列之18---接受(accept)类型BIO 32 openssl之BIO系列之19---Filter类型的NULL型BIO 36 openssl之BIO系列之20---缓冲(buffer)类型BIO 36 openssl之BIO系列之21---Base64类型的BIO 38 openssl之BIO系列之22---Cipher类型的BIO 39 openssl之BIO系列之23---MD类型的BIO 40 openssl之BIO系列之24---SSL类型的BIO 43 openssl之BIO系列之25---结束语 48 立即下载

相关推荐

openssl之BIO系列

openssl之BIO系列!打包下载,其他有关OPENSSL资源也一起分享出来了。

OpenSSL中文手册之BIO库详解

这一系文章参考了http://blog.youkuaiyun.com/xiaoting451292510/article/details/466495831 BIO 概述  其实包含了很多种接口,用通用的函数接口,主要控制在BIO_METHOD中的不同实现函数控制,包括6种filter型和8种source/sink型。   source/sink类型的BIO是数据源,例如,sokect BIO和文件BIO。

liao20081228的博客 4万+

AXI VIP配置全指南:从报错到成功仿真的完整流程(Vivado 2023版)

本文详细解析了在Vivado 2023环境中配置AXI Verification IP(VIP)进行协议仿真的完整流程。针对常见的include和import报错问题,提供了具体的解决方案和代码示例,指导用户从IP核创建、参数化配置,到构建可工作的仿真测试平台,最终实现成功仿真。

gpt4scribbler的博客 233

openssl框架闲谈--BIO接口

在 OpenSSL中一共有两种类型的BIO,一种是源/目的类型的,另一种是过滤类型的,其实可以统一到一种类型,那就是统一都是过滤类型,这种说法的前提 是一个古老的概念,早在unix时代,人们通常将程序看做一个过滤器,简单的给它一个输入就会得到一个输出,具体会得到什么输出就看程序员的意图了,那个 时候,程序没有现在如此庞大,也没有如此之多的智能和行为逻辑,就是简单的过滤功能,unix提出的一切皆文件

TCP/IP 8046

电压电流双闭环PFC单相PWM整流

电压电流双闭环PFC单相整流。仿真及代码

xht2403267701的博客 6051

手眼标定搞定了,手眼矩阵不知道怎么用?快戳!!

手眼标定得到手眼矩阵到底该咋用? 大家好,我是小鱼。上几期给大家分享了关于手眼标定的方法,如果还有不清楚如何让进行手眼标定的同学可以参考下面的文章: 机器人手眼标定都能搞不定?快戳,最好用的手眼标定库!!! 很多同学做完了手眼标定之后得到了手眼矩阵,但是不知道怎么用于程序当中去,还有很多同学搞不清楚各个坐标系之间的关系,今天小智就给大家讲讲手眼矩阵的使用问题。 一、手眼矩阵为什么会长的不一样? 做完手眼标定,得到的手眼矩阵,有可能会长的不一样,这是因为旋转变换是有很多种表示方法的。 1.旋转的表

生活不止眼前的苟且 5342

《openssl编程》之BIO

第七章   抽象IO 7.1    openssl抽象IO openssl抽象IO(I/O abstraction,即BIO)是openssl对于io类型的抽象封装,包括:内存、文件、日志、标准输入输出、socket(TCP/UDP)、加/解密、摘要和ssl通道等。Openssl BIO通过回调函数为用户隐藏了底层实现细节,所有类型的bio的调用大体上是类似的。Bio中的数据能从一个B

liujiayu2的专栏 5343

DDoS攻击--Syn_Ack/Ack_Flood等攻击防护详解(TCP)

前言 Syn_Ack/Ack_Flood攻击属于TCP攻击,在了解Syn_Ack/Ack_Flood攻击之前,可以先看看TCP攻击详解。 Syn_Ack Flood 攻击: syn_ack报文出现在连接建立的第2个报文,用来确认第一次握手的syn包。 当服务器收到syn_ack报文后会在系统里查询是否属于3次握手的范畴。如果属于则回复ack,并将连接设为连接状态。若没有查到相关信息,则回复...

一只IT小小鸟 1万+

Openssl之BIO系列

1.BIO-抽象的IO接口 其实包含了很多种接口,用通用的函数接口,主要控制在BIO_METHOD中的不同实现函数控制,我初步估计了一下,大概有14种,包括4种filter型和10种source/sink型。 BIO是在底层覆盖了许多类型I/O接口细节的一种应用接口,如果你在程序中使用BIO,那么就可以和SSL、非加密的网络以及文件IO进行透明的连接。有两种不通的BIO接口,一种是sour

章志强的专栏 1万+

STM32定时器ARR寄存器详解:从‘水桶接水’到精准测速,你的PWM和编码器都靠它

本文深入解析STM32定时器ARR寄存器的核心原理与应用技巧,从PWM波形生成到编码器测速实战。通过水桶模型和硬件本质的比喻,揭示ARR如何作为定时器的'心跳节拍器',并详细探讨其在动态调频、死区时间配置和高精度PWM中的关键作用。特别针对编码器模式下的ARR配置和溢出补偿算法进行优化建议,帮助工程师提升系统性能和实时性。

weixin_33734785的博客 379

【Bug已解决】codex: tool call timeout / Function execution exceeds limit — CodeX CLI 工具调用超时解决方案

CodeX CLI 工具调用超时(Bash/文件/MCP)的解决方案,含增加超时、拆分命令、后台运行、避免交互卡住与限制读取。

博客 4204

使用OpenSSL的内存BIO

BIO

幽雨雨幽 1363

2021年03月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。现在从m位中删除k位(0

人生就是一个不断学习的过程 1010

openssl中BIO的使用

本文主要介绍了BIO的结构和使用方法,并以示例方式给出了一种对BIO的封装,可为下一步与socket的相关操作结合,编写自定义的“加密/解密流”。

guxch的专栏 1412

Allegro如何导出和导入器件模型Signal_Model操作指导

在用Allegro做PCB设计的时候,通常需要给器件加上Signal_Model,在做等长的时候用到的非常频繁。如下图,需要把R7002的Signal_Model导入到另外一块没有给R7002加好模型的BRD中。Allegro除了可以给器件添加模型,还支持从一块加好模型的BRD导入到另外一块BRD中,如何导出和导入器件模型Signal_Model操作指导。

weixin_54787054的博客 1896

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

OpenSSL BIO源码简析

OpenSSL BIO源码简析

Starr 1858

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Openssl之BIO

1.BIO-抽象的IO接口 其实包含了很多种接口,用通用的函数接口,主要控制在BIO_METHOD中的不同实现函数控制,我初步估计了一下,大概有14种,包括4种filter型和10种source/sink型。 BIO是在底层覆盖了许多类型I/O接口细节的一种应用接口,如果你在程序中使用BIO,那么就可以和SSL、非加密的网络以及文件IO进行透明的连接。有两种不通的BIO接口,一种是sour

qeshining的博客 893

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【转】 Openssl之BIO系列

1.BIO-抽象的IO接口 其实包含了很多种接口,用通用的函数接口,主要控制在BIO_METHOD中的不同实现函数控制,我初步估计了一下,大概有14种,包括4种filter型和10种source/sink型。 BIO是在底层覆盖了许多类型I/O接口细节的一种应用接口,如果你在程序中使用BIO,那么就可以和SSL、非加密的网络以及文件IO进行透明的连接。有两种不通的BIO接口,一

pur_e的专栏 3931

openssl之BIO系列之13---Socket类型BIO

Socket类型BIO     ---根据openssl doc\crypto\bio_s_socket.pod翻译和自己的理解写成     (作者:DragonKing Mailwzhah@263.net 发布于:httpgdwzh.126.com之openssl专 业论坛)     Socket类型的BIO也是一种source/sink型BIO,封装了Socket的IO操作,它相关的一

潇汀 9866

openssl基本概念 BIO EVP

一、openssl基本概念 BIO是IO函数的抽象,对应用屏蔽底层IO细节,有2种类型的BIO:数据源BIO,过滤器BIO。 数据源BIO:内存、文件、网络等; 过滤器BIO:消息摘要、加密、解密等; EVP是高级加密接口,封装了消息摘要、加密解密、签名验签等,对外提供统一接口,推荐使用EVP接口。 ...

Jixinxxx的博客 777
上一篇: OpenSSL API编程
下一篇: openssl之BIO系列之2---BIO结构和BIO相关文件介绍
coo1fish
博客等级 码龄14年 22粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值