OpenSSL BIO_push(3openssl)
NNNNAAAAMMMMEEEEBIO_push, BIO_pop - add and remove BIOs from a chain.
SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS#include
BIO * BIO_push(BIO *b,BIO *append);
BIO * BIO_pop(BIO *b);
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNNThe BIO_push() function appends the BIO aaaappppppppeeeennnndddd to bbbb, it
returns bbbb.BIO_pop() removes the BIO bbbb from a chain and returns the
next BIO in the chain, or NULL if there is no next BIO. The removed BIO then becomes a single BIO with no association with the original chain, it can thus be freed or attached to a different chain. NNNNOOOOTTTTEEEESSSS The names of these functions are perhaps a littlemisleading. BIO_push() joins two BIO chains whereas
BIO_pop() deletes a single BIO from a chain, the deleted BIO
does not need to be at the end of a chain.The process of calling BIO_push() and BIO_pop() on a BIO may
have additional consequences (a control call is made to the affected BIOs) any effects will be noted in the descriptions of individual BIOs. EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS For these examples suppose mmmmdddd1111 and mmmmdddd2222 are digest BIOs, bbbb66664444 is a base64 BIO and ffff is a file BIO. If the call:BIO_push(b64, f);
is made then the new chain will be bbbb66664444---ccchhhhaaaaiiiinnnn. After making
the callsBIO_push(md2, b64);
BIO_push(md1, md2);
the new chain is mmmmdddd1111---mmmdddd2222---bbb66664444---fff. Data written to mmmmdddd1111 will be
digested by mmmmdddd1111 and mmmmdddd2222, bbbbaaaasssseeee66664444 encoded and written to ffff. It should be noted that reading causes data to pass in the reverse direction, that is data is read from ffff, base64 ddddeeeeccccooooddddeeeedddd and digested by mmmmdddd1111 and mmmmdddd2222. If the call:14/Sep/2000 Last change: 0.9.8o 1
OpenSSL BIO_push(3openssl)
BIO_pop(md2);
The call will return bbbb66664444 and the new chain will be mmmmdddd1111---bbb66664444---fff
data can be written to mmmmdddd1111 as before. RRRREEEETTTTUUUURRRRNNNN VVVVAAAALLLLUUUUEEEESSSSBIO_push() returns the end of the chain, bbbb.
BIO_pop() returns the next BIO in the chain, or NULL if
there is no next BIO. SSSSEEEEEEEE AAAALLLLSSSSOOOO TBA14/Sep/2000 Last change: 0.9.8o 2