licentivo-launch 0.1.1

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 (143) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +35 -0
  4. data/ext/launch_native/extconf.rb +28 -0
  5. data/lib/licentivo_launch/vendor/licentivo.rb +262 -0
  6. data/lib/licentivo_launch.rb +352 -0
  7. data/vendor/LICENSE +21 -0
  8. data/vendor/NOTICE +17 -0
  9. data/vendor/VERSION +1 -0
  10. data/vendor/c/app.c +33 -0
  11. data/vendor/c/demo.c +77 -0
  12. data/vendor/c/feature_tasks.h +72 -0
  13. data/vendor/c/licentivo.c +382 -0
  14. data/vendor/c/licentivo.h +67 -0
  15. data/vendor/c/quickstart.c +51 -0
  16. data/vendor/c/test_vectors.c +4 -0
  17. data/vendor/c/vendor/Monocypher-LICENCE.md +173 -0
  18. data/vendor/c/vendor/cJSON-LICENSE +20 -0
  19. data/vendor/c/vendor/cJSON.c +3191 -0
  20. data/vendor/c/vendor/cJSON.h +306 -0
  21. data/vendor/c/vendor/monocypher-ed25519.c +500 -0
  22. data/vendor/c/vendor/monocypher-ed25519.h +140 -0
  23. data/vendor/c/vendor/monocypher.c +2956 -0
  24. data/vendor/c/vendor/monocypher.h +321 -0
  25. data/vendor/curl/COPYING.txt +22 -0
  26. data/vendor/curl/bin/libcurl-x64.dll +0 -0
  27. data/vendor/curl/include/brotli/decode.h +409 -0
  28. data/vendor/curl/include/brotli/encode.h +505 -0
  29. data/vendor/curl/include/brotli/port.h +302 -0
  30. data/vendor/curl/include/brotli/shared_dictionary.h +100 -0
  31. data/vendor/curl/include/brotli/types.h +83 -0
  32. data/vendor/curl/include/curl/curl.h +3374 -0
  33. data/vendor/curl/include/curl/curlver.h +77 -0
  34. data/vendor/curl/include/curl/easy.h +123 -0
  35. data/vendor/curl/include/curl/header.h +74 -0
  36. data/vendor/curl/include/curl/mprintf.h +85 -0
  37. data/vendor/curl/include/curl/multi.h +561 -0
  38. data/vendor/curl/include/curl/options.h +70 -0
  39. data/vendor/curl/include/curl/stdcheaders.h +35 -0
  40. data/vendor/curl/include/curl/system.h +399 -0
  41. data/vendor/curl/include/curl/typecheck-gcc.h +964 -0
  42. data/vendor/curl/include/curl/urlapi.h +156 -0
  43. data/vendor/curl/include/curl/websockets.h +98 -0
  44. data/vendor/curl/include/libpsl.h +207 -0
  45. data/vendor/curl/include/libssh2.h +1516 -0
  46. data/vendor/curl/include/libssh2_publickey.h +128 -0
  47. data/vendor/curl/include/libssh2_sftp.h +382 -0
  48. data/vendor/curl/include/nghttp2/nghttp2.h +6878 -0
  49. data/vendor/curl/include/nghttp2/nghttp2ver.h +42 -0
  50. data/vendor/curl/include/nghttp3/nghttp3.h +3704 -0
  51. data/vendor/curl/include/nghttp3/version.h +46 -0
  52. data/vendor/curl/include/ngtcp2/ngtcp2.h +7485 -0
  53. data/vendor/curl/include/ngtcp2/ngtcp2_crypto.h +1071 -0
  54. data/vendor/curl/include/ngtcp2/ngtcp2_crypto_quictls.h +147 -0
  55. data/vendor/curl/include/ngtcp2/version.h +51 -0
  56. data/vendor/curl/include/openssl/aes.h +120 -0
  57. data/vendor/curl/include/openssl/asn1.h +1121 -0
  58. data/vendor/curl/include/openssl/asn1t.h +996 -0
  59. data/vendor/curl/include/openssl/bio.h +716 -0
  60. data/vendor/curl/include/openssl/blowfish.h +106 -0
  61. data/vendor/curl/include/openssl/bn.h +480 -0
  62. data/vendor/curl/include/openssl/buffer.h +102 -0
  63. data/vendor/curl/include/openssl/camellia.h +121 -0
  64. data/vendor/curl/include/openssl/cast.h +99 -0
  65. data/vendor/curl/include/openssl/chacha.h +54 -0
  66. data/vendor/curl/include/openssl/cmac.h +81 -0
  67. data/vendor/curl/include/openssl/cms.h +541 -0
  68. data/vendor/curl/include/openssl/comp.h +7 -0
  69. data/vendor/curl/include/openssl/conf.h +189 -0
  70. data/vendor/curl/include/openssl/crypto.h +458 -0
  71. data/vendor/curl/include/openssl/ct.h +567 -0
  72. data/vendor/curl/include/openssl/curve25519.h +104 -0
  73. data/vendor/curl/include/openssl/des.h +215 -0
  74. data/vendor/curl/include/openssl/dh.h +245 -0
  75. data/vendor/curl/include/openssl/dsa.h +263 -0
  76. data/vendor/curl/include/openssl/dtls1.h +107 -0
  77. data/vendor/curl/include/openssl/ec.h +675 -0
  78. data/vendor/curl/include/openssl/ecdh.h +6 -0
  79. data/vendor/curl/include/openssl/ecdsa.h +6 -0
  80. data/vendor/curl/include/openssl/engine.h +215 -0
  81. data/vendor/curl/include/openssl/err.h +325 -0
  82. data/vendor/curl/include/openssl/evp.h +1288 -0
  83. data/vendor/curl/include/openssl/hkdf.h +65 -0
  84. data/vendor/curl/include/openssl/hmac.h +101 -0
  85. data/vendor/curl/include/openssl/idea.h +99 -0
  86. data/vendor/curl/include/openssl/kdf.h +137 -0
  87. data/vendor/curl/include/openssl/lhash.h +179 -0
  88. data/vendor/curl/include/openssl/md4.h +105 -0
  89. data/vendor/curl/include/openssl/md5.h +99 -0
  90. data/vendor/curl/include/openssl/mlkem.h +236 -0
  91. data/vendor/curl/include/openssl/modes.h +118 -0
  92. data/vendor/curl/include/openssl/obj_mac.h +4646 -0
  93. data/vendor/curl/include/openssl/objects.h +137 -0
  94. data/vendor/curl/include/openssl/ocsp.h +484 -0
  95. data/vendor/curl/include/openssl/opensslconf.h +16 -0
  96. data/vendor/curl/include/openssl/opensslfeatures.h +153 -0
  97. data/vendor/curl/include/openssl/opensslv.h +18 -0
  98. data/vendor/curl/include/openssl/ossl_typ.h +196 -0
  99. data/vendor/curl/include/openssl/pem.h +542 -0
  100. data/vendor/curl/include/openssl/pkcs12.h +284 -0
  101. data/vendor/curl/include/openssl/pkcs7.h +523 -0
  102. data/vendor/curl/include/openssl/poly1305.h +45 -0
  103. data/vendor/curl/include/openssl/posix_time.h +54 -0
  104. data/vendor/curl/include/openssl/rand.h +118 -0
  105. data/vendor/curl/include/openssl/rc2.h +101 -0
  106. data/vendor/curl/include/openssl/rc4.h +88 -0
  107. data/vendor/curl/include/openssl/ripemd.h +107 -0
  108. data/vendor/curl/include/openssl/rsa.h +603 -0
  109. data/vendor/curl/include/openssl/safestack.h +1739 -0
  110. data/vendor/curl/include/openssl/sha.h +190 -0
  111. data/vendor/curl/include/openssl/sm3.h +49 -0
  112. data/vendor/curl/include/openssl/sm4.h +47 -0
  113. data/vendor/curl/include/openssl/srtp.h +148 -0
  114. data/vendor/curl/include/openssl/ssl.h +2336 -0
  115. data/vendor/curl/include/openssl/ssl3.h +441 -0
  116. data/vendor/curl/include/openssl/stack.h +99 -0
  117. data/vendor/curl/include/openssl/tls1.h +764 -0
  118. data/vendor/curl/include/openssl/ts.h +660 -0
  119. data/vendor/curl/include/openssl/txt_db.h +112 -0
  120. data/vendor/curl/include/openssl/ui.h +397 -0
  121. data/vendor/curl/include/openssl/x509.h +1037 -0
  122. data/vendor/curl/include/openssl/x509_vfy.h +464 -0
  123. data/vendor/curl/include/openssl/x509v3.h +1039 -0
  124. data/vendor/curl/include/zconf.h +206 -0
  125. data/vendor/curl/include/zdict.h +481 -0
  126. data/vendor/curl/include/zlib.h +1859 -0
  127. data/vendor/curl/include/zlib_name_mangling.h +8 -0
  128. data/vendor/curl/include/zstd.h +3198 -0
  129. data/vendor/curl/include/zstd_errors.h +107 -0
  130. data/vendor/curl/lib/libcurl.dll.a +0 -0
  131. data/vendor/curl/licenses/brotli/LICENSE.txt +19 -0
  132. data/vendor/curl/licenses/certdata/LICENSE.url +2 -0
  133. data/vendor/curl/licenses/libpsl/COPYING.txt +20 -0
  134. data/vendor/curl/licenses/libressl/COPYING.txt +133 -0
  135. data/vendor/curl/licenses/libssh2/COPYING.txt +43 -0
  136. data/vendor/curl/licenses/nghttp2/COPYING.txt +23 -0
  137. data/vendor/curl/licenses/nghttp3/COPYING.txt +22 -0
  138. data/vendor/curl/licenses/ngtcp2/COPYING.txt +22 -0
  139. data/vendor/curl/licenses/psl/LICENSE.txt +373 -0
  140. data/vendor/curl/licenses/trurl/COPYING.txt +22 -0
  141. data/vendor/curl/licenses/zlibng/LICENSE.md +19 -0
  142. data/vendor/curl/licenses/zstd/LICENSE.txt +30 -0
  143. metadata +205 -0
