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