1*e71b7053SJung-uk Kim=pod 2*e71b7053SJung-uk Kim 3*e71b7053SJung-uk Kim=head1 NAME 4*e71b7053SJung-uk Kim 5*e71b7053SJung-uk KimBIO_get_new_index, 6*e71b7053SJung-uk KimBIO_meth_new, BIO_meth_free, BIO_meth_get_read_ex, BIO_meth_set_read_ex, 7*e71b7053SJung-uk KimBIO_meth_get_write_ex, BIO_meth_set_write_ex, BIO_meth_get_write, 8*e71b7053SJung-uk KimBIO_meth_set_write, BIO_meth_get_read, BIO_meth_set_read, BIO_meth_get_puts, 9*e71b7053SJung-uk KimBIO_meth_set_puts, BIO_meth_get_gets, BIO_meth_set_gets, BIO_meth_get_ctrl, 10*e71b7053SJung-uk KimBIO_meth_set_ctrl, BIO_meth_get_create, BIO_meth_set_create, 11*e71b7053SJung-uk KimBIO_meth_get_destroy, BIO_meth_set_destroy, BIO_meth_get_callback_ctrl, 12*e71b7053SJung-uk KimBIO_meth_set_callback_ctrl - Routines to build up BIO methods 13*e71b7053SJung-uk Kim 14*e71b7053SJung-uk Kim=head1 SYNOPSIS 15*e71b7053SJung-uk Kim 16*e71b7053SJung-uk Kim #include <openssl/bio.h> 17*e71b7053SJung-uk Kim 18*e71b7053SJung-uk Kim int BIO_get_new_index(void); 19*e71b7053SJung-uk Kim 20*e71b7053SJung-uk Kim BIO_METHOD *BIO_meth_new(int type, const char *name); 21*e71b7053SJung-uk Kim 22*e71b7053SJung-uk Kim void BIO_meth_free(BIO_METHOD *biom); 23*e71b7053SJung-uk Kim 24*e71b7053SJung-uk Kim int (*BIO_meth_get_write_ex(const BIO_METHOD *biom))(BIO *, const char *, size_t, 25*e71b7053SJung-uk Kim size_t *); 26*e71b7053SJung-uk Kim int (*BIO_meth_get_write(const BIO_METHOD *biom))(BIO *, const char *, int); 27*e71b7053SJung-uk Kim int BIO_meth_set_write_ex(BIO_METHOD *biom, 28*e71b7053SJung-uk Kim int (*bwrite)(BIO *, const char *, size_t, size_t *)); 29*e71b7053SJung-uk Kim int BIO_meth_set_write(BIO_METHOD *biom, 30*e71b7053SJung-uk Kim int (*write)(BIO *, const char *, int)); 31*e71b7053SJung-uk Kim 32*e71b7053SJung-uk Kim int (*BIO_meth_get_read_ex(const BIO_METHOD *biom))(BIO *, char *, size_t, size_t *); 33*e71b7053SJung-uk Kim int (*BIO_meth_get_read(const BIO_METHOD *biom))(BIO *, char *, int); 34*e71b7053SJung-uk Kim int BIO_meth_set_read_ex(BIO_METHOD *biom, 35*e71b7053SJung-uk Kim int (*bread)(BIO *, char *, size_t, size_t *)); 36*e71b7053SJung-uk Kim int BIO_meth_set_read(BIO_METHOD *biom, int (*read)(BIO *, char *, int)); 37*e71b7053SJung-uk Kim 38*e71b7053SJung-uk Kim int (*BIO_meth_get_puts(const BIO_METHOD *biom))(BIO *, const char *); 39*e71b7053SJung-uk Kim int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts)(BIO *, const char *)); 40*e71b7053SJung-uk Kim 41*e71b7053SJung-uk Kim int (*BIO_meth_get_gets(const BIO_METHOD *biom))(BIO *, char *, int); 42*e71b7053SJung-uk Kim int BIO_meth_set_gets(BIO_METHOD *biom, 43*e71b7053SJung-uk Kim int (*gets)(BIO *, char *, int)); 44*e71b7053SJung-uk Kim 45*e71b7053SJung-uk Kim long (*BIO_meth_get_ctrl(const BIO_METHOD *biom))(BIO *, int, long, void *); 46*e71b7053SJung-uk Kim int BIO_meth_set_ctrl(BIO_METHOD *biom, 47*e71b7053SJung-uk Kim long (*ctrl)(BIO *, int, long, void *)); 48*e71b7053SJung-uk Kim 49*e71b7053SJung-uk Kim int (*BIO_meth_get_create(const BIO_METHOD *bion))(BIO *); 50*e71b7053SJung-uk Kim int BIO_meth_set_create(BIO_METHOD *biom, int (*create)(BIO *)); 51*e71b7053SJung-uk Kim 52*e71b7053SJung-uk Kim int (*BIO_meth_get_destroy(const BIO_METHOD *biom))(BIO *); 53*e71b7053SJung-uk Kim int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy)(BIO *)); 54*e71b7053SJung-uk Kim 55*e71b7053SJung-uk Kim long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom))(BIO *, int, BIO_info_cb *); 56*e71b7053SJung-uk Kim int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, 57*e71b7053SJung-uk Kim long (*callback_ctrl)(BIO *, int, BIO_info_cb *)); 58*e71b7053SJung-uk Kim 59*e71b7053SJung-uk Kim=head1 DESCRIPTION 60*e71b7053SJung-uk Kim 61*e71b7053SJung-uk KimThe B<BIO_METHOD> type is a structure used for the implementation of new BIO 62*e71b7053SJung-uk Kimtypes. It provides a set of functions used by OpenSSL for the implementation 63*e71b7053SJung-uk Kimof the various BIO capabilities. See the L<bio> page for more information. 64*e71b7053SJung-uk Kim 65*e71b7053SJung-uk KimBIO_meth_new() creates a new B<BIO_METHOD> structure. It should be given a 66*e71b7053SJung-uk Kimunique integer B<type> and a string that represents its B<name>. 67*e71b7053SJung-uk KimUse BIO_get_new_index() to get the value for B<type>. 68*e71b7053SJung-uk Kim 69*e71b7053SJung-uk KimThe set of 70*e71b7053SJung-uk Kimstandard OpenSSL provided BIO types is provided in B<bio.h>. Some examples 71*e71b7053SJung-uk Kiminclude B<BIO_TYPE_BUFFER> and B<BIO_TYPE_CIPHER>. Filter BIOs should have a 72*e71b7053SJung-uk Kimtype which have the "filter" bit set (B<BIO_TYPE_FILTER>). Source/sink BIOs 73*e71b7053SJung-uk Kimshould have the "source/sink" bit set (B<BIO_TYPE_SOURCE_SINK>). File descriptor 74*e71b7053SJung-uk Kimbased BIOs (e.g. socket, fd, connect, accept etc) should additionally have the 75*e71b7053SJung-uk Kim"descriptor" bit set (B<BIO_TYPE_DESCRIPTOR>). See the L<BIO_find_type> page for 76*e71b7053SJung-uk Kimmore information. 77*e71b7053SJung-uk Kim 78*e71b7053SJung-uk KimBIO_meth_free() destroys a B<BIO_METHOD> structure and frees up any memory 79*e71b7053SJung-uk Kimassociated with it. 80*e71b7053SJung-uk Kim 81*e71b7053SJung-uk KimBIO_meth_get_write_ex() and BIO_meth_set_write_ex() get and set the function 82*e71b7053SJung-uk Kimused for writing arbitrary length data to the BIO respectively. This function 83*e71b7053SJung-uk Kimwill be called in response to the application calling BIO_write_ex() or 84*e71b7053SJung-uk KimBIO_write(). The parameters for the function have the same meaning as for 85*e71b7053SJung-uk KimBIO_write_ex(). Older code may call BIO_meth_get_write() and 86*e71b7053SJung-uk KimBIO_meth_set_write() instead. Applications should not call both 87*e71b7053SJung-uk KimBIO_meth_set_write_ex() and BIO_meth_set_write() or call BIO_meth_get_write() 88*e71b7053SJung-uk Kimwhen the function was set with BIO_meth_set_write_ex(). 89*e71b7053SJung-uk Kim 90*e71b7053SJung-uk KimBIO_meth_get_read_ex() and BIO_meth_set_read_ex() get and set the function used 91*e71b7053SJung-uk Kimfor reading arbitrary length data from the BIO respectively. This function will 92*e71b7053SJung-uk Kimbe called in response to the application calling BIO_read_ex() or BIO_read(). 93*e71b7053SJung-uk KimThe parameters for the function have the same meaning as for BIO_read_ex(). 94*e71b7053SJung-uk KimOlder code may call BIO_meth_get_read() and BIO_meth_set_read() instead. 95*e71b7053SJung-uk KimApplications should not call both BIO_meth_set_read_ex() and BIO_meth_set_read() 96*e71b7053SJung-uk Kimor call BIO_meth_get_read() when the function was set with 97*e71b7053SJung-uk KimBIO_meth_set_read_ex(). 98*e71b7053SJung-uk Kim 99*e71b7053SJung-uk KimBIO_meth_get_puts() and BIO_meth_set_puts() get and set the function used for 100*e71b7053SJung-uk Kimwriting a NULL terminated string to the BIO respectively. This function will be 101*e71b7053SJung-uk Kimcalled in response to the application calling BIO_puts(). The parameters for 102*e71b7053SJung-uk Kimthe function have the same meaning as for BIO_puts(). 103*e71b7053SJung-uk Kim 104*e71b7053SJung-uk KimBIO_meth_get_gets() and BIO_meth_set_gets() get and set the function typically 105*e71b7053SJung-uk Kimused for reading a line of data from the BIO respectively (see the L<BIO_gets(3)> 106*e71b7053SJung-uk Kimpage for more information). This function will be called in response to the 107*e71b7053SJung-uk Kimapplication calling BIO_gets(). The parameters for the function have the same 108*e71b7053SJung-uk Kimmeaning as for BIO_gets(). 109*e71b7053SJung-uk Kim 110*e71b7053SJung-uk KimBIO_meth_get_ctrl() and BIO_meth_set_ctrl() get and set the function used for 111*e71b7053SJung-uk Kimprocessing ctrl messages in the BIO respectively. See the L<BIO_ctrl> page for 112*e71b7053SJung-uk Kimmore information. This function will be called in response to the application 113*e71b7053SJung-uk Kimcalling BIO_ctrl(). The parameters for the function have the same meaning as for 114*e71b7053SJung-uk KimBIO_ctrl(). 115*e71b7053SJung-uk Kim 116*e71b7053SJung-uk KimBIO_meth_get_create() and BIO_meth_set_create() get and set the function used 117*e71b7053SJung-uk Kimfor creating a new instance of the BIO respectively. This function will be 118*e71b7053SJung-uk Kimcalled in response to the application calling BIO_new() and passing 119*e71b7053SJung-uk Kimin a pointer to the current BIO_METHOD. The BIO_new() function will allocate the 120*e71b7053SJung-uk Kimmemory for the new BIO, and a pointer to this newly allocated structure will 121*e71b7053SJung-uk Kimbe passed as a parameter to the function. 122*e71b7053SJung-uk Kim 123*e71b7053SJung-uk KimBIO_meth_get_destroy() and BIO_meth_set_destroy() get and set the function used 124*e71b7053SJung-uk Kimfor destroying an instance of a BIO respectively. This function will be 125*e71b7053SJung-uk Kimcalled in response to the application calling BIO_free(). A pointer to the BIO 126*e71b7053SJung-uk Kimto be destroyed is passed as a parameter. The destroy function should be used 127*e71b7053SJung-uk Kimfor BIO specific clean up. The memory for the BIO itself should not be freed by 128*e71b7053SJung-uk Kimthis function. 129*e71b7053SJung-uk Kim 130*e71b7053SJung-uk KimBIO_meth_get_callback_ctrl() and BIO_meth_set_callback_ctrl() get and set the 131*e71b7053SJung-uk Kimfunction used for processing callback ctrl messages in the BIO respectively. See 132*e71b7053SJung-uk Kimthe L<BIO_callback_ctrl(3)> page for more information. This function will be called 133*e71b7053SJung-uk Kimin response to the application calling BIO_callback_ctrl(). The parameters for 134*e71b7053SJung-uk Kimthe function have the same meaning as for BIO_callback_ctrl(). 135*e71b7053SJung-uk Kim 136*e71b7053SJung-uk Kim=head1 RETURN VALUES 137*e71b7053SJung-uk Kim 138*e71b7053SJung-uk KimBIO_get_new_index() returns the new BIO type value or -1 if an error occurred. 139*e71b7053SJung-uk Kim 140*e71b7053SJung-uk KimBIO_meth_new(int type, const char *name) returns a valid B<BIO_METHOD> or NULL 141*e71b7053SJung-uk Kimif an error occurred. 142*e71b7053SJung-uk Kim 143*e71b7053SJung-uk KimThe B<BIO_meth_set> functions return 1 on success or 0 on error. 144*e71b7053SJung-uk Kim 145*e71b7053SJung-uk KimThe B<BIO_meth_get> functions return the corresponding function pointers. 146*e71b7053SJung-uk Kim 147*e71b7053SJung-uk Kim=head1 SEE ALSO 148*e71b7053SJung-uk Kim 149*e71b7053SJung-uk KimL<bio>, L<BIO_find_type>, L<BIO_ctrl>, L<BIO_read_ex>, L<BIO_new> 150*e71b7053SJung-uk Kim 151*e71b7053SJung-uk Kim=head1 HISTORY 152*e71b7053SJung-uk Kim 153*e71b7053SJung-uk KimThe functions described here were added in OpenSSL 1.1.0. 154*e71b7053SJung-uk Kim 155*e71b7053SJung-uk Kim=head1 COPYRIGHT 156*e71b7053SJung-uk Kim 157*e71b7053SJung-uk KimCopyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. 158*e71b7053SJung-uk Kim 159*e71b7053SJung-uk KimLicensed under the OpenSSL license (the "License"). You may not use 160*e71b7053SJung-uk Kimthis file except in compliance with the License. You can obtain a copy 161*e71b7053SJung-uk Kimin the file LICENSE in the source distribution or at 162*e71b7053SJung-uk KimL<https://www.openssl.org/source/license.html>. 163*e71b7053SJung-uk Kim 164*e71b7053SJung-uk Kim=cut 165