motion-openssl 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +53 -0
  3. data/lib/OpenSSL/aes.h +149 -0
  4. data/lib/OpenSSL/asn1.h +1419 -0
  5. data/lib/OpenSSL/asn1_mac.h +579 -0
  6. data/lib/OpenSSL/asn1t.h +973 -0
  7. data/lib/OpenSSL/bio.h +879 -0
  8. data/lib/OpenSSL/blowfish.h +130 -0
  9. data/lib/OpenSSL/bn.h +939 -0
  10. data/lib/OpenSSL/buffer.h +125 -0
  11. data/lib/OpenSSL/camellia.h +132 -0
  12. data/lib/OpenSSL/cast.h +107 -0
  13. data/lib/OpenSSL/cmac.h +82 -0
  14. data/lib/OpenSSL/cms.h +555 -0
  15. data/lib/OpenSSL/comp.h +79 -0
  16. data/lib/OpenSSL/conf.h +267 -0
  17. data/lib/OpenSSL/conf_api.h +89 -0
  18. data/lib/OpenSSL/crypto.h +661 -0
  19. data/lib/OpenSSL/des.h +257 -0
  20. data/lib/OpenSSL/des_old.h +497 -0
  21. data/lib/OpenSSL/dh.h +392 -0
  22. data/lib/OpenSSL/dsa.h +332 -0
  23. data/lib/OpenSSL/dso.h +451 -0
  24. data/lib/OpenSSL/dtls1.h +272 -0
  25. data/lib/OpenSSL/e_os2.h +328 -0
  26. data/lib/OpenSSL/ebcdic.h +26 -0
  27. data/lib/OpenSSL/ec.h +1282 -0
  28. data/lib/OpenSSL/ecdh.h +134 -0
  29. data/lib/OpenSSL/ecdsa.h +335 -0
  30. data/lib/OpenSSL/engine.h +960 -0
  31. data/lib/OpenSSL/err.h +389 -0
  32. data/lib/OpenSSL/evp.h +1534 -0
  33. data/lib/OpenSSL/hmac.h +109 -0
  34. data/lib/OpenSSL/idea.h +105 -0
  35. data/lib/OpenSSL/krb5_asn.h +240 -0
  36. data/lib/OpenSSL/kssl.h +197 -0
  37. data/lib/OpenSSL/lhash.h +240 -0
  38. data/lib/OpenSSL/libcrypto-tvOS.a +0 -0
  39. data/lib/OpenSSL/libcrypto.a +0 -0
  40. data/lib/OpenSSL/libssl-tvOS.a +0 -0
  41. data/lib/OpenSSL/libssl.a +0 -0
  42. data/lib/OpenSSL/md4.h +119 -0
  43. data/lib/OpenSSL/md5.h +119 -0
  44. data/lib/OpenSSL/mdc2.h +94 -0
  45. data/lib/OpenSSL/modes.h +163 -0
  46. data/lib/OpenSSL/obj_mac.h +4194 -0
  47. data/lib/OpenSSL/objects.h +1143 -0
  48. data/lib/OpenSSL/ocsp.h +637 -0
  49. data/lib/OpenSSL/opensslconf.h +262 -0
  50. data/lib/OpenSSL/opensslv.h +97 -0
  51. data/lib/OpenSSL/ossl_typ.h +211 -0
  52. data/lib/OpenSSL/pem.h +615 -0
  53. data/lib/OpenSSL/pem2.h +70 -0
  54. data/lib/OpenSSL/pkcs12.h +342 -0
  55. data/lib/OpenSSL/pkcs7.h +481 -0
  56. data/lib/OpenSSL/pqueue.h +99 -0
  57. data/lib/OpenSSL/rand.h +150 -0
  58. data/lib/OpenSSL/rc2.h +103 -0
  59. data/lib/OpenSSL/rc4.h +88 -0
  60. data/lib/OpenSSL/ripemd.h +105 -0
  61. data/lib/OpenSSL/rsa.h +664 -0
  62. data/lib/OpenSSL/safestack.h +2672 -0
  63. data/lib/OpenSSL/seed.h +149 -0
  64. data/lib/OpenSSL/sha.h +214 -0
  65. data/lib/OpenSSL/srp.h +169 -0
  66. data/lib/OpenSSL/srtp.h +147 -0
  67. data/lib/OpenSSL/ssl.h +3168 -0
  68. data/lib/OpenSSL/ssl2.h +265 -0
  69. data/lib/OpenSSL/ssl23.h +84 -0
  70. data/lib/OpenSSL/ssl3.h +774 -0
  71. data/lib/OpenSSL/stack.h +107 -0
  72. data/lib/OpenSSL/symhacks.h +516 -0
  73. data/lib/OpenSSL/tls1.h +810 -0
  74. data/lib/OpenSSL/ts.h +862 -0
  75. data/lib/OpenSSL/txt_db.h +112 -0
  76. data/lib/OpenSSL/ui.h +415 -0
  77. data/lib/OpenSSL/ui_compat.h +88 -0
  78. data/lib/OpenSSL/whrlpool.h +41 -0
  79. data/lib/OpenSSL/x509.h +1327 -0
  80. data/lib/OpenSSL/x509_vfy.h +647 -0
  81. data/lib/OpenSSL/x509v3.h +1055 -0
  82. data/lib/motion-openssl.rb +8 -0
  83. data/lib/motion-openssl/hooks.rb +8 -0
  84. data/lib/motion-openssl/hooks/openssl.rb +20 -0
  85. data/lib/motion-openssl/version.rb +5 -0
  86. data/motion/openssl.rb +1 -0
  87. data/motion/openssl/random.rb +18 -0
  88. metadata +229 -0
