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