]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/crypto/BIO_meth_new.pod
Add BIO_get_new_index()
[thirdparty/openssl.git] / doc / crypto / BIO_meth_new.pod
CommitLineData
85556b4d
MC
1=pod
2
3=head1 NAME
4
8b8d963d 5BIO_get_new_index,
85556b4d
MC
6BIO_meth_new, BIO_meth_free, BIO_meth_get_write, BIO_meth_set_write,
7BIO_meth_get_read, BIO_meth_set_read, BIO_meth_get_puts, BIO_meth_set_puts,
8BIO_meth_get_gets, BIO_meth_set_gets, BIO_meth_get_ctrl, BIO_meth_set_ctrl,
9BIO_meth_get_create, BIO_meth_set_create, BIO_meth_get_destroy,
10BIO_meth_set_destroy, BIO_meth_get_callback_ctrl,
11BIO_meth_set_callback_ctrl - Routines to build up BIO methods
12
13=head1 SYNOPSIS
14
15 #include <openssl/bio.h>
16
8b8d963d 17 int BIO_get_new_index(void);
85556b4d
MC
18 BIO_METHOD *BIO_meth_new(int type, const char *name);
19 void BIO_meth_free(BIO_METHOD *biom);
20 int (*BIO_meth_get_write(BIO_METHOD *biom)) (BIO *, const char *, int);
21 int BIO_meth_set_write(BIO_METHOD *biom,
22 int (*write) (BIO *, const char *, int));
23 int (*BIO_meth_get_read(BIO_METHOD *biom)) (BIO *, char *, int);
24 int BIO_meth_set_read(BIO_METHOD *biom,
25 int (*read) (BIO *, char *, int));
26 int (*BIO_meth_get_puts(BIO_METHOD *biom)) (BIO *, const char *);
27 int BIO_meth_set_puts(BIO_METHOD *biom,
28 int (*puts) (BIO *, const char *));
29 int (*BIO_meth_get_gets(BIO_METHOD *biom)) (BIO *, char *, int);
30 int BIO_meth_set_gets(BIO_METHOD *biom,
31 int (*gets) (BIO *, char *, int));
32 long (*BIO_meth_get_ctrl(BIO_METHOD *biom)) (BIO *, int, long, void *);
33 int BIO_meth_set_ctrl(BIO_METHOD *biom,
34 long (*ctrl) (BIO *, int, long, void *));
35 int (*BIO_meth_get_create(BIO_METHOD *bion)) (BIO *);
36 int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *));
37 int (*BIO_meth_get_destroy(BIO_METHOD *biom)) (BIO *);
38 int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *));
39 long (*BIO_meth_get_callback_ctrl(BIO_METHOD *biom))
40 (BIO *, int, bio_info_cb *);
41 int BIO_meth_set_callback_ctrl(BIO_METHOD *biom,
42 long (*callback_ctrl) (BIO *, int,
43 bio_info_cb *));
44
45=head1 DESCRIPTION
46
47The B<BIO_METHOD> type is a structure used for the implementation of new BIO
48types. It provides a set of of functions used by OpenSSL for the implementation
49of the various BIO capabilities. See the L<bio> page for more information.
50
51BIO_meth_new() creates a new B<BIO_METHOD> structure. It should be given a
8b8d963d
RS
52unique integer B<type> and a string that represents its B<name>.
53Use BIO_get_new_index() to get the value for B<type>.
54
55The set of
85556b4d
MC
56standard OpenSSL provided BIO types is provided in B<bio.h>. Some examples
57include B<BIO_TYPE_BUFFER> and B<BIO_TYPE_CIPHER>. Filter BIOs should have a
58type which have the "filter" bit set (B<BIO_TYPE_FILTER>). Source/sink BIOs
59should have the "source/sink" bit set (B<BIO_TYPE_SOURCE_SINK>). File descriptor
60based BIOs (e.g. socket, fd, connect, accept etc) should additionally have the
61"descriptor" bit set (B<BIO_TYPE_DESCRIPTOR>). See the L<BIO_find_type> page for
62more information.
63
64BIO_meth_free() destroys a B<BIO_METHOD> structure and frees up any memory
65associated with it.
66
67BIO_meth_get_write() and BIO_meth_set_write() get and set the function used for
68writing arbitrary length data to the BIO respectively. This function will be
69called in response to the application calling BIO_write(). The parameters for
70the function have the same meaning as for BIO_write().
71
72BIO_meth_get_read() and BIO_meth_set_read() get and set the function used for
73reading arbitrary length data from the BIO respectively. This function will be
74called in response to the application calling BIO_read(). The parameters for the
75function have the same meaning as for BIO_read().
76
77BIO_meth_get_puts() and BIO_meth_set_puts() get and set the function used for
78writing a NULL terminated string to the BIO respectively. This function will be
79called in response to the application calling BIO_puts(). The parameters for
80the function have the same meaning as for BIO_puts().
81
82BIO_meth_get_gets() and BIO_meth_set_gets() get and set the function typically
ecba1fb3 83used for reading a line of data from the BIO respectively (see the L<BIO_gets(3)>
85556b4d
MC
84page for more information). This function will be called in response to the
85application calling BIO_gets(). The parameters for the function have the same
86meaning as for BIO_gets().
87
88BIO_meth_get_ctrl() and BIO_meth_set_ctrl() get and set the function used for
89processing ctrl messages in the BIO respectively. See the L<BIO_ctrl> page for
90more information. This function will be called in response to the application
91calling BIO_ctrl(). The parameters for the function have the same meaning as for
92BIO_ctrl().
93
94BIO_meth_get_create() and BIO_meth_set_create() get and set the function used
95for creating a new instance of the BIO respectively. This function will be
9d7bfb14 96called in response to the application calling BIO_new() and passing
85556b4d
MC
97in a pointer to the current BIO_METHOD. The BIO_new() function will allocate the
98memory for the new BIO, and a pointer to this newly allocated structure will
99be passed as a parameter to the function.
100
101BIO_meth_get_destroy() and BIO_meth_set_destroy() get and set the function used
102for destroying an instance of a BIO respectively. This function will be
103called in response to the application calling BIO_free(). A pointer to the BIO
104to be destroyed is passed as a parameter. The destroy function should be used
105for BIO specific clean up. The memory for the BIO itself should not be freed by
106this function.
107
108BIO_meth_get_callback_ctrl() and BIO_meth_set_callback_ctrl() get and set the
109function used for processing callback ctrl messages in the BIO respectively. See
ecba1fb3 110the L<BIO_callback_ctrl(3)> page for more information. This function will be called
85556b4d
MC
111in response to the application calling BIO_callback_ctrl(). The parameters for
112the function have the same meaning as for BIO_callback_ctrl().
113
114=head1 SEE ALSO
115
116L<bio>, L<BIO_find_type>, L<BIO_ctrl>, L<BIO_read>, L<BIO_new>
117
118=head1 HISTORY
119
120The functions described here were added in OpenSSL version 1.1.0.
121
e2f92610
RS
122=head1 COPYRIGHT
123
124Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
125
126Licensed under the OpenSSL license (the "License"). You may not use
127this file except in compliance with the License. You can obtain a copy
128in the file LICENSE in the source distribution or at
129L<https://www.openssl.org/source/license.html>.
130
131=cut