openssl之BIO系列之6---BIO的IO操作函数

OpenSSL_BIO接口整理以及Base64编码代码 阅读详情

这些函数是BIO的基本读写操作函数,包括四个,他们的定义如下(openssl/bio.h):
     int BIO_read(BIO *b, void *buf, int len);
     int BIO_gets(BIO *b,char *buf, int size);
     int BIO_write(BIO *b, const void *buf, int len);
     int BIO_puts(BIO *b,const char *buf);
    【BIO_read】
    从BIO接口中读出指定数量字节len的数据并存储到buf中。成功就返回真正读出的数据的长度,失败返回0或-1,如果该BIO没有实现本函数则返回-2。
    【BIO_gets】
    该函数从BIO中读取一行长度最大为size的数据。通常情况下,该函数会以最大长度限制读取一行数据,但是也有例外,比如digest型的BIO,该函数会计算并返回整个digest信息。此外,有些BIO可能不支持这个函数。成功就返回真正读出的数据的长度,失败返回0或-1,如果该BIO没有实现本函数则返回-2。需要注意的时,如果相应的BIO不支持这个函数,那么对该函数的调用可能导致BIO链自动增加一个buffer型的BIO。
    【BIO_write】
    往BIO中写入长度为len的数据。成功就返回真正写入的数据的长度,失败返回0或-1,如果该BIO没有实现本函数则返回-2。
    【BIO_puts】
    往BIO中写入一个以NULL为结束符的字符串,成功就返回真正写入的数据的长度,失败返回0或-1,如果该BIO没有实现本函数则返回-2。
    
    需要注意的是,返回指为0或-1的时候并不一定就是发生了错误。在非阻塞型的source/sink型或其它一些特定类型的BIO中,这仅仅代表目前没有数据可以读取,需要稍后再进行该操作。
    有时候,你可能会使用了阻塞类型的sokect使用的一些系统调用技术(如select,poll,equivalent)来决定BIO中是否有有效的数据被read函数读取,但建议不要在阻塞型的接口中使用这些技术,因为这样的情况下如果调用BIO_read就会导致在底层的IO中多次调用read函数,从而导致端口阻塞。建议select(或equivalent)应该和非阻塞型的IO一起使用,可以在失败之后能够重新读取该IO,而不是阻塞住了。
    关于BIO的IO操作为什么会失败以及怎么处理这些情况请参加BIO_should_retry()函数的说明文档。


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

