
#use wml::openssl-macros area=docs page=bio

<title>Documents, bio(3)</title>

<h1>bio(3)</h1>

#use wml::imp::generic

{:
## What's this? [[s|(<STRONG>[^<].+?)</A>(</STRONG><DD>)|$1$2|sg]]
[[s|<P>\s+<P>|<P>|sg]]
[[s|<P>\s+</|</|sg]]
[[s|<DD>\s*<DT>|<DD>&nbsp;<DT>|sg]]
[[s|<DD>\s*</DL>|<DD>&nbsp;</DL>|sg]]
[[s|\[|&#91;|sg]]
[[s|\]|&#93;|sg]]

<!-- INDEX BEGIN -->

<UL>

	<LI><A HREF="#NAME">NAME</A>
	<LI><A HREF="#SYNOPSIS">SYNOPSIS</A>
	<LI><A HREF="#DESCRIPTION">DESCRIPTION</A>
	<LI><A HREF="#SEE_ALSO">SEE ALSO</A>
</UL>
<!-- INDEX END -->

<HR>
<P>
<HR>
<H1><A NAME="NAME">NAME</A></H1>
<P>
bio - I/O abstraction

</P>
<P>
<HR>
<H1><A NAME="SYNOPSIS">SYNOPSIS</A></H1>
<PRE> #include &lt;openssl/bio.h&gt;
</PRE>
<P>
TBA

</P>
<P>
<HR>
<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
<P>
A BIO is an I/O abstraction, it hides many of the underlying I/O details
from an application. If an application uses a BIO for its I/O it can
transparently handle SSL connections, unencrypted network connections and
file I/O.

</P>
<P>
There are two type of BIO, a source/sink BIO and a filter BIO.

</P>
<P>
As its name implies a source/sink BIO is a source and/or sink of data,
examples include a socket BIO and a file BIO.

</P>
<P>
A filter BIO takes data from one BIO and passes it through to another, or
the application. The data may be left unmodified (for example a message
digest BIO) or translated (for example an encryption BIO). The effect of a
filter BIO may change according to the I/O operation it is performing: for
example an encryption BIO will encrypt data if it is being written to and
decrypt data if it is being read from.

</P>
<P>
BIOs can be joined together to form a chain (a single BIO is a chain with
one component). A chain normally consist of one source/sink BIO and one or
more filter BIOs. Data read from or written to the first BIO then traverses
the chain to the end (normally a source/sink BIO).

</P>
<P>
<HR>
<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
<P>
<A HREF="../crypto/BIO_ctrl.html#">BIO_ctrl(3)</A>,
<A HREF="../crypto/BIO_f_base64.html#">BIO_f_base64(3)</A>, <A HREF="../crypto/BIO_f_buffer.html#">BIO_f_buffer(3)</A>,
<A HREF="../crypto/BIO_f_cipher.html#">BIO_f_cipher(3)</A>, <A HREF="../crypto/BIO_f_md.html#">BIO_f_md(3)</A>,
<A HREF="../crypto/BIO_f_null.html#">BIO_f_null(3)</A>, <A HREF="../crypto/BIO_f_ssl.html#">BIO_f_ssl(3)</A>,
<A HREF="../crypto/BIO_find_type.html#">BIO_find_type(3)</A>, <A HREF="../crypto/BIO_new.html#">BIO_new(3)</A>,
<A HREF="../crypto/BIO_s_bio.html#">BIO_new_bio_pair(3)</A>,
<A HREF="../crypto/BIO_push.html#">BIO_push(3)</A>, <A HREF="../crypto/BIO_read.html#">BIO_read(3)</A>,
<A HREF="../crypto/BIO_s_accept.html#">BIO_s_accept(3)</A>, <A HREF="../crypto/BIO_s_bio.html#">BIO_s_bio(3)</A>,
<A HREF="../crypto/BIO_s_connect.html#">BIO_s_connect(3)</A>, <A HREF="../crypto/BIO_s_fd.html#">BIO_s_fd(3)</A>,
<A HREF="../crypto/BIO_s_file.html#">BIO_s_file(3)</A>, <A HREF="../crypto/BIO_s_mem.html#">BIO_s_mem(3)</A>,
<A HREF="../crypto/BIO_s_null.html#">BIO_s_null(3)</A>, <A HREF="../crypto/BIO_s_socket.html#">BIO_s_socket(3)</A>,
<A HREF="../crypto/BIO_set_callback.html#">BIO_set_callback(3)</A>,
<A HREF="../crypto/BIO_should_retry.html#">BIO_should_retry(3)</A>

</P>
:}

