5 BIO_push, BIO_pop - add and remove BIOs from a chain.
9 #include <openssl/bio.h>
11 BIO * BIO_push(BIO *b,BIO *append);
12 BIO * BIO_pop(BIO *b);
16 The BIO_push() function appends the BIO B<append> to B<b>, it returns
19 BIO_pop() removes the BIO B<b> from a chain and returns the next BIO
20 in the chain, or NULL if there is no next BIO. The removed BIO then
21 becomes a single BIO with no association with the original chain,
22 it can thus be freed or attached to a different chain.
26 The names of these functions are perhaps a little misleading. BIO_push()
27 joins two BIO chains whereas BIO_pop() deletes a single BIO from a chain,
28 the deleted BIO does not need to be at the end of a chain.
30 The process of calling BIO_push() and BIO_pop() on a BIO may have additional
31 consequences (a control call is made to the affected BIOs) any effects will
32 be noted in the descriptions of individual BIOs.
36 For these examples suppose B<md1> and B<md2> are digest BIOs, B<b64> is
37 a base64 BIO and B<f> is a file BIO.
43 is made then the new chain will be B<b64-f>. After making the calls
48 the new chain is B<md1-md2-b64-f>. Data written to B<md1> will be digested
49 by B<md1> and B<md2>, B<base64> encoded and written to B<f>.
51 It should be noted that reading causes data to pass in the reverse
52 direction, that is data is read from B<f>, base64 B<decoded> and digested
53 by B<md1> and B<md2>. If the call:
57 The call will return B<b64> and the new chain will be B<md1-b64-f> data can
58 be written to B<md1> as before.
62 BIO_push() returns the end of the chain, B<b>.
64 BIO_pop() returns the next BIO in the chain, or NULL if there is no next