openssl之BIO系列之1---抽象的IO接口 BIO-抽象的IO接口        (作者:DragonKing Mail:wzhah@263.net 发布于:http://gdwzh.126.com openssl专业论坛)            其实包含了很多种接口,用通用的函数接口,主要控制在BIO_METHOD中的不通实现函数控制,    我初步估计了一下,大概有14种,包括6种filter型和8种source/sink型。      阅读详情

相关推荐

openssl之BIO系列之9---BIO对的创建和应用

BIO对的创建和应用    ---根据openssl doc/crypto/bio/bio_new_bio_pair.pod翻译和自己的理解写成        (作者:DragonKing Mail:wzhah@263.net 发布于:http://gdwzh.126.com之openssl专业论坛)        BIO对是BIO中专门创建的一对缓存BIO,要创建BIO对,调用下面定义的函数(o

内网安全与OpenSSL专栏 2442

openssl - BIO相关函数

OpenSSL使用BIO的概念,它是一种输入/输出抽象,允许我们以类似的方式使用来自文件,内存或网络的数据。 BIO_read(), BIO_write(), SSL_read(), SSL_write()函数和你使用的BIO对象说明。 SSL_read()read unencrypted data which is stored in the input BIO. SSL_write()write unencrypted data into the output BIO. BIO_write(..

danielzhou1025的博客 1194

openssl之BIO系列之17---连接(connect)类型BIO

连接(connect)类型BIO    ---根据openssl doc/crypto/bio_s_connect.pod翻译和自己的理解写成        (作者:DragonKing, Mail: wzhah@263.net ,发布于:httpgdwzh.126.com之openssl专业论坛)        该类型的BIO封装了socket的Connect方法,它使得编程的时候可以使用统一的

内网安全与OpenSSL专栏 4052

使用OpenSSL的内存BIO

BIO

幽雨雨幽 1363

Qt6导入QtChart绘制图表(添加组件)

我在按照大佬们的说明添加QtChart时发现,我的电脑上并不能正确的添加QtChart并编译通过,所以在综合了两位大佬的说明又自己探索了一番后,正确编译通过,分享出来,以便同志们节省一些时间。

Nuaa0719301zyx的博客 2950

Rockit VDEC解码实战:从零构建高效视频处理流水线

本文详细介绍了Rockit VDEC硬件解码模块在RK3568/RK3588平台的应用实践,涵盖开发环境配置、MPI接口使用、码流发送模式选择、内存管理优化及多路解码系统构建。通过实战案例展示如何利用VDEC实现高效视频处理流水线,显著降低CPU占用率,提升嵌入式多媒体开发效率。

ol789012的博客 304

openssl框架闲谈--BIO接口

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

TCP/IP 8046

数码管动态扫描避坑指南:如何用188芯片实现50Hz无闪烁显示?

本文深入解析188数码管动态扫描技术,提供工业级无闪烁显示方案。通过优化轮询扫描机制、硬件电路设计和软件架构,实现50Hz高刷新率显示,解决亮度不均和鬼影问题,适用于医疗设备和工业控制面板等高要求场景。

hhh00的博客 975

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万+

Solidworks钣金设计:折弯系数、K因子与折弯扣除的实战应用解析

本文深入解析Solidworks钣金设计中折弯系数、K因子与折弯扣除的核心概念与实战应用。通过厘清三者间的逻辑关系与换算方法,并结合材料特性、工艺参数及车间实测,指导工程师精准确定展开长度,确保设计图纸与加工实物的一致性,有效提升钣金件设计精度与生产效率。

weixin_29268267的博客 917

银河麒麟服务器操作系统V10-SP1部署gitlab服务

银河麒麟高级服务器操作系统 V10 SP1 部署GitHub

weixin_43173670的博客 2150

openssl中BIO的使用

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

guxch的专栏 1412

【SOFA】SOFA框架+Win10+VS2019 配置

SOFA (Simulation Open Framework Architecture)官网 SOFA 是一个开源的仿真框架,用于实时的物理仿真,而且主要针对医学上的仿真。主要用于研究人员开发新的算法,也可以作为一个有效的快速成型工具或是物理引擎。 官网中给出的配置方法写的很清晰,有着各个库或者软件的版本要求,仔细看按版本要求来 官网配置地址 官网给了两种方 1.通过脚本自动配置 2. 自己下载相关库通过CMake进行生成 第一种 没使用,不知道是否好使,因为如果其中有下载的东西,国内不一定能成功,大家可

GordonWei 5260

openssl之BIO系列之8---读写出错控制

读写出错控制    ---根据openssl doc/crypto/bio/bio_should_retry.pod翻译和自己的理解写成        (作者:DragonKing Mail:wzhah@263.net 发布于:http://gdwzh.126.com之openssl专业论坛)        当BIO_read或BIO_write函数调用出错的时候,BIO本身提供了一组出错原因的诊

内网安全与OpenSSL专栏 3252

【华为鸿蒙3.0/荣耀安卓12使用VMOS Pro的激活方式 方法二】

关于荣耀手机安卓12如何解除进程限制,这里提供以下教程供小伙伴们参考。

Amy_mumu的博客 13万+

4D毫米波雷达:高度信息与微多普勒效应

4D毫米波雷达:高度信息与微多普勒效应​ ,人工智能,计算机视觉,大模型,AI,本文深入解析4D毫米波雷达的高度信息获取与微多普勒效应。4D毫米波雷达通过MIMO技术、垂直天线布局及相位差计算等获取高度信息,相较传统雷达更精准。微多普勒效应由目标微运动引发,可用于目标识别、分类和运动监测。文中结合自动驾驶、安防监控案例,分析技术挑战与未来趋势,如信号干扰、数据处理复杂,未来将向高精度、与其他传感器融合发展,展现出在多领域的巨大应用潜力。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 9万+

openssl BIO

struct bio_method_st { int type; char *name; int (*bwrite) (BIO *, const char *, size_t, size_t *); int (*bwrite_old) (BIO *, const char *, int); int (*bread) (BIO *, char *, size_t, size_t *); int (*bread_old) (BIO *, char *, int);

jingshaoyou的博客 446

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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操作,它

内网安全与OpenSSL专栏 3569

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

openssl之BIO系列之24---SSL类型的BIO

SSL类型的BIO    ---根据openssl doc/crypto/bio_f_ssl.pod翻译和自己的理解写成        (作者:DragonKing, Mail: wzhah@263.net ,发布于:http://openssl.126.com 之openssl专业论坛)        从名字就可以看出,这是一个非常重要的BIO类型,它封装了openssl里面的ssl规则和函数,

内网安全与OpenSSL专栏 7066

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Openssl之BIO

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

qeshining的博客 893

Openssl之BIO系列

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

章志强的专栏 1万+

OpenSSL BIO源码简析

OpenSSL BIO源码简析

Starr 1858
上一篇: openssl之BIO系列之7---BIO链的操作
下一篇: openssl之BIO系列之8---读写出错控制
coo1fish
博客等级 码龄14年 22粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值