openssl之BIO系列之14---源类型的NULL型BIO

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

source/sink型BIO

---根据openssl doc\crypto\bio_s_null.pod翻译和自己的理解写成

(作者:DragonKing, Mail: wzhah@263.net ,发布于:httpgdwzh.126.com之openssl专业论坛)

这是一个空的source/sink型BIO,写到这个BIO的数据都被丢掉了,从这里执行读操作也总是返回EOF。该BIO非常简单,其相关函数的定义如下(openssl\bio.h):

BIO_METHOD * BIO_s_null(void);

其相关的源文件实现函数在bss_null.c里面。

【BIO_s_null】

该函数返回一个NULL型的BIO_METHOD结构,该结构定义如下:

static BIO_METHOD null_method=

{

BIO_TYPE_NULL,

"NULL",

null_write,

null_read,

null_puts,

null_gets,

null_ctrl,

null_new,

null_free,

NULL,

};

从结构上看,这个类型的BIO实现了不少的函数,但是,仔细看看源文件,就会发现所有这些函数都只是简单返回0、1或者输入数据的长度,而不作任何事情。熟悉Linux系统的技术人员可能知道,这跟Linux系统的/dev/null设备的行为是一样的。

一般来说,在openssl里面,这种类型的BIO是置放在BIO链的末尾的,比如在应用程序中,如果你要将一些数据通过filter型的BIO digest进行摘要算法,但不需要把它送往任何地方,又因为一个BIO链要求以source/sink型BIO开始或结束,所以这时候就可以在BIO链的末尾添加一个source/sink型的NUll类型BIO来实现这个功能。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航