@@ -0,0 +1,716 @@
1
+ /* $OpenBSD: bio.h,v 1.65 2025/07/16 18:12:54 tb Exp $ */
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
+ #if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__OpenBSD__)
62
+ #define __bounded__(x, y, z)
63
+ #endif
64
+ #include <openssl/opensslconf.h>
65
+
66
+ # include <stdio.h>
67
+ #include <stdarg.h>
68
+
69
+ #include <openssl/crypto.h>
70
+
71
+
72
+ #ifdef __cplusplus
73
+ extern "C" {
74
+ #endif
75
+
76
+ /* These are the 'types' of BIOs */
77
+ #define BIO_TYPE_NONE 0
78
+ #define BIO_TYPE_MEM (1|0x0400)
79
+ #define BIO_TYPE_FILE (2|0x0400)
80
+
81
+ #define BIO_TYPE_FD (4|0x0400|0x0100)
82
+ #define BIO_TYPE_SOCKET (5|0x0400|0x0100)
83
+ #define BIO_TYPE_NULL (6|0x0400)
84
+ #define BIO_TYPE_SSL (7|0x0200)
85
+ #define BIO_TYPE_MD (8|0x0200) /* passive filter */
86
+ #define BIO_TYPE_BUFFER (9|0x0200) /* filter */
87
+ #define BIO_TYPE_CIPHER (10|0x0200) /* filter */
88
+ #define BIO_TYPE_BASE64 (11|0x0200) /* filter */
89
+ #define BIO_TYPE_CONNECT (12|0x0400|0x0100) /* socket - connect */
90
+ #define BIO_TYPE_ACCEPT (13|0x0400|0x0100) /* socket for accept */
91
+ #define BIO_TYPE_PROXY_CLIENT (14|0x0200) /* client proxy BIO */
92
+ #define BIO_TYPE_PROXY_SERVER (15|0x0200) /* server proxy BIO */
93
+ #define BIO_TYPE_NBIO_TEST (16|0x0200) /* server proxy BIO */
94
+ #define BIO_TYPE_NULL_FILTER (17|0x0200)
95
+ #define BIO_TYPE_BER (18|0x0200) /* BER -> bin filter */
96
+ #define BIO_TYPE_BIO (19|0x0400) /* (half a) BIO pair */
97
+ #define BIO_TYPE_LINEBUFFER (20|0x0200) /* filter */
98
+ #define BIO_TYPE_DGRAM (21|0x0400|0x0100)
99
+ #define BIO_TYPE_ASN1 (22|0x0200) /* filter */
100
+ #define BIO_TYPE_COMP (23|0x0200) /* filter */
101
+
102
+ #define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */
103
+ #define BIO_TYPE_FILTER 0x0200
104
+ #define BIO_TYPE_SOURCE_SINK 0x0400
105
+
106
+ /*
107
+ * BIO_TYPE_START is the first user-allocated BIO type. No pre-defined type,
108
+ * flag bits aside, may exceed this value.
109
+ */
110
+ #define BIO_TYPE_START 128
111
+
112
+ /* BIO_FILENAME_READ|BIO_CLOSE to open or close on free.
113
+ * BIO_set_fp(in,stdin,BIO_NOCLOSE); */
114
+ #define BIO_NOCLOSE 0x00
115
+ #define BIO_CLOSE 0x01
116
+
117
+ /* These are used in the following macros and are passed to
118
+ * BIO_ctrl() */
119
+ #define BIO_CTRL_RESET 1 /* opt - rewind/zero etc */
120
+ #define BIO_CTRL_EOF 2 /* opt - are we at the eof */
121
+ #define BIO_CTRL_INFO 3 /* opt - extra tit-bits */
122
+ #define BIO_CTRL_SET 4 /* man - set the 'IO' type */
123
+ #define BIO_CTRL_GET 5 /* man - get the 'IO' type */
124
+ #define BIO_CTRL_PUSH 6 /* opt - internal, used to signify change */
125
+ #define BIO_CTRL_POP 7 /* opt - internal, used to signify change */
126
+ #define BIO_CTRL_GET_CLOSE 8 /* man - set the 'close' on free */
127
+ #define BIO_CTRL_SET_CLOSE 9 /* man - set the 'close' on free */
128
+ #define BIO_CTRL_PENDING 10 /* opt - is their more data buffered */
129
+ #define BIO_CTRL_FLUSH 11 /* opt - 'flush' buffered output */
130
+ #define BIO_CTRL_DUP 12 /* man - extra stuff for 'duped' BIO */
131
+ #define BIO_CTRL_WPENDING 13 /* opt - number of bytes still to write */
132
+ /* callback is int cb(BIO *bio,state,ret); */
133
+ #define BIO_CTRL_SET_CALLBACK 14 /* opt - set callback function */
134
+ #define BIO_CTRL_GET_CALLBACK 15 /* opt - set callback function */
135
+
136
+ #define BIO_CTRL_SET_FILENAME 30 /* BIO_s_file special */
137
+
138
+ /* dgram BIO stuff */
139
+ #define BIO_CTRL_DGRAM_CONNECT 31 /* BIO dgram special */
140
+ #define BIO_CTRL_DGRAM_SET_CONNECTED 32 /* allow for an externally
141
+ * connected socket to be
142
+ * passed in */
143
+ #define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33 /* setsockopt, essentially */
144
+ #define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34 /* getsockopt, essentially */
145
+ #define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35 /* setsockopt, essentially */
146
+ #define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36 /* getsockopt, essentially */
147
+
148
+ #define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37 /* flag whether the last */
149
+ #define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38 /* I/O operation timed out */
150
+
151
+ /* #ifdef IP_MTU_DISCOVER */
152
+ #define BIO_CTRL_DGRAM_MTU_DISCOVER 39 /* set DF bit on egress packets */
153
+ /* #endif */
154
+
155
+ #define BIO_CTRL_DGRAM_QUERY_MTU 40 /* as kernel for current MTU */
156
+ #define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47
157
+ #define BIO_CTRL_DGRAM_GET_MTU 41 /* get cached value for MTU */
158
+ #define BIO_CTRL_DGRAM_SET_MTU 42 /* set cached value for
159
+ * MTU. want to use this
160
+ * if asking the kernel
161
+ * fails */
162
+
163
+ #define BIO_CTRL_DGRAM_MTU_EXCEEDED 43 /* check whether the MTU
164
+ * was exceed in the
165
+ * previous write
166
+ * operation */
167
+
168
+ #define BIO_CTRL_DGRAM_GET_PEER 46
169
+ #define BIO_CTRL_DGRAM_SET_PEER 44 /* Destination for the data */
170
+
171
+ #define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45 /* Next DTLS handshake timeout to
172
+ * adjust socket timeouts */
173
+
174
+
175
+ /* modifiers */
176
+ #define BIO_FP_READ 0x02
177
+ #define BIO_FP_WRITE 0x04
178
+ #define BIO_FP_APPEND 0x08
179
+ #define BIO_FP_TEXT 0x10
180
+
181
+ #define BIO_FLAGS_READ 0x01
182
+ #define BIO_FLAGS_WRITE 0x02
183
+ #define BIO_FLAGS_IO_SPECIAL 0x04
184
+ #define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL)
185
+ #define BIO_FLAGS_SHOULD_RETRY 0x08
186
+
187
+ /* Used in BIO_gethostbyname() */
188
+ #define BIO_GHBN_CTRL_HITS 1
189
+ #define BIO_GHBN_CTRL_MISSES 2
190
+ #define BIO_GHBN_CTRL_CACHE_SIZE 3
191
+ #define BIO_GHBN_CTRL_GET_ENTRY 4
192
+ #define BIO_GHBN_CTRL_FLUSH 5
193
+
194
+ /* Mostly used in the SSL BIO */
195
+ /* Not used anymore
196
+ * #define BIO_FLAGS_PROTOCOL_DELAYED_READ 0x10
197
+ * #define BIO_FLAGS_PROTOCOL_DELAYED_WRITE 0x20
198
+ * #define BIO_FLAGS_PROTOCOL_STARTUP 0x40
199
+ */
200
+
201
+ #define BIO_FLAGS_BASE64_NO_NL 0x100
202
+
203
+ /* This is used with memory BIOs: it means we shouldn't free up or change the
204
+ * data in any way.
205
+ */
206
+ #define BIO_FLAGS_MEM_RDONLY 0x200
207
+
208
+ void BIO_set_flags(BIO *b, int flags);
209
+ int BIO_test_flags(const BIO *b, int flags);
210
+ void BIO_clear_flags(BIO *b, int flags);
211
+
212
+ #define BIO_get_flags(b) BIO_test_flags(b, ~(0x0))
213
+ #define BIO_set_retry_special(b) \
214
+ BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY))
215
+ #define BIO_set_retry_read(b) \
216
+ BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY))
217
+ #define BIO_set_retry_write(b) \
218
+ BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY))
219
+
220
+ /* These are normally used internally in BIOs */
221
+ #define BIO_clear_retry_flags(b) \
222
+ BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
223
+ #define BIO_get_retry_flags(b) \
224
+ BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
225
+
226
+ /* These should be used by the application to tell why we should retry */
227
+ #define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ)
228
+ #define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE)
229
+ #define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL)
230
+ #define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS)
231
+ #define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY)
232
+
233
+ /* The next three are used in conjunction with the
234
+ * BIO_should_io_special() condition. After this returns true,
235
+ * BIO *BIO_get_retry_BIO(BIO *bio, int *reason); will walk the BIO
236
+ * stack and return the 'reason' for the special and the offending BIO.
237
+ * Given a BIO, BIO_get_retry_reason(bio) will return the code. */
238
+ /* Returned from the SSL bio when the certificate retrieval code had an error */
239
+ #define BIO_RR_SSL_X509_LOOKUP 0x01
240
+ /* Returned from the connect BIO when a connect would have blocked */
241
+ #define BIO_RR_CONNECT 0x02
242
+ /* Returned from the accept BIO when an accept would have blocked */
243
+ #define BIO_RR_ACCEPT 0x03
244
+
245
+ /* These are passed by the BIO callback */
246
+ #define BIO_CB_FREE 0x01
247
+ #define BIO_CB_READ 0x02
248
+ #define BIO_CB_WRITE 0x03
249
+ #define BIO_CB_PUTS 0x04
250
+ #define BIO_CB_GETS 0x05
251
+ #define BIO_CB_CTRL 0x06
252
+
253
+ /*
254
+ * The callback is called before and after the underling operation,
255
+ * the BIO_CB_RETURN flag indicates if it is after the call.
256
+ */
257
+ #define BIO_CB_RETURN 0x80
258
+ #define BIO_CB_return(a) ((a)|BIO_CB_RETURN))
259
+ #define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN))
260
+ #define BIO_cb_post(a) ((a)&BIO_CB_RETURN)
261
+
262
+ typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi,
263
+ long argl, long ret);
264
+ typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp,
265
+ size_t len, int argi, long argl, int ret, size_t *processed);
266
+
267
+ BIO_callback_fn BIO_get_callback(const BIO *b);
268
+ void BIO_set_callback(BIO *b, BIO_callback_fn callback);
269
+
270
+ BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b);
271
+ void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback);
272
+
273
+ char *BIO_get_callback_arg(const BIO *b);
274
+ void BIO_set_callback_arg(BIO *b, char *arg);
275
+
276
+ const char *BIO_method_name(const BIO *b);
277
+ int BIO_method_type(const BIO *b);
278
+
279
+ typedef int BIO_info_cb(BIO *, int, int);
280
+ /* Compatibility with OpenSSL's backward compatibility. */
281
+ typedef BIO_info_cb bio_info_cb;
282
+
283
+ typedef struct bio_method_st BIO_METHOD;
284
+
285
+ DECLARE_STACK_OF(BIO)
286
+
287
+ /* Prefix and suffix callback in ASN1 BIO */
288
+ typedef int asn1_ps_func(BIO *b, unsigned char **pbuf, int *plen, void *parg);
289
+
290
+ /* BIO_METHOD accessors */
291
+ BIO_METHOD *BIO_meth_new(int type, const char *name);
292
+ void BIO_meth_free(BIO_METHOD *biom);
293
+ int (*BIO_meth_get_write(const BIO_METHOD *biom))(BIO *, const char *, int);
294
+ int BIO_meth_set_write(BIO_METHOD *biom,
295
+ int (*write)(BIO *, const char *, int));
296
+ int (*BIO_meth_get_read(const BIO_METHOD *biom))(BIO *, char *, int);
297
+ int BIO_meth_set_read(BIO_METHOD *biom, int (*read)(BIO *, char *, int));
298
+ int (*BIO_meth_get_puts(const BIO_METHOD *biom))(BIO *, const char *);
299
+ int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts)(BIO *, const char *));
300
+ int (*BIO_meth_get_gets(const BIO_METHOD *biom))(BIO *, char *, int);
301
+ int BIO_meth_set_gets(BIO_METHOD *biom, int (*gets)(BIO *, char *, int));
302
+ long (*BIO_meth_get_ctrl(const BIO_METHOD *biom))(BIO *, int, long, void *);
303
+ int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl)(BIO *, int, long, void *));
304
+ int (*BIO_meth_get_create(const BIO_METHOD *biom))(BIO *);
305
+ int BIO_meth_set_create(BIO_METHOD *biom, int (*create)(BIO *));
306
+ int (*BIO_meth_get_destroy(const BIO_METHOD *biom))(BIO *);
307
+ int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy)(BIO *));
308
+ long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom))(BIO *, int, BIO_info_cb *);
309
+ int BIO_meth_set_callback_ctrl(BIO_METHOD *biom,
310
+ long (*callback_ctrl)(BIO *, int, BIO_info_cb *));
311
+
312
+ /* connect BIO stuff */
313
+ #define BIO_CONN_S_BEFORE 1
314
+ #define BIO_CONN_S_GET_IP 2
315
+ #define BIO_CONN_S_GET_PORT 3
316
+ #define BIO_CONN_S_CREATE_SOCKET 4
317
+ #define BIO_CONN_S_CONNECT 5
318
+ #define BIO_CONN_S_OK 6
319
+ #define BIO_CONN_S_BLOCKED_CONNECT 7
320
+ #define BIO_CONN_S_NBIO 8
321
+ /*#define BIO_CONN_get_param_hostname BIO_ctrl */
322
+
323
+ #define BIO_C_SET_CONNECT 100
324
+ #define BIO_C_DO_STATE_MACHINE 101
325
+ #define BIO_C_SET_NBIO 102
326
+ #define BIO_C_SET_PROXY_PARAM 103
327
+ #define BIO_C_SET_FD 104
328
+ #define BIO_C_GET_FD 105
329
+ #define BIO_C_SET_FILE_PTR 106
330
+ #define BIO_C_GET_FILE_PTR 107
331
+ #define BIO_C_SET_FILENAME 108
332
+ #define BIO_C_SET_SSL 109
333
+ #define BIO_C_GET_SSL 110
334
+ #define BIO_C_SET_MD 111
335
+ #define BIO_C_GET_MD 112
336
+ #define BIO_C_GET_CIPHER_STATUS 113
337
+ #define BIO_C_SET_BUF_MEM 114
338
+ #define BIO_C_GET_BUF_MEM_PTR 115
339
+ #define BIO_C_GET_BUFF_NUM_LINES 116
340
+ #define BIO_C_SET_BUFF_SIZE 117
341
+ #define BIO_C_SET_ACCEPT 118
342
+ #define BIO_C_SSL_MODE 119
343
+ #define BIO_C_GET_MD_CTX 120
344
+ #define BIO_C_GET_PROXY_PARAM 121
345
+ #define BIO_C_SET_BUFF_READ_DATA 122 /* data to read first */
346
+ #define BIO_C_GET_CONNECT 123
347
+ #define BIO_C_GET_ACCEPT 124
348
+ #define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125
349
+ #define BIO_C_GET_SSL_NUM_RENEGOTIATES 126
350
+ #define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127
351
+ #define BIO_C_FILE_SEEK 128
352
+ #define BIO_C_GET_CIPHER_CTX 129
353
+ #define BIO_C_SET_BUF_MEM_EOF_RETURN 130/*return end of input value*/
354
+ #define BIO_C_SET_BIND_MODE 131
355
+ #define BIO_C_GET_BIND_MODE 132
356
+ #define BIO_C_FILE_TELL 133
357
+ #define BIO_C_GET_SOCKS 134
358
+ #define BIO_C_SET_SOCKS 135
359
+
360
+ #define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */
361
+ #define BIO_C_GET_WRITE_BUF_SIZE 137
362
+ #define BIO_C_MAKE_BIO_PAIR 138
363
+ #define BIO_C_DESTROY_BIO_PAIR 139
364
+ #define BIO_C_GET_WRITE_GUARANTEE 140
365
+ #define BIO_C_GET_READ_REQUEST 141
366
+ #define BIO_C_SHUTDOWN_WR 142
367
+ #define BIO_C_RESET_READ_REQUEST 147
368
+ #define BIO_C_SET_MD_CTX 148
369
+
370
+ #define BIO_C_SET_EX_ARG 153
371
+ #define BIO_C_GET_EX_ARG 154
372
+
373
+ #define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg)
374
+ #define BIO_get_app_data(s) BIO_get_ex_data(s,0)
375
+
376
+ /* BIO_s_connect() and BIO_s_socks4a_connect() */
377
+ #define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)name)
378
+ #define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port)
379
+ #define BIO_set_conn_ip(b,ip) BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)ip)
380
+ #define BIO_set_conn_int_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,3,(char *)port)
381
+ #define BIO_get_conn_hostname(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)
382
+ #define BIO_get_conn_port(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)
383
+ #define BIO_get_conn_ip(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)
384
+ #define BIO_get_conn_int_port(b) BIO_int_ctrl(b,BIO_C_GET_CONNECT,3,0)
385
+
386
+
387
+ #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)
388
+
389
+ /* BIO_s_accept_socket() */
390
+ #define BIO_set_accept_port(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0,(char *)name)
391
+ #define BIO_get_accept_port(b) BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0)
392
+ /* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */
393
+ #define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,1,(n)?(void *)"a":NULL)
394
+ #define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(char *)bio)
395
+
396
+ #define BIO_BIND_NORMAL 0
397
+ #define BIO_BIND_REUSEADDR_IF_UNUSED 1
398
+ #define BIO_BIND_REUSEADDR 2
399
+ #define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL)
400
+ #define BIO_get_bind_mode(b,mode) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL)
401
+
402
+ #define BIO_do_connect(b) BIO_do_handshake(b)
403
+ #define BIO_do_accept(b) BIO_do_handshake(b)
404
+ #define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL)
405
+
406
+ /* BIO_s_proxy_client() */
407
+ #define BIO_set_url(b,url) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,0,(char *)(url))
408
+ #define BIO_set_proxies(b,p) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,1,(char *)(p))
409
+ /* BIO_set_nbio(b,n) */
410
+ #define BIO_set_filter_bio(b,s) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,2,(char *)(s))
411
+ /* BIO *BIO_get_filter_bio(BIO *bio); */
412
+ #define BIO_set_proxy_cb(b,cb) BIO_callback_ctrl(b,BIO_C_SET_PROXY_PARAM,3,(void *(*cb)()))
413
+ #define BIO_set_proxy_header(b,sk) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,4,(char *)sk)
414
+ #define BIO_set_no_connect_return(b,bool) BIO_int_ctrl(b,BIO_C_SET_PROXY_PARAM,5,bool)
415
+
416
+ #define BIO_get_proxy_header(b,skp) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,0,(char *)skp)
417
+ #define BIO_get_proxies(b,pxy_p) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,1,(char *)(pxy_p))
418
+ #define BIO_get_url(b,url) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,2,(char *)(url))
419
+ #define BIO_get_no_connect_return(b) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,5,NULL)
420
+
421
+ #define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd)
422
+ #define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c)
423
+
424
+ #define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)fp)
425
+ #define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)fpp)
426
+
427
+ #define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL)
428
+ #define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL)
429
+
430
+ /* name is cast to lose const, but might be better to route through a function
431
+ so we can do it safely */
432
+ #define BIO_read_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
433
+ BIO_CLOSE|BIO_FP_READ,(char *)name)
434
+ #define BIO_write_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
435
+ BIO_CLOSE|BIO_FP_WRITE,name)
436
+ #define BIO_append_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
437
+ BIO_CLOSE|BIO_FP_APPEND,name)
438
+ #define BIO_rw_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
439
+ BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name)
440
+
441
+ /* WARNING WARNING, this ups the reference count on the read bio of the
442
+ * SSL structure. This is because the ssl read BIO is now pointed to by
443
+ * the next_bio field in the bio. So when you free the BIO, make sure
444
+ * you are doing a BIO_free_all() to catch the underlying BIO. */
445
+ #define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)ssl)
446
+ #define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp)
447
+ #define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL)
448
+ #define BIO_set_ssl_renegotiate_bytes(b,num) \
449
+ BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL)
450
+ #define BIO_get_num_renegotiates(b) \
451
+ BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL)
452
+ #define BIO_set_ssl_renegotiate_timeout(b,seconds) \
453
+ BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL)
454
+
455
+ /* defined in evp.h */
456
+ /* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)md) */
457
+
458
+ #define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp)
459
+ #define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)bm)
460
+ #define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0,(char *)pp)
461
+ #define BIO_set_mem_eof_return(b,v) \
462
+ BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL)
463
+
464
+ /* For the BIO_f_buffer() type */
465
+ #define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL)
466
+ #define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL)
467
+ #define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0)
468
+ #define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1)
469
+ #define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf)
470
+
471
+ /* Don't use the next one unless you know what you are doing :-) */
472
+ #define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret))
473
+
474
+ #define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL)
475
+ #define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL)
476
+ #define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL)
477
+ #define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL)
478
+ #define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL)
479
+ #define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL)
480
+ /* ...pending macros have inappropriate return type */
481
+ size_t BIO_ctrl_pending(BIO *b);
482
+ size_t BIO_ctrl_wpending(BIO *b);
483
+ #define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL)
484
+ #define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \
485
+ cbp)
486
+ #define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb)
487
+
488
+ /* For the BIO_f_buffer() type */
489
+ #define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL)
490
+
491
+ /* For BIO_s_bio() */
492
+ #define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL)
493
+ #define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL)
494
+ #define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2)
495
+ #define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL)
496
+ #define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL)
497
+ /* macros with inappropriate type -- but ...pending macros use int too: */
498
+ #define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL)
499
+ #define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL)
500
+ size_t BIO_ctrl_get_write_guarantee(BIO *b);
501
+ size_t BIO_ctrl_get_read_request(BIO *b);
502
+ int BIO_ctrl_reset_read_request(BIO *b);
503
+
504
+ /* ctrl macros for dgram */
505
+ #define BIO_ctrl_dgram_connect(b,peer) \
506
+ (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)peer)
507
+ #define BIO_ctrl_set_connected(b, state, peer) \
508
+ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, state, (char *)peer)
509
+ #define BIO_dgram_recv_timedout(b) \
510
+ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL)
511
+ #define BIO_dgram_send_timedout(b) \
512
+ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL)
513
+ #define BIO_dgram_get_peer(b,peer) \
514
+ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)peer)
515
+ #define BIO_dgram_set_peer(b,peer) \
516
+ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)peer)
517
+
518
+ /* These two aren't currently implemented */
519
+ /* int BIO_get_ex_num(BIO *bio); */
520
+ /* void BIO_set_ex_free_func(BIO *bio,int idx,void (*cb)()); */
521
+ int BIO_set_ex_data(BIO *bio, int idx, void *data);
522
+ void *BIO_get_ex_data(BIO *bio, int idx);
523
+ int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
524
+ CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
525
+ unsigned long BIO_number_read(BIO *bio);
526
+ unsigned long BIO_number_written(BIO *bio);
527
+
528
+ int BIO_get_new_index(void);
529
+ const BIO_METHOD *BIO_s_file(void);
530
+ BIO *BIO_new_file(const char *filename, const char *mode);
531
+ BIO *BIO_new_fp(FILE *stream, int close_flag);
532
+ BIO *BIO_new(const BIO_METHOD *type);
533
+ int BIO_free(BIO *a);
534
+ int BIO_up_ref(BIO *bio);
535
+ void *BIO_get_data(BIO *a);
536
+ void BIO_set_data(BIO *a, void *ptr);
537
+ int BIO_get_init(BIO *a);
538
+ void BIO_set_init(BIO *a, int init);
539
+ int BIO_get_shutdown(BIO *a);
540
+ void BIO_set_shutdown(BIO *a, int shut);
541
+ void BIO_vfree(BIO *a);
542
+ int BIO_read(BIO *b, void *data, int len)
543
+ __attribute__((__bounded__(__buffer__,2,3)));
544
+ int BIO_gets(BIO *bp, char *buf, int size)
545
+ __attribute__((__bounded__ (__string__,2,3)));
546
+ int BIO_write(BIO *b, const void *data, int len)
547
+ __attribute__((__bounded__(__buffer__,2,3)));
548
+ int BIO_puts(BIO *bp, const char *buf);
549
+ int BIO_indent(BIO *b, int indent, int max);
550
+ long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg);
551
+ long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp);
552
+ char * BIO_ptr_ctrl(BIO *bp, int cmd, long larg);
553
+ long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg);
554
+ BIO * BIO_push(BIO *b, BIO *append);
555
+ BIO * BIO_pop(BIO *b);
556
+ void BIO_free_all(BIO *a);
557
+ BIO * BIO_find_type(BIO *b, int bio_type);
558
+ BIO * BIO_next(BIO *b);
559
+ void BIO_set_next(BIO *b, BIO *next);
560
+ BIO * BIO_get_retry_BIO(BIO *bio, int *reason);
561
+ int BIO_get_retry_reason(BIO *bio);
562
+ void BIO_set_retry_reason(BIO *bio, int reason);
563
+ BIO * BIO_dup_chain(BIO *in);
564
+
565
+ long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi,
566
+ long argl, long ret);
567
+
568
+ const BIO_METHOD *BIO_s_mem(void);
569
+ BIO *BIO_new_mem_buf(const void *buf, int len);
570
+ const BIO_METHOD *BIO_s_socket(void);
571
+ const BIO_METHOD *BIO_s_connect(void);
572
+ const BIO_METHOD *BIO_s_accept(void);
573
+ const BIO_METHOD *BIO_s_fd(void);
574
+ const BIO_METHOD *BIO_s_bio(void);
575
+ const BIO_METHOD *BIO_s_null(void);
576
+ const BIO_METHOD *BIO_f_null(void);
577
+ const BIO_METHOD *BIO_f_buffer(void);
578
+ const BIO_METHOD *BIO_f_nbio_test(void);
579
+ #ifndef OPENSSL_NO_DGRAM
580
+ const BIO_METHOD *BIO_s_datagram(void);
581
+ #endif
582
+
583
+ /* BIO_METHOD *BIO_f_ber(void); */
584
+
585
+ int BIO_sock_should_retry(int i);
586
+ int BIO_sock_non_fatal_error(int _error);
587
+ int BIO_dgram_non_fatal_error(int _error);
588
+
589
+ int BIO_fd_should_retry(int i);
590
+ int BIO_fd_non_fatal_error(int _error);
591
+
592
+ int BIO_dump(BIO *b, const char *bytes, int len);
593
+ int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent);
594
+
595
+ struct hostent *BIO_gethostbyname(const char *name);
596
+ /* We might want a thread-safe interface too:
597
+ * struct hostent *BIO_gethostbyname_r(const char *name,
598
+ * struct hostent *result, void *buffer, size_t buflen);
599
+ * or something similar (caller allocates a struct hostent,
600
+ * pointed to by "result", and additional buffer space for the various
601
+ * substructures; if the buffer does not suffice, NULL is returned
602
+ * and an appropriate error code is set).
603
+ */
604
+ int BIO_sock_error(int sock);
605
+ int BIO_socket_ioctl(int fd, long type, void *arg);
606
+ int BIO_socket_nbio(int fd, int mode);
607
+ int BIO_get_port(const char *str, unsigned short *port_ptr);
608
+ int BIO_get_host_ip(const char *str, unsigned char *ip);
609
+ int BIO_get_accept_socket(char *host_port, int mode);
610
+ int BIO_accept(int sock, char **ip_port);
611
+ int BIO_sock_init(void );
612
+ void BIO_sock_cleanup(void);
613
+ int BIO_set_tcp_ndelay(int sock, int turn_on);
614
+
615
+ BIO *BIO_new_socket(int sock, int close_flag);
616
+ BIO *BIO_new_dgram(int fd, int close_flag);
617
+ BIO *BIO_new_fd(int fd, int close_flag);
618
+ BIO *BIO_new_connect(const char *host_port);
619
+ BIO *BIO_new_accept(const char *host_port);
620
+
621
+ int BIO_new_bio_pair(BIO **bio1, size_t writebuf1,
622
+ BIO **bio2, size_t writebuf2);
623
+ /* If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints.
624
+ * Otherwise returns 0 and sets *bio1 and *bio2 to NULL.
625
+ * Size 0 uses default value.
626
+ */
627
+
628
+ void BIO_copy_next_retry(BIO *b);
629
+
630
+ /*long BIO_ghbn_ctrl(int cmd,int iarg,char *parg);*/
631
+
632
+ /* Needed for libressl-portable. */
633
+ #ifndef __MINGW_PRINTF_FORMAT
634
+ int BIO_printf(BIO *bio, const char *format, ...)
635
+ __attribute__((__format__(__printf__, 2, 3), __nonnull__(2)));
636
+ #else
637
+ int BIO_printf(BIO *bio, const char *format, ...)
638
+ __attribute__((__format__(__MINGW_PRINTF_FORMAT, 2, 3), __nonnull__(2)));
639
+ #endif
640
+
641
+ void ERR_load_BIO_strings(void);
642
+
643
+ /* Error codes for the BIO functions. */
644
+
645
+ /* Function codes. */
646
+ #define BIO_F_ACPT_STATE 100
647
+ #define BIO_F_BIO_ACCEPT 101
648
+ #define BIO_F_BIO_BER_GET_HEADER 102
649
+ #define BIO_F_BIO_CALLBACK_CTRL 131
650
+ #define BIO_F_BIO_CTRL 103
651
+ #define BIO_F_BIO_GETHOSTBYNAME 120
652
+ #define BIO_F_BIO_GETS 104
653
+ #define BIO_F_BIO_GET_ACCEPT_SOCKET 105
654
+ #define BIO_F_BIO_GET_HOST_IP 106
655
+ #define BIO_F_BIO_GET_PORT 107
656
+ #define BIO_F_BIO_MAKE_PAIR 121
657
+ #define BIO_F_BIO_NEW 108
658
+ #define BIO_F_BIO_NEW_FILE 109
659
+ #define BIO_F_BIO_NEW_MEM_BUF 126
660
+ #define BIO_F_BIO_NREAD 123
661
+ #define BIO_F_BIO_NREAD0 124
662
+ #define BIO_F_BIO_NWRITE 125
663
+ #define BIO_F_BIO_NWRITE0 122
664
+ #define BIO_F_BIO_PUTS 110
665
+ #define BIO_F_BIO_READ 111
666
+ #define BIO_F_BIO_SOCK_INIT 112
667
+ #define BIO_F_BIO_WRITE 113
668
+ #define BIO_F_BUFFER_CTRL 114
669
+ #define BIO_F_CONN_CTRL 127
670
+ #define BIO_F_CONN_STATE 115
671
+ #define BIO_F_DGRAM_SCTP_READ 132
672
+ #define BIO_F_FILE_CTRL 116
673
+ #define BIO_F_FILE_READ 130
674
+ #define BIO_F_LINEBUFFER_CTRL 129
675
+ #define BIO_F_MEM_READ 128
676
+ #define BIO_F_MEM_WRITE 117
677
+ #define BIO_F_SSL_NEW 118
678
+ #define BIO_F_WSASTARTUP 119
679
+
680
+ /* Reason codes. */
681
+ #define BIO_R_ACCEPT_ERROR 100
682
+ #define BIO_R_BAD_FOPEN_MODE 101
683
+ #define BIO_R_BAD_HOSTNAME_LOOKUP 102
684
+ #define BIO_R_BROKEN_PIPE 124
685
+ #define BIO_R_CONNECT_ERROR 103
686
+ #define BIO_R_EOF_ON_MEMORY_BIO 127
687
+ #define BIO_R_ERROR_SETTING_NBIO 104
688
+ #define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPTED_SOCKET 105
689
+ #define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET 106
690
+ #define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107
691
+ #define BIO_R_INVALID_ARGUMENT 125
692
+ #define BIO_R_INVALID_IP_ADDRESS 108
693
+ #define BIO_R_INVALID_PORT_NUMBER 129
694
+ #define BIO_R_IN_USE 123
695
+ #define BIO_R_KEEPALIVE 109
696
+ #define BIO_R_LENGTH_TOO_LONG 130
697
+ #define BIO_R_NBIO_CONNECT_ERROR 110
698
+ #define BIO_R_NO_ACCEPT_PORT_SPECIFIED 111
699
+ #define BIO_R_NO_HOSTNAME_SPECIFIED 112
700
+ #define BIO_R_NO_PORT_DEFINED 113
701
+ #define BIO_R_NO_PORT_SPECIFIED 114
702
+ #define BIO_R_NO_SUCH_FILE 128
703
+ #define BIO_R_NULL_PARAMETER 115
704
+ #define BIO_R_TAG_MISMATCH 116
705
+ #define BIO_R_UNABLE_TO_BIND_SOCKET 117
706
+ #define BIO_R_UNABLE_TO_CREATE_SOCKET 118
707
+ #define BIO_R_UNABLE_TO_LISTEN_SOCKET 119
708
+ #define BIO_R_UNINITIALIZED 120
709
+ #define BIO_R_UNSUPPORTED_METHOD 121
710
+ #define BIO_R_WRITE_TO_READ_ONLY_BIO 126
711
+ #define BIO_R_WSASTARTUP 122
712
+
713
+ #ifdef __cplusplus
714
+ }
715
+ #endif
716
+ #endif