@@ -0,0 +1,879 @@
1
+ /* crypto/bio/bio.h */
2
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3
+ * All rights reserved.
4
+ *
5
+ * This package is an SSL implementation written
6
+ * by Eric Young (eay@cryptsoft.com).
7
+ * The implementation was written so as to conform with Netscapes SSL.
8
+ *
9
+ * This library is free for commercial and non-commercial use as long as
10
+ * the following conditions are aheared to. The following conditions
11
+ * apply to all code found in this distribution, be it the RC4, RSA,
12
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13
+ * included with this distribution is covered by the same copyright terms
14
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15
+ *
16
+ * Copyright remains Eric Young's, and as such any Copyright notices in
17
+ * the code are not to be removed.
18
+ * If this package is used in a product, Eric Young should be given attribution
19
+ * as the author of the parts of the library used.
20
+ * This can be in the form of a textual message at program startup or
21
+ * in documentation (online or textual) provided with the package.
22
+ *
23
+ * Redistribution and use in source and binary forms, with or without
24
+ * modification, are permitted provided that the following conditions
25
+ * are met:
26
+ * 1. Redistributions of source code must retain the copyright
27
+ * notice, this list of conditions and the following disclaimer.
28
+ * 2. Redistributions in binary form must reproduce the above copyright
29
+ * notice, this list of conditions and the following disclaimer in the
30
+ * documentation and/or other materials provided with the distribution.
31
+ * 3. All advertising materials mentioning features or use of this software
32
+ * must display the following acknowledgement:
33
+ * "This product includes cryptographic software written by
34
+ * Eric Young (eay@cryptsoft.com)"
35
+ * The word 'cryptographic' can be left out if the rouines from the library
36
+ * being used are not cryptographic related :-).
37
+ * 4. If you include any Windows specific code (or a derivative thereof) from
38
+ * the apps directory (application code) you must include an acknowledgement:
39
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40
+ *
41
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
+ * SUCH DAMAGE.
52
+ *
53
+ * The licence and distribution terms for any publically available version or
54
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
55
+ * copied and put under another distribution licence
56
+ * [including the GNU Public Licence.]
57
+ */
58
+
59
+ #ifndef HEADER_BIO_H
60
+ # define HEADER_BIO_H
61
+
62
+ # include <openssl/e_os2.h>
63
+
64
+ # ifndef OPENSSL_NO_FP_API
65
+ # include <stdio.h>
66
+ # endif
67
+ # include <stdarg.h>
68
+
69
+ # include <openssl/crypto.h>
70
+
71
+ # ifndef OPENSSL_NO_SCTP
72
+ # ifndef OPENSSL_SYS_VMS
73
+ # include <stdint.h>
74
+ # else
75
+ # include <inttypes.h>
76
+ # endif
77
+ # endif
78
+
79
+ #ifdef __cplusplus
80
+ extern "C" {
81
+ #endif
82
+
83
+ /* These are the 'types' of BIOs */
84
+ # define BIO_TYPE_NONE 0
85
+ # define BIO_TYPE_MEM (1|0x0400)
86
+ # define BIO_TYPE_FILE (2|0x0400)
87
+
88
+ # define BIO_TYPE_FD (4|0x0400|0x0100)
89
+ # define BIO_TYPE_SOCKET (5|0x0400|0x0100)
90
+ # define BIO_TYPE_NULL (6|0x0400)
91
+ # define BIO_TYPE_SSL (7|0x0200)
92
+ # define BIO_TYPE_MD (8|0x0200)/* passive filter */
93
+ # define BIO_TYPE_BUFFER (9|0x0200)/* filter */
94
+ # define BIO_TYPE_CIPHER (10|0x0200)/* filter */
95
+ # define BIO_TYPE_BASE64 (11|0x0200)/* filter */
96
+ # define BIO_TYPE_CONNECT (12|0x0400|0x0100)/* socket - connect */
97
+ # define BIO_TYPE_ACCEPT (13|0x0400|0x0100)/* socket for accept */
98
+ # define BIO_TYPE_PROXY_CLIENT (14|0x0200)/* client proxy BIO */
99
+ # define BIO_TYPE_PROXY_SERVER (15|0x0200)/* server proxy BIO */
100
+ # define BIO_TYPE_NBIO_TEST (16|0x0200)/* server proxy BIO */
101
+ # define BIO_TYPE_NULL_FILTER (17|0x0200)
102
+ # define BIO_TYPE_BER (18|0x0200)/* BER -> bin filter */
103
+ # define BIO_TYPE_BIO (19|0x0400)/* (half a) BIO pair */
104
+ # define BIO_TYPE_LINEBUFFER (20|0x0200)/* filter */
105
+ # define BIO_TYPE_DGRAM (21|0x0400|0x0100)
106
+ # ifndef OPENSSL_NO_SCTP
107
+ # define BIO_TYPE_DGRAM_SCTP (24|0x0400|0x0100)
108
+ # endif
109
+ # define BIO_TYPE_ASN1 (22|0x0200)/* filter */
110
+ # define BIO_TYPE_COMP (23|0x0200)/* filter */
111
+
112
+ # define BIO_TYPE_DESCRIPTOR 0x0100/* socket, fd, connect or accept */
113
+ # define BIO_TYPE_FILTER 0x0200
114
+ # define BIO_TYPE_SOURCE_SINK 0x0400
115
+
116
+ /*
117
+ * BIO_FILENAME_READ|BIO_CLOSE to open or close on free.
118
+ * BIO_set_fp(in,stdin,BIO_NOCLOSE);
119
+ */
120
+ # define BIO_NOCLOSE 0x00
121
+ # define BIO_CLOSE 0x01
122
+
123
+ /*
124
+ * These are used in the following macros and are passed to BIO_ctrl()
125
+ */
126
+ # define BIO_CTRL_RESET 1/* opt - rewind/zero etc */
127
+ # define BIO_CTRL_EOF 2/* opt - are we at the eof */
128
+ # define BIO_CTRL_INFO 3/* opt - extra tit-bits */
129
+ # define BIO_CTRL_SET 4/* man - set the 'IO' type */
130
+ # define BIO_CTRL_GET 5/* man - get the 'IO' type */
131
+ # define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */
132
+ # define BIO_CTRL_POP 7/* opt - internal, used to signify change */
133
+ # define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */
134
+ # define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */
135
+ # define BIO_CTRL_PENDING 10/* opt - is their more data buffered */
136
+ # define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */
137
+ # define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */
138
+ # define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */
139
+ /* callback is int cb(BIO *bio,state,ret); */
140
+ # define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */
141
+ # define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */
142
+
143
+ # define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */
144
+
145
+ /* dgram BIO stuff */
146
+ # define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */
147
+ # define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected
148
+ * socket to be passed in */
149
+ # define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */
150
+ # define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */
151
+ # define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */
152
+ # define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */
153
+
154
+ # define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */
155
+ # define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation tiemd out */
156
+
157
+ /* #ifdef IP_MTU_DISCOVER */
158
+ # define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */
159
+ /* #endif */
160
+
161
+ # define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */
162
+ # define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47
163
+ # define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */
164
+ # define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU.
165
+ * want to use this if asking
166
+ * the kernel fails */
167
+
168
+ # define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was
169
+ * exceed in the previous write
170
+ * operation */
171
+
172
+ # define BIO_CTRL_DGRAM_GET_PEER 46
173
+ # define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */
174
+
175
+ # define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout
176
+ * to adjust socket timeouts */
177
+ # define BIO_CTRL_DGRAM_SET_DONT_FRAG 48
178
+
179
+ # define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49
180
+
181
+ # ifndef OPENSSL_NO_SCTP
182
+ /* SCTP stuff */
183
+ # define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50
184
+ # define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51
185
+ # define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52
186
+ # define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53
187
+ # define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60
188
+ # define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61
189
+ # define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62
190
+ # define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63
191
+ # define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64
192
+ # define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65
193
+ # define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70
194
+ # endif
195
+
196
+ /* modifiers */
197
+ # define BIO_FP_READ 0x02
198
+ # define BIO_FP_WRITE 0x04
199
+ # define BIO_FP_APPEND 0x08
200
+ # define BIO_FP_TEXT 0x10
201
+
202
+ # define BIO_FLAGS_READ 0x01
203
+ # define BIO_FLAGS_WRITE 0x02
204
+ # define BIO_FLAGS_IO_SPECIAL 0x04
205
+ # define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL)
206
+ # define BIO_FLAGS_SHOULD_RETRY 0x08
207
+ # ifndef BIO_FLAGS_UPLINK
208
+ /*
209
+ * "UPLINK" flag denotes file descriptors provided by application. It
210
+ * defaults to 0, as most platforms don't require UPLINK interface.
211
+ */
212
+ # define BIO_FLAGS_UPLINK 0
213
+ # endif
214
+
215
+ /* Used in BIO_gethostbyname() */
216
+ # define BIO_GHBN_CTRL_HITS 1
217
+ # define BIO_GHBN_CTRL_MISSES 2
218
+ # define BIO_GHBN_CTRL_CACHE_SIZE 3
219
+ # define BIO_GHBN_CTRL_GET_ENTRY 4
220
+ # define BIO_GHBN_CTRL_FLUSH 5
221
+
222
+ /* Mostly used in the SSL BIO */
223
+ /*-
224
+ * Not used anymore
225
+ * #define BIO_FLAGS_PROTOCOL_DELAYED_READ 0x10
226
+ * #define BIO_FLAGS_PROTOCOL_DELAYED_WRITE 0x20
227
+ * #define BIO_FLAGS_PROTOCOL_STARTUP 0x40
228
+ */
229
+
230
+ # define BIO_FLAGS_BASE64_NO_NL 0x100
231
+
232
+ /*
233
+ * This is used with memory BIOs: it means we shouldn't free up or change the
234
+ * data in any way.
235
+ */
236
+ # define BIO_FLAGS_MEM_RDONLY 0x200
237
+
238
+ typedef struct bio_st BIO;
239
+
240
+ void BIO_set_flags(BIO *b, int flags);
241
+ int BIO_test_flags(const BIO *b, int flags);
242
+ void BIO_clear_flags(BIO *b, int flags);
243
+
244
+ # define BIO_get_flags(b) BIO_test_flags(b, ~(0x0))
245
+ # define BIO_set_retry_special(b) \
246
+ BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY))
247
+ # define BIO_set_retry_read(b) \
248
+ BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY))
249
+ # define BIO_set_retry_write(b) \
250
+ BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY))
251
+
252
+ /* These are normally used internally in BIOs */
253
+ # define BIO_clear_retry_flags(b) \
254
+ BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
255
+ # define BIO_get_retry_flags(b) \
256
+ BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
257
+
258
+ /* These should be used by the application to tell why we should retry */
259
+ # define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ)
260
+ # define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE)
261
+ # define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL)
262
+ # define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS)
263
+ # define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY)
264
+
265
+ /*
266
+ * The next three are used in conjunction with the BIO_should_io_special()
267
+ * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int
268
+ * *reason); will walk the BIO stack and return the 'reason' for the special
269
+ * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return
270
+ * the code.
271
+ */
272
+ /*
273
+ * Returned from the SSL bio when the certificate retrieval code had an error
274
+ */
275
+ # define BIO_RR_SSL_X509_LOOKUP 0x01
276
+ /* Returned from the connect BIO when a connect would have blocked */
277
+ # define BIO_RR_CONNECT 0x02
278
+ /* Returned from the accept BIO when an accept would have blocked */
279
+ # define BIO_RR_ACCEPT 0x03
280
+
281
+ /* These are passed by the BIO callback */
282
+ # define BIO_CB_FREE 0x01
283
+ # define BIO_CB_READ 0x02
284
+ # define BIO_CB_WRITE 0x03
285
+ # define BIO_CB_PUTS 0x04
286
+ # define BIO_CB_GETS 0x05
287
+ # define BIO_CB_CTRL 0x06
288
+
289
+ /*
290
+ * The callback is called before and after the underling operation, The
291
+ * BIO_CB_RETURN flag indicates if it is after the call
292
+ */
293
+ # define BIO_CB_RETURN 0x80
294
+ # define BIO_CB_return(a) ((a)|BIO_CB_RETURN)
295
+ # define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN))
296
+ # define BIO_cb_post(a) ((a)&BIO_CB_RETURN)
297
+
298
+ long (*BIO_get_callback(const BIO *b)) (struct bio_st *, int, const char *,
299
+ int, long, long);
300
+ void BIO_set_callback(BIO *b,
301
+ long (*callback) (struct bio_st *, int, const char *,
302
+ int, long, long));
303
+ char *BIO_get_callback_arg(const BIO *b);
304
+ void BIO_set_callback_arg(BIO *b, char *arg);
305
+
306
+ const char *BIO_method_name(const BIO *b);
307
+ int BIO_method_type(const BIO *b);
308
+
309
+ typedef void bio_info_cb (struct bio_st *, int, const char *, int, long,
310
+ long);
311
+
312
+ typedef struct bio_method_st {
313
+ int type;
314
+ const char *name;
315
+ int (*bwrite) (BIO *, const char *, int);
316
+ int (*bread) (BIO *, char *, int);
317
+ int (*bputs) (BIO *, const char *);
318
+ int (*bgets) (BIO *, char *, int);
319
+ long (*ctrl) (BIO *, int, long, void *);
320
+ int (*create) (BIO *);
321
+ int (*destroy) (BIO *);
322
+ long (*callback_ctrl) (BIO *, int, bio_info_cb *);
323
+ } BIO_METHOD;
324
+
325
+ struct bio_st {
326
+ BIO_METHOD *method;
327
+ /* bio, mode, argp, argi, argl, ret */
328
+ long (*callback) (struct bio_st *, int, const char *, int, long, long);
329
+ char *cb_arg; /* first argument for the callback */
330
+ int init;
331
+ int shutdown;
332
+ int flags; /* extra storage */
333
+ int retry_reason;
334
+ int num;
335
+ void *ptr;
336
+ struct bio_st *next_bio; /* used by filter BIOs */
337
+ struct bio_st *prev_bio; /* used by filter BIOs */
338
+ int references;
339
+ unsigned long num_read;
340
+ unsigned long num_write;
341
+ CRYPTO_EX_DATA ex_data;
342
+ };
343
+
344
+ DECLARE_STACK_OF(BIO)
345
+
346
+ typedef struct bio_f_buffer_ctx_struct {
347
+ /*-
348
+ * Buffers are setup like this:
349
+ *
350
+ * <---------------------- size ----------------------->
351
+ * +---------------------------------------------------+
352
+ * | consumed | remaining | free space |
353
+ * +---------------------------------------------------+
354
+ * <-- off --><------- len ------->
355
+ */
356
+ /*- BIO *bio; *//*
357
+ * this is now in the BIO struct
358
+ */
359
+ int ibuf_size; /* how big is the input buffer */
360
+ int obuf_size; /* how big is the output buffer */
361
+ char *ibuf; /* the char array */
362
+ int ibuf_len; /* how many bytes are in it */
363
+ int ibuf_off; /* write/read offset */
364
+ char *obuf; /* the char array */
365
+ int obuf_len; /* how many bytes are in it */
366
+ int obuf_off; /* write/read offset */
367
+ } BIO_F_BUFFER_CTX;
368
+
369
+ /* Prefix and suffix callback in ASN1 BIO */
370
+ typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen,
371
+ void *parg);
372
+
373
+ # ifndef OPENSSL_NO_SCTP
374
+ /* SCTP parameter structs */
375
+ struct bio_dgram_sctp_sndinfo {
376
+ uint16_t snd_sid;
377
+ uint16_t snd_flags;
378
+ uint32_t snd_ppid;
379
+ uint32_t snd_context;
380
+ };
381
+
382
+ struct bio_dgram_sctp_rcvinfo {
383
+ uint16_t rcv_sid;
384
+ uint16_t rcv_ssn;
385
+ uint16_t rcv_flags;
386
+ uint32_t rcv_ppid;
387
+ uint32_t rcv_tsn;
388
+ uint32_t rcv_cumtsn;
389
+ uint32_t rcv_context;
390
+ };
391
+
392
+ struct bio_dgram_sctp_prinfo {
393
+ uint16_t pr_policy;
394
+ uint32_t pr_value;
395
+ };
396
+ # endif
397
+
398
+ /* connect BIO stuff */
399
+ # define BIO_CONN_S_BEFORE 1
400
+ # define BIO_CONN_S_GET_IP 2
401
+ # define BIO_CONN_S_GET_PORT 3
402
+ # define BIO_CONN_S_CREATE_SOCKET 4
403
+ # define BIO_CONN_S_CONNECT 5
404
+ # define BIO_CONN_S_OK 6
405
+ # define BIO_CONN_S_BLOCKED_CONNECT 7
406
+ # define BIO_CONN_S_NBIO 8
407
+ /*
408
+ * #define BIO_CONN_get_param_hostname BIO_ctrl
409
+ */
410
+
411
+ # define BIO_C_SET_CONNECT 100
412
+ # define BIO_C_DO_STATE_MACHINE 101
413
+ # define BIO_C_SET_NBIO 102
414
+ # define BIO_C_SET_PROXY_PARAM 103
415
+ # define BIO_C_SET_FD 104
416
+ # define BIO_C_GET_FD 105
417
+ # define BIO_C_SET_FILE_PTR 106
418
+ # define BIO_C_GET_FILE_PTR 107
419
+ # define BIO_C_SET_FILENAME 108
420
+ # define BIO_C_SET_SSL 109
421
+ # define BIO_C_GET_SSL 110
422
+ # define BIO_C_SET_MD 111
423
+ # define BIO_C_GET_MD 112
424
+ # define BIO_C_GET_CIPHER_STATUS 113
425
+ # define BIO_C_SET_BUF_MEM 114
426
+ # define BIO_C_GET_BUF_MEM_PTR 115
427
+ # define BIO_C_GET_BUFF_NUM_LINES 116
428
+ # define BIO_C_SET_BUFF_SIZE 117
429
+ # define BIO_C_SET_ACCEPT 118
430
+ # define BIO_C_SSL_MODE 119
431
+ # define BIO_C_GET_MD_CTX 120
432
+ # define BIO_C_GET_PROXY_PARAM 121
433
+ # define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */
434
+ # define BIO_C_GET_CONNECT 123
435
+ # define BIO_C_GET_ACCEPT 124
436
+ # define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125
437
+ # define BIO_C_GET_SSL_NUM_RENEGOTIATES 126
438
+ # define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127
439
+ # define BIO_C_FILE_SEEK 128
440
+ # define BIO_C_GET_CIPHER_CTX 129
441
+ # define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input
442
+ * value */
443
+ # define BIO_C_SET_BIND_MODE 131
444
+ # define BIO_C_GET_BIND_MODE 132
445
+ # define BIO_C_FILE_TELL 133
446
+ # define BIO_C_GET_SOCKS 134
447
+ # define BIO_C_SET_SOCKS 135
448
+
449
+ # define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */
450
+ # define BIO_C_GET_WRITE_BUF_SIZE 137
451
+ # define BIO_C_MAKE_BIO_PAIR 138
452
+ # define BIO_C_DESTROY_BIO_PAIR 139
453
+ # define BIO_C_GET_WRITE_GUARANTEE 140
454
+ # define BIO_C_GET_READ_REQUEST 141
455
+ # define BIO_C_SHUTDOWN_WR 142
456
+ # define BIO_C_NREAD0 143
457
+ # define BIO_C_NREAD 144
458
+ # define BIO_C_NWRITE0 145
459
+ # define BIO_C_NWRITE 146
460
+ # define BIO_C_RESET_READ_REQUEST 147
461
+ # define BIO_C_SET_MD_CTX 148
462
+
463
+ # define BIO_C_SET_PREFIX 149
464
+ # define BIO_C_GET_PREFIX 150
465
+ # define BIO_C_SET_SUFFIX 151
466
+ # define BIO_C_GET_SUFFIX 152
467
+
468
+ # define BIO_C_SET_EX_ARG 153
469
+ # define BIO_C_GET_EX_ARG 154
470
+
471
+ # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg)
472
+ # define BIO_get_app_data(s) BIO_get_ex_data(s,0)
473
+
474
+ /* BIO_s_connect() and BIO_s_socks4a_connect() */
475
+ # define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)name)
476
+ # define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port)
477
+ # define BIO_set_conn_ip(b,ip) BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)ip)
478
+ # define BIO_set_conn_int_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,3,(char *)port)
479
+ # define BIO_get_conn_hostname(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)
480
+ # define BIO_get_conn_port(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)
481
+ # define BIO_get_conn_ip(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)
482
+ # define BIO_get_conn_int_port(b) BIO_int_ctrl(b,BIO_C_GET_CONNECT,3,0)
483
+
484
+ # define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)
485
+
486
+ /* BIO_s_accept_socket() */
487
+ # define BIO_set_accept_port(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0,(char *)name)
488
+ # define BIO_get_accept_port(b) BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0)
489
+ /* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */
490
+ # define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,1,(n)?(void *)"a":NULL)
491
+ # define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(char *)bio)
492
+
493
+ # define BIO_BIND_NORMAL 0
494
+ # define BIO_BIND_REUSEADDR_IF_UNUSED 1
495
+ # define BIO_BIND_REUSEADDR 2
496
+ # define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL)
497
+ # define BIO_get_bind_mode(b,mode) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL)
498
+
499
+ # define BIO_do_connect(b) BIO_do_handshake(b)
500
+ # define BIO_do_accept(b) BIO_do_handshake(b)
501
+ # define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL)
502
+
503
+ /* BIO_s_proxy_client() */
504
+ # define BIO_set_url(b,url) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,0,(char *)(url))
505
+ # define BIO_set_proxies(b,p) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,1,(char *)(p))
506
+ /* BIO_set_nbio(b,n) */
507
+ # define BIO_set_filter_bio(b,s) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,2,(char *)(s))
508
+ /* BIO *BIO_get_filter_bio(BIO *bio); */
509
+ # define BIO_set_proxy_cb(b,cb) BIO_callback_ctrl(b,BIO_C_SET_PROXY_PARAM,3,(void *(*cb)()))
510
+ # define BIO_set_proxy_header(b,sk) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,4,(char *)sk)
511
+ # define BIO_set_no_connect_return(b,bool) BIO_int_ctrl(b,BIO_C_SET_PROXY_PARAM,5,bool)
512
+
513
+ # define BIO_get_proxy_header(b,skp) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,0,(char *)skp)
514
+ # define BIO_get_proxies(b,pxy_p) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,1,(char *)(pxy_p))
515
+ # define BIO_get_url(b,url) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,2,(char *)(url))
516
+ # define BIO_get_no_connect_return(b) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,5,NULL)
517
+
518
+ # define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd)
519
+ # define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c)
520
+
521
+ # define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)fp)
522
+ # define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)fpp)
523
+
524
+ # define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL)
525
+ # define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL)
526
+
527
+ /*
528
+ * name is cast to lose const, but might be better to route through a
529
+ * function so we can do it safely
530
+ */
531
+ # ifdef CONST_STRICT
532
+ /*
533
+ * If you are wondering why this isn't defined, its because CONST_STRICT is
534
+ * purely a compile-time kludge to allow const to be checked.
535
+ */
536
+ int BIO_read_filename(BIO *b, const char *name);
537
+ # else
538
+ # define BIO_read_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
539
+ BIO_CLOSE|BIO_FP_READ,(char *)name)
540
+ # endif
541
+ # define BIO_write_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
542
+ BIO_CLOSE|BIO_FP_WRITE,name)
543
+ # define BIO_append_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
544
+ BIO_CLOSE|BIO_FP_APPEND,name)
545
+ # define BIO_rw_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
546
+ BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name)
547
+
548
+ /*
549
+ * WARNING WARNING, this ups the reference count on the read bio of the SSL
550
+ * structure. This is because the ssl read BIO is now pointed to by the
551
+ * next_bio field in the bio. So when you free the BIO, make sure you are
552
+ * doing a BIO_free_all() to catch the underlying BIO.
553
+ */
554
+ # define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)ssl)
555
+ # define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp)
556
+ # define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL)
557
+ # define BIO_set_ssl_renegotiate_bytes(b,num) \
558
+ BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL);
559
+ # define BIO_get_num_renegotiates(b) \
560
+ BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL);
561
+ # define BIO_set_ssl_renegotiate_timeout(b,seconds) \
562
+ BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL);
563
+
564
+ /* defined in evp.h */
565
+ /* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)md) */
566
+
567
+ # define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp)
568
+ # define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)bm)
569
+ # define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0,(char *)pp)
570
+ # define BIO_set_mem_eof_return(b,v) \
571
+ BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL)
572
+
573
+ /* For the BIO_f_buffer() type */
574
+ # define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL)
575
+ # define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL)
576
+ # define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0)
577
+ # define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1)
578
+ # define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf)
579
+
580
+ /* Don't use the next one unless you know what you are doing :-) */
581
+ # define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret))
582
+
583
+ # define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL)
584
+ # define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL)
585
+ # define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL)
586
+ # define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL)
587
+ # define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL)
588
+ # define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL)
589
+ /* ...pending macros have inappropriate return type */
590
+ size_t BIO_ctrl_pending(BIO *b);
591
+ size_t BIO_ctrl_wpending(BIO *b);
592
+ # define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL)
593
+ # define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \
594
+ cbp)
595
+ # define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb)
596
+
597
+ /* For the BIO_f_buffer() type */
598
+ # define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL)
599
+
600
+ /* For BIO_s_bio() */
601
+ # define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL)
602
+ # define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL)
603
+ # define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2)
604
+ # define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL)
605
+ # define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL)
606
+ /* macros with inappropriate type -- but ...pending macros use int too: */
607
+ # define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL)
608
+ # define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL)
609
+ size_t BIO_ctrl_get_write_guarantee(BIO *b);
610
+ size_t BIO_ctrl_get_read_request(BIO *b);
611
+ int BIO_ctrl_reset_read_request(BIO *b);
612
+
613
+ /* ctrl macros for dgram */
614
+ # define BIO_ctrl_dgram_connect(b,peer) \
615
+ (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)peer)
616
+ # define BIO_ctrl_set_connected(b, state, peer) \
617
+ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, state, (char *)peer)
618
+ # define BIO_dgram_recv_timedout(b) \
619
+ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL)
620
+ # define BIO_dgram_send_timedout(b) \
621
+ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL)
622
+ # define BIO_dgram_get_peer(b,peer) \
623
+ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)peer)
624
+ # define BIO_dgram_set_peer(b,peer) \
625
+ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)peer)
626
+ # define BIO_dgram_get_mtu_overhead(b) \
627
+ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL)
628
+
629
+ /* These two aren't currently implemented */
630
+ /* int BIO_get_ex_num(BIO *bio); */
631
+ /* void BIO_set_ex_free_func(BIO *bio,int idx,void (*cb)()); */
632
+ int BIO_set_ex_data(BIO *bio, int idx, void *data);
633
+ void *BIO_get_ex_data(BIO *bio, int idx);
634
+ int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
635
+ CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
636
+ unsigned long BIO_number_read(BIO *bio);
637
+ unsigned long BIO_number_written(BIO *bio);
638
+
639
+ /* For BIO_f_asn1() */
640
+ int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix,
641
+ asn1_ps_func *prefix_free);
642
+ int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix,
643
+ asn1_ps_func **pprefix_free);
644
+ int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix,
645
+ asn1_ps_func *suffix_free);
646
+ int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix,
647
+ asn1_ps_func **psuffix_free);
648
+
649
+ # ifndef OPENSSL_NO_FP_API
650
+ BIO_METHOD *BIO_s_file(void);
651
+ BIO *BIO_new_file(const char *filename, const char *mode);
652
+ BIO *BIO_new_fp(FILE *stream, int close_flag);
653
+ # define BIO_s_file_internal BIO_s_file
654
+ # endif
655
+ BIO *BIO_new(BIO_METHOD *type);
656
+ int BIO_set(BIO *a, BIO_METHOD *type);
657
+ int BIO_free(BIO *a);
658
+ void BIO_vfree(BIO *a);
659
+ int BIO_read(BIO *b, void *data, int len);
660
+ int BIO_gets(BIO *bp, char *buf, int size);
661
+ int BIO_write(BIO *b, const void *data, int len);
662
+ int BIO_puts(BIO *bp, const char *buf);
663
+ int BIO_indent(BIO *b, int indent, int max);
664
+ long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg);
665
+ long BIO_callback_ctrl(BIO *b, int cmd,
666
+ void (*fp) (struct bio_st *, int, const char *, int,
667
+ long, long));
668
+ char *BIO_ptr_ctrl(BIO *bp, int cmd, long larg);
669
+ long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg);
670
+ BIO *BIO_push(BIO *b, BIO *append);
671
+ BIO *BIO_pop(BIO *b);
672
+ void BIO_free_all(BIO *a);
673
+ BIO *BIO_find_type(BIO *b, int bio_type);
674
+ BIO *BIO_next(BIO *b);
675
+ BIO *BIO_get_retry_BIO(BIO *bio, int *reason);
676
+ int BIO_get_retry_reason(BIO *bio);
677
+ BIO *BIO_dup_chain(BIO *in);
678
+
679
+ int BIO_nread0(BIO *bio, char **buf);
680
+ int BIO_nread(BIO *bio, char **buf, int num);
681
+ int BIO_nwrite0(BIO *bio, char **buf);
682
+ int BIO_nwrite(BIO *bio, char **buf, int num);
683
+
684
+ long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi,
685
+ long argl, long ret);
686
+
687
+ BIO_METHOD *BIO_s_mem(void);
688
+ BIO *BIO_new_mem_buf(void *buf, int len);
689
+ BIO_METHOD *BIO_s_socket(void);
690
+ BIO_METHOD *BIO_s_connect(void);
691
+ BIO_METHOD *BIO_s_accept(void);
692
+ BIO_METHOD *BIO_s_fd(void);
693
+ # ifndef OPENSSL_SYS_OS2
694
+ BIO_METHOD *BIO_s_log(void);
695
+ # endif
696
+ BIO_METHOD *BIO_s_bio(void);
697
+ BIO_METHOD *BIO_s_null(void);
698
+ BIO_METHOD *BIO_f_null(void);
699
+ BIO_METHOD *BIO_f_buffer(void);
700
+ # ifdef OPENSSL_SYS_VMS
701
+ BIO_METHOD *BIO_f_linebuffer(void);
702
+ # endif
703
+ BIO_METHOD *BIO_f_nbio_test(void);
704
+ # ifndef OPENSSL_NO_DGRAM
705
+ BIO_METHOD *BIO_s_datagram(void);
706
+ # ifndef OPENSSL_NO_SCTP
707
+ BIO_METHOD *BIO_s_datagram_sctp(void);
708
+ # endif
709
+ # endif
710
+
711
+ /* BIO_METHOD *BIO_f_ber(void); */
712
+
713
+ int BIO_sock_should_retry(int i);
714
+ int BIO_sock_non_fatal_error(int error);
715
+ int BIO_dgram_non_fatal_error(int error);
716
+
717
+ int BIO_fd_should_retry(int i);
718
+ int BIO_fd_non_fatal_error(int error);
719
+ int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u),
720
+ void *u, const char *s, int len);
721
+ int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u),
722
+ void *u, const char *s, int len, int indent);
723
+ int BIO_dump(BIO *b, const char *bytes, int len);
724
+ int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent);
725
+ # ifndef OPENSSL_NO_FP_API
726
+ int BIO_dump_fp(FILE *fp, const char *s, int len);
727
+ int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent);
728
+ # endif
729
+ int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data,
730
+ int datalen);
731
+
732
+ struct hostent *BIO_gethostbyname(const char *name);
733
+ /*-
734
+ * We might want a thread-safe interface too:
735
+ * struct hostent *BIO_gethostbyname_r(const char *name,
736
+ * struct hostent *result, void *buffer, size_t buflen);
737
+ * or something similar (caller allocates a struct hostent,
738
+ * pointed to by "result", and additional buffer space for the various
739
+ * substructures; if the buffer does not suffice, NULL is returned
740
+ * and an appropriate error code is set).
741
+ */
742
+ int BIO_sock_error(int sock);
743
+ int BIO_socket_ioctl(int fd, long type, void *arg);
744
+ int BIO_socket_nbio(int fd, int mode);
745
+ int BIO_get_port(const char *str, unsigned short *port_ptr);
746
+ int BIO_get_host_ip(const char *str, unsigned char *ip);
747
+ int BIO_get_accept_socket(char *host_port, int mode);
748
+ int BIO_accept(int sock, char **ip_port);
749
+ int BIO_sock_init(void);
750
+ void BIO_sock_cleanup(void);
751
+ int BIO_set_tcp_ndelay(int sock, int turn_on);
752
+
753
+ BIO *BIO_new_socket(int sock, int close_flag);
754
+ BIO *BIO_new_dgram(int fd, int close_flag);
755
+ # ifndef OPENSSL_NO_SCTP
756
+ BIO *BIO_new_dgram_sctp(int fd, int close_flag);
757
+ int BIO_dgram_is_sctp(BIO *bio);
758
+ int BIO_dgram_sctp_notification_cb(BIO *b,
759
+ void (*handle_notifications) (BIO *bio,
760
+ void
761
+ *context,
762
+ void *buf),
763
+ void *context);
764
+ int BIO_dgram_sctp_wait_for_dry(BIO *b);
765
+ int BIO_dgram_sctp_msg_waiting(BIO *b);
766
+ # endif
767
+ BIO *BIO_new_fd(int fd, int close_flag);
768
+ BIO *BIO_new_connect(const char *host_port);
769
+ BIO *BIO_new_accept(const char *host_port);
770
+
771
+ int BIO_new_bio_pair(BIO **bio1, size_t writebuf1,
772
+ BIO **bio2, size_t writebuf2);
773
+ /*
774
+ * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints.
775
+ * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default
776
+ * value.
777
+ */
778
+
779
+ void BIO_copy_next_retry(BIO *b);
780
+
781
+ /*
782
+ * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg);
783
+ */
784
+
785
+ # ifdef __GNUC__
786
+ # define __bio_h__attr__ __attribute__
787
+ # else
788
+ # define __bio_h__attr__(x)
789
+ # endif
790
+ int BIO_printf(BIO *bio, const char *format, ...)
791
+ __bio_h__attr__((__format__(__printf__, 2, 3)));
792
+ int BIO_vprintf(BIO *bio, const char *format, va_list args)
793
+ __bio_h__attr__((__format__(__printf__, 2, 0)));
794
+ int BIO_snprintf(char *buf, size_t n, const char *format, ...)
795
+ __bio_h__attr__((__format__(__printf__, 3, 4)));
796
+ int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
797
+ __bio_h__attr__((__format__(__printf__, 3, 0)));
798
+ # undef __bio_h__attr__
799
+
800
+ /* BEGIN ERROR CODES */
801
+ /*
802
+ * The following lines are auto generated by the script mkerr.pl. Any changes
803
+ * made after this point may be overwritten when the script is next run.
804
+ */
805
+ void ERR_load_BIO_strings(void);
806
+
807
+ /* Error codes for the BIO functions. */
808
+
809
+ /* Function codes. */
810
+ # define BIO_F_ACPT_STATE 100
811
+ # define BIO_F_BIO_ACCEPT 101
812
+ # define BIO_F_BIO_BER_GET_HEADER 102
813
+ # define BIO_F_BIO_CALLBACK_CTRL 131
814
+ # define BIO_F_BIO_CTRL 103
815
+ # define BIO_F_BIO_GETHOSTBYNAME 120
816
+ # define BIO_F_BIO_GETS 104
817
+ # define BIO_F_BIO_GET_ACCEPT_SOCKET 105
818
+ # define BIO_F_BIO_GET_HOST_IP 106
819
+ # define BIO_F_BIO_GET_PORT 107
820
+ # define BIO_F_BIO_MAKE_PAIR 121
821
+ # define BIO_F_BIO_NEW 108
822
+ # define BIO_F_BIO_NEW_FILE 109
823
+ # define BIO_F_BIO_NEW_MEM_BUF 126
824
+ # define BIO_F_BIO_NREAD 123
825
+ # define BIO_F_BIO_NREAD0 124
826
+ # define BIO_F_BIO_NWRITE 125
827
+ # define BIO_F_BIO_NWRITE0 122
828
+ # define BIO_F_BIO_PUTS 110
829
+ # define BIO_F_BIO_READ 111
830
+ # define BIO_F_BIO_SOCK_INIT 112
831
+ # define BIO_F_BIO_WRITE 113
832
+ # define BIO_F_BUFFER_CTRL 114
833
+ # define BIO_F_CONN_CTRL 127
834
+ # define BIO_F_CONN_STATE 115
835
+ # define BIO_F_DGRAM_SCTP_READ 132
836
+ # define BIO_F_DGRAM_SCTP_WRITE 133
837
+ # define BIO_F_FILE_CTRL 116
838
+ # define BIO_F_FILE_READ 130
839
+ # define BIO_F_LINEBUFFER_CTRL 129
840
+ # define BIO_F_MEM_READ 128
841
+ # define BIO_F_MEM_WRITE 117
842
+ # define BIO_F_SSL_NEW 118
843
+ # define BIO_F_WSASTARTUP 119
844
+
845
+ /* Reason codes. */
846
+ # define BIO_R_ACCEPT_ERROR 100
847
+ # define BIO_R_BAD_FOPEN_MODE 101
848
+ # define BIO_R_BAD_HOSTNAME_LOOKUP 102
849
+ # define BIO_R_BROKEN_PIPE 124
850
+ # define BIO_R_CONNECT_ERROR 103
851
+ # define BIO_R_EOF_ON_MEMORY_BIO 127
852
+ # define BIO_R_ERROR_SETTING_NBIO 104
853
+ # define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPTED_SOCKET 105
854
+ # define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET 106
855
+ # define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107
856
+ # define BIO_R_INVALID_ARGUMENT 125
857
+ # define BIO_R_INVALID_IP_ADDRESS 108
858
+ # define BIO_R_IN_USE 123
859
+ # define BIO_R_KEEPALIVE 109
860
+ # define BIO_R_NBIO_CONNECT_ERROR 110
861
+ # define BIO_R_NO_ACCEPT_PORT_SPECIFIED 111
862
+ # define BIO_R_NO_HOSTNAME_SPECIFIED 112
863
+ # define BIO_R_NO_PORT_DEFINED 113
864
+ # define BIO_R_NO_PORT_SPECIFIED 114
865
+ # define BIO_R_NO_SUCH_FILE 128
866
+ # define BIO_R_NULL_PARAMETER 115
867
+ # define BIO_R_TAG_MISMATCH 116
868
+ # define BIO_R_UNABLE_TO_BIND_SOCKET 117
869
+ # define BIO_R_UNABLE_TO_CREATE_SOCKET 118
870
+ # define BIO_R_UNABLE_TO_LISTEN_SOCKET 119
871
+ # define BIO_R_UNINITIALIZED 120
872
+ # define BIO_R_UNSUPPORTED_METHOD 121
873
+ # define BIO_R_WRITE_TO_READ_ONLY_BIO 126
874
+ # define BIO_R_WSASTARTUP 122
875
+
876
+ #ifdef __cplusplus
877
+ }
878
+ #endif
879
+ #endif