The BIO_find_type() searches for a BIO of a given type in a chain,
starting at BIO b. If type is a specific type (such as BIO_TYPE_MEM)
then a search is made for a BIO of that type. If type is a general type (such as BIO_TYPE_SOURCE_SINK) then the next matching
BIO of the given general type is searched for. BIO_find_type()
returns the next matching BIO or NULL if none is found.
Note: not all the BIO_TYPE_* types
above have corresponding BIO implementations.
BIO_next() returns the next BIO in a chain. It can be used to
traverse all BIOs in a chain or used in conjunction with
BIO_find_type() to find all BIOs of a certain type.
BIO_method_type() returns the type of a BIO.
RETURN VALUES
BIO_find_type() returns a matching BIO or NULL for no match.
BIO_next() returns the next BIO in a chain.
BIO_method_type() returns the type of the BIO b.
NOTES
BIO_next() was added to OpenSSL 0.9.6 to provide a 'clean' way to
traverse a BIO chain or find multiple matches using BIO_find_type().
Previous versions had to use:
next = bio->next_bio;
BUGS
BIO_find_type() in OpenSSL 0.9.5a and earlier could not be safely
passed a NULL pointer for the b
argument.
EXAMPLE
Traverse a chain looking for digest BIOs:
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);