HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: //usr/local/openssl/man/man3/BIO_method_type.3
.\" -*- mode: troff; coding: utf-8 -*-
.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
.ie n \{\
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds C`
.    ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\"
.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{\
.    if \nF \{\
.        de IX
.        tm Index:\\$1\t\\n%\t"\\$2"
..
.        if !\nF==2 \{\
.            nr % 0
.            nr F 2
.        \}
.    \}
.\}
.rr rF
.\" ========================================================================
.\"
.IX Title "BIO_find_type 3"
.TH BIO_find_type 3 2019-12-20 1.0.2u OpenSSL
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH NAME
BIO_find_type, BIO_next, BIO_method_type \- BIO chain traversal
.SH SYNOPSIS
.IX Header "SYNOPSIS"
.Vb 1
\& #include <openssl/bio.h>
\&
\& BIO *  BIO_find_type(BIO *b,int bio_type);
\& BIO *  BIO_next(BIO *b);
\&
\& #define BIO_method_type(b)             ((b)\->method\->type)
\&
\& #define BIO_TYPE_NONE          0
\& #define BIO_TYPE_MEM           (1|0x0400)
\& #define BIO_TYPE_FILE          (2|0x0400)
\&
\& #define BIO_TYPE_FD            (4|0x0400|0x0100)
\& #define BIO_TYPE_SOCKET                (5|0x0400|0x0100)
\& #define BIO_TYPE_NULL          (6|0x0400)
\& #define BIO_TYPE_SSL           (7|0x0200)
\& #define BIO_TYPE_MD            (8|0x0200)
\& #define BIO_TYPE_BUFFER                (9|0x0200)
\& #define BIO_TYPE_CIPHER                (10|0x0200)
\& #define BIO_TYPE_BASE64                (11|0x0200)
\& #define BIO_TYPE_CONNECT       (12|0x0400|0x0100)
\& #define BIO_TYPE_ACCEPT                (13|0x0400|0x0100)
\& #define BIO_TYPE_PROXY_CLIENT  (14|0x0200)
\& #define BIO_TYPE_PROXY_SERVER  (15|0x0200)
\& #define BIO_TYPE_NBIO_TEST     (16|0x0200)
\& #define BIO_TYPE_NULL_FILTER   (17|0x0200)
\& #define BIO_TYPE_BER           (18|0x0200)
\& #define BIO_TYPE_BIO           (19|0x0400)
\&
\& #define BIO_TYPE_DESCRIPTOR    0x0100
\& #define BIO_TYPE_FILTER                0x0200
\& #define BIO_TYPE_SOURCE_SINK   0x0400
.Ve
.SH DESCRIPTION
.IX Header "DESCRIPTION"
The \fBBIO_find_type()\fR searches for a BIO of a given type in a chain, starting
at BIO \fBb\fR. If \fBtype\fR is a specific type (such as BIO_TYPE_MEM) then a search
is made for a BIO of that type. If \fBtype\fR is a general type (such as
\&\fBBIO_TYPE_SOURCE_SINK\fR) then the next matching BIO of the given general type is
searched for. \fBBIO_find_type()\fR returns the next matching BIO or NULL if none is
found.
.PP
Note: not all the \fBBIO_TYPE_*\fR types above have corresponding BIO implementations.
.PP
\&\fBBIO_next()\fR returns the next BIO in a chain. It can be used to traverse all BIOs
in a chain or used in conjunction with \fBBIO_find_type()\fR to find all BIOs of a
certain type.
.PP
\&\fBBIO_method_type()\fR returns the type of a BIO.
.SH "RETURN VALUES"
.IX Header "RETURN VALUES"
\&\fBBIO_find_type()\fR returns a matching BIO or NULL for no match.
.PP
\&\fBBIO_next()\fR returns the next BIO in a chain.
.PP
\&\fBBIO_method_type()\fR returns the type of the BIO \fBb\fR.
.SH NOTES
.IX Header "NOTES"
\&\fBBIO_next()\fR was added to OpenSSL 0.9.6 to provide a 'clean' way to traverse a BIO
chain or find multiple matches using \fBBIO_find_type()\fR. Previous versions had to
use:
.PP
.Vb 1
\& next = bio\->next_bio;
.Ve
.SH BUGS
.IX Header "BUGS"
\&\fBBIO_find_type()\fR in OpenSSL 0.9.5a and earlier could not be safely passed a
NULL pointer for the \fBb\fR argument.
.SH EXAMPLE
.IX Header "EXAMPLE"
Traverse a chain looking for digest BIOs:
.PP
.Vb 2
\& BIO *btmp;
\& btmp = in_bio; /* in_bio is chain to search through */
\&
\& do {
\&        btmp = BIO_find_type(btmp, BIO_TYPE_MD);
\&        if(btmp == NULL) break; /* Not found */
\&        /* btmp is a digest BIO, do something with it ...*/
\&        ...
\&
\&        btmp = BIO_next(btmp);
\& } while(btmp);
.Ve
.SH "SEE ALSO"
.IX Header "SEE ALSO"
TBA