00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 #ifndef HEADER_BIO_H
00060 #define HEADER_BIO_H
00061
00062 #include <openssl/e_os2.h>
00063
00064 #ifndef OPENSSL_NO_FP_API
00065 # include <stdio.h>
00066 #endif
00067 #include <stdarg.h>
00068
00069 #include <openssl/crypto.h>
00070
00071 #ifdef __cplusplus
00072 extern "C" {
00073 #endif
00074
00075
00076 #define BIO_TYPE_NONE 0
00077 #define BIO_TYPE_MEM (1|0x0400)
00078 #define BIO_TYPE_FILE (2|0x0400)
00079
00080 #define BIO_TYPE_FD (4|0x0400|0x0100)
00081 #define BIO_TYPE_SOCKET (5|0x0400|0x0100)
00082 #define BIO_TYPE_NULL (6|0x0400)
00083 #define BIO_TYPE_SSL (7|0x0200)
00084 #define BIO_TYPE_MD (8|0x0200)
00085 #define BIO_TYPE_BUFFER (9|0x0200)
00086 #define BIO_TYPE_CIPHER (10|0x0200)
00087 #define BIO_TYPE_BASE64 (11|0x0200)
00088 #define BIO_TYPE_CONNECT (12|0x0400|0x0100)
00089 #define BIO_TYPE_ACCEPT (13|0x0400|0x0100)
00090 #define BIO_TYPE_PROXY_CLIENT (14|0x0200)
00091 #define BIO_TYPE_PROXY_SERVER (15|0x0200)
00092 #define BIO_TYPE_NBIO_TEST (16|0x0200)
00093 #define BIO_TYPE_NULL_FILTER (17|0x0200)
00094 #define BIO_TYPE_BER (18|0x0200)
00095 #define BIO_TYPE_BIO (19|0x0400)
00096 #define BIO_TYPE_LINEBUFFER (20|0x0200)
00097 #define BIO_TYPE_DGRAM (21|0x0400|0x0100)
00098
00099 #define BIO_TYPE_DESCRIPTOR 0x0100
00100 #define BIO_TYPE_FILTER 0x0200
00101 #define BIO_TYPE_SOURCE_SINK 0x0400
00102
00103
00104
00105 #define BIO_NOCLOSE 0x00
00106 #define BIO_CLOSE 0x01
00107
00108
00109
00110 #define BIO_CTRL_RESET 1
00111 #define BIO_CTRL_EOF 2
00112 #define BIO_CTRL_INFO 3
00113 #define BIO_CTRL_SET 4
00114 #define BIO_CTRL_GET 5
00115 #define BIO_CTRL_PUSH 6
00116 #define BIO_CTRL_POP 7
00117 #define BIO_CTRL_GET_CLOSE 8
00118 #define BIO_CTRL_SET_CLOSE 9
00119 #define BIO_CTRL_PENDING 10
00120 #define BIO_CTRL_FLUSH 11
00121 #define BIO_CTRL_DUP 12
00122 #define BIO_CTRL_WPENDING 13
00123
00124 #define BIO_CTRL_SET_CALLBACK 14
00125 #define BIO_CTRL_GET_CALLBACK 15
00126
00127 #define BIO_CTRL_SET_FILENAME 30
00128
00129
00130 #define BIO_CTRL_DGRAM_CONNECT 31
00131 #define BIO_CTRL_DGRAM_SET_CONNECTED 32
00132
00133
00134 #define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33
00135 #define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34
00136 #define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35
00137 #define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36
00138
00139 #define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37
00140 #define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38
00141
00142
00143 #define BIO_CTRL_DGRAM_MTU_DISCOVER 39
00144
00145
00146 #define BIO_CTRL_DGRAM_QUERY_MTU 40
00147 #define BIO_CTRL_DGRAM_GET_MTU 41
00148 #define BIO_CTRL_DGRAM_SET_MTU 42
00149
00150
00151
00152
00153 #define BIO_CTRL_DGRAM_MTU_EXCEEDED 43
00154
00155
00156
00157
00158 #define BIO_CTRL_DGRAM_SET_PEER 44
00159
00160
00161
00162 #define BIO_FP_READ 0x02
00163 #define BIO_FP_WRITE 0x04
00164 #define BIO_FP_APPEND 0x08
00165 #define BIO_FP_TEXT 0x10
00166
00167 #define BIO_FLAGS_READ 0x01
00168 #define BIO_FLAGS_WRITE 0x02
00169 #define BIO_FLAGS_IO_SPECIAL 0x04
00170 #define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL)
00171 #define BIO_FLAGS_SHOULD_RETRY 0x08
00172 #ifndef BIO_FLAGS_UPLINK
00173
00174
00175 #define BIO_FLAGS_UPLINK 0
00176 #endif
00177
00178
00179 #define BIO_GHBN_CTRL_HITS 1
00180 #define BIO_GHBN_CTRL_MISSES 2
00181 #define BIO_GHBN_CTRL_CACHE_SIZE 3
00182 #define BIO_GHBN_CTRL_GET_ENTRY 4
00183 #define BIO_GHBN_CTRL_FLUSH 5
00184
00185
00186
00187
00188
00189
00190
00191
00192 #define BIO_FLAGS_BASE64_NO_NL 0x100
00193
00194
00195
00196
00197 #define BIO_FLAGS_MEM_RDONLY 0x200
00198
00199 typedef struct bio_st BIO;
00200
00201 void BIO_set_flags(BIO *b, int flags);
00202 int BIO_test_flags(const BIO *b, int flags);
00203 void BIO_clear_flags(BIO *b, int flags);
00204
00205 #define BIO_get_flags(b) BIO_test_flags(b, ~(0x0))
00206 #define BIO_set_retry_special(b) \
00207 BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY))
00208 #define BIO_set_retry_read(b) \
00209 BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY))
00210 #define BIO_set_retry_write(b) \
00211 BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY))
00212
00213
00214 #define BIO_clear_retry_flags(b) \
00215 BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
00216 #define BIO_get_retry_flags(b) \
00217 BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
00218
00219
00220 #define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ)
00221 #define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE)
00222 #define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL)
00223 #define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS)
00224 #define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY)
00225
00226
00227
00228
00229
00230
00231
00232 #define BIO_RR_SSL_X509_LOOKUP 0x01
00233
00234 #define BIO_RR_CONNECT 0x02
00235
00236 #define BIO_RR_ACCEPT 0x03
00237
00238
00239 #define BIO_CB_FREE 0x01
00240 #define BIO_CB_READ 0x02
00241 #define BIO_CB_WRITE 0x03
00242 #define BIO_CB_PUTS 0x04
00243 #define BIO_CB_GETS 0x05
00244 #define BIO_CB_CTRL 0x06
00245
00246
00247
00248 #define BIO_CB_RETURN 0x80
00249 #define BIO_CB_return(a) ((a)|BIO_CB_RETURN))
00250 #define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN))
00251 #define BIO_cb_post(a) ((a)&BIO_CB_RETURN)
00252
00253 long (*BIO_get_callback(const BIO *b)) (struct bio_st *,int,const char *,int, long,long);
00254 void BIO_set_callback(BIO *b,
00255 long (*callback)(struct bio_st *,int,const char *,int, long,long));
00256 char *BIO_get_callback_arg(const BIO *b);
00257 void BIO_set_callback_arg(BIO *b, char *arg);
00258
00259 const char * BIO_method_name(const BIO *b);
00260 int BIO_method_type(const BIO *b);
00261
00262 typedef void bio_info_cb(struct bio_st *, int, const char *, int, long, long);
00263
00264 #ifndef OPENSSL_SYS_WIN16
00265 typedef struct bio_method_st
00266 {
00267 int type;
00268 const char *name;
00269 int (*bwrite)(BIO *, const char *, int);
00270 int (*bread)(BIO *, char *, int);
00271 int (*bputs)(BIO *, const char *);
00272 int (*bgets)(BIO *, char *, int);
00273 long (*ctrl)(BIO *, int, long, void *);
00274 int (*create)(BIO *);
00275 int (*destroy)(BIO *);
00276 long (*callback_ctrl)(BIO *, int, bio_info_cb *);
00277 } BIO_METHOD;
00278 #else
00279 typedef struct bio_method_st
00280 {
00281 int type;
00282 const char *name;
00283 int (_far *bwrite)();
00284 int (_far *bread)();
00285 int (_far *bputs)();
00286 int (_far *bgets)();
00287 long (_far *ctrl)();
00288 int (_far *create)();
00289 int (_far *destroy)();
00290 long (_far *callback_ctrl)();
00291 } BIO_METHOD;
00292 #endif
00293
00294 struct bio_st
00295 {
00296 BIO_METHOD *method;
00297
00298 long (*callback)(struct bio_st *,int,const char *,int, long,long);
00299 char *cb_arg;
00300
00301 int init;
00302 int shutdown;
00303 int flags;
00304 int retry_reason;
00305 int num;
00306 void *ptr;
00307 struct bio_st *next_bio;
00308 struct bio_st *prev_bio;
00309 int references;
00310 unsigned long num_read;
00311 unsigned long num_write;
00312
00313 CRYPTO_EX_DATA ex_data;
00314 };
00315
00316 DECLARE_STACK_OF(BIO)
00317
00318 typedef struct bio_f_buffer_ctx_struct
00319 {
00320
00321 int ibuf_size;
00322 int obuf_size;
00323
00324 char *ibuf;
00325 int ibuf_len;
00326 int ibuf_off;
00327
00328 char *obuf;
00329 int obuf_len;
00330 int obuf_off;
00331 } BIO_F_BUFFER_CTX;
00332
00333
00334 #define BIO_CONN_S_BEFORE 1
00335 #define BIO_CONN_S_GET_IP 2
00336 #define BIO_CONN_S_GET_PORT 3
00337 #define BIO_CONN_S_CREATE_SOCKET 4
00338 #define BIO_CONN_S_CONNECT 5
00339 #define BIO_CONN_S_OK 6
00340 #define BIO_CONN_S_BLOCKED_CONNECT 7
00341 #define BIO_CONN_S_NBIO 8
00342
00343
00344 #define BIO_C_SET_CONNECT 100
00345 #define BIO_C_DO_STATE_MACHINE 101
00346 #define BIO_C_SET_NBIO 102
00347 #define BIO_C_SET_PROXY_PARAM 103
00348 #define BIO_C_SET_FD 104
00349 #define BIO_C_GET_FD 105
00350 #define BIO_C_SET_FILE_PTR 106
00351 #define BIO_C_GET_FILE_PTR 107
00352 #define BIO_C_SET_FILENAME 108
00353 #define BIO_C_SET_SSL 109
00354 #define BIO_C_GET_SSL 110
00355 #define BIO_C_SET_MD 111
00356 #define BIO_C_GET_MD 112
00357 #define BIO_C_GET_CIPHER_STATUS 113
00358 #define BIO_C_SET_BUF_MEM 114
00359 #define BIO_C_GET_BUF_MEM_PTR 115
00360 #define BIO_C_GET_BUFF_NUM_LINES 116
00361 #define BIO_C_SET_BUFF_SIZE 117
00362 #define BIO_C_SET_ACCEPT 118
00363 #define BIO_C_SSL_MODE 119
00364 #define BIO_C_GET_MD_CTX 120
00365 #define BIO_C_GET_PROXY_PARAM 121
00366 #define BIO_C_SET_BUFF_READ_DATA 122
00367 #define BIO_C_GET_CONNECT 123
00368 #define BIO_C_GET_ACCEPT 124
00369 #define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125
00370 #define BIO_C_GET_SSL_NUM_RENEGOTIATES 126
00371 #define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127
00372 #define BIO_C_FILE_SEEK 128
00373 #define BIO_C_GET_CIPHER_CTX 129
00374 #define BIO_C_SET_BUF_MEM_EOF_RETURN 130
00375 #define BIO_C_SET_BIND_MODE 131
00376 #define BIO_C_GET_BIND_MODE 132
00377 #define BIO_C_FILE_TELL 133
00378 #define BIO_C_GET_SOCKS 134
00379 #define BIO_C_SET_SOCKS 135
00380
00381 #define BIO_C_SET_WRITE_BUF_SIZE 136
00382 #define BIO_C_GET_WRITE_BUF_SIZE 137
00383 #define BIO_C_MAKE_BIO_PAIR 138
00384 #define BIO_C_DESTROY_BIO_PAIR 139
00385 #define BIO_C_GET_WRITE_GUARANTEE 140
00386 #define BIO_C_GET_READ_REQUEST 141
00387 #define BIO_C_SHUTDOWN_WR 142
00388 #define BIO_C_NREAD0 143
00389 #define BIO_C_NREAD 144
00390 #define BIO_C_NWRITE0 145
00391 #define BIO_C_NWRITE 146
00392 #define BIO_C_RESET_READ_REQUEST 147
00393 #define BIO_C_SET_MD_CTX 148
00394
00395
00396 #define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg)
00397 #define BIO_get_app_data(s) BIO_get_ex_data(s,0)
00398
00399
00400 #define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)name)
00401 #define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port)
00402 #define BIO_set_conn_ip(b,ip) BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)ip)
00403 #define BIO_set_conn_int_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,3,(char *)port)
00404 #define BIO_get_conn_hostname(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)
00405 #define BIO_get_conn_port(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)
00406 #define BIO_get_conn_ip(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)
00407 #define BIO_get_conn_int_port(b) BIO_int_ctrl(b,BIO_C_GET_CONNECT,3)
00408
00409
00410 #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)
00411
00412
00413 #define BIO_set_accept_port(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0,(char *)name)
00414 #define BIO_get_accept_port(b) BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0)
00415
00416 #define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,1,(n)?"a":NULL)
00417 #define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(char *)bio)
00418
00419 #define BIO_BIND_NORMAL 0
00420 #define BIO_BIND_REUSEADDR_IF_UNUSED 1
00421 #define BIO_BIND_REUSEADDR 2
00422 #define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL)
00423 #define BIO_get_bind_mode(b,mode) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL)
00424
00425 #define BIO_do_connect(b) BIO_do_handshake(b)
00426 #define BIO_do_accept(b) BIO_do_handshake(b)
00427 #define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL)
00428
00429
00430 #define BIO_set_url(b,url) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,0,(char *)(url))
00431 #define BIO_set_proxies(b,p) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,1,(char *)(p))
00432
00433 #define BIO_set_filter_bio(b,s) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,2,(char *)(s))
00434
00435 #define BIO_set_proxy_cb(b,cb) BIO_callback_ctrl(b,BIO_C_SET_PROXY_PARAM,3,(void *(*cb)()))
00436 #define BIO_set_proxy_header(b,sk) BIO_ctrl(b,BIO_C_SET_PROXY_PARAM,4,(char *)sk)
00437 #define BIO_set_no_connect_return(b,bool) BIO_int_ctrl(b,BIO_C_SET_PROXY_PARAM,5,bool)
00438
00439 #define BIO_get_proxy_header(b,skp) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,0,(char *)skp)
00440 #define BIO_get_proxies(b,pxy_p) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,1,(char *)(pxy_p))
00441 #define BIO_get_url(b,url) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,2,(char *)(url))
00442 #define BIO_get_no_connect_return(b) BIO_ctrl(b,BIO_C_GET_PROXY_PARAM,5,NULL)
00443
00444 #define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd)
00445 #define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c)
00446
00447 #define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)fp)
00448 #define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)fpp)
00449
00450 #define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL)
00451 #define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL)
00452
00453
00454
00455 #ifdef CONST_STRICT
00456
00457
00458
00459 int BIO_read_filename(BIO *b,const char *name);
00460 #else
00461 #define BIO_read_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
00462 BIO_CLOSE|BIO_FP_READ,(char *)name)
00463 #endif
00464 #define BIO_write_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
00465 BIO_CLOSE|BIO_FP_WRITE,name)
00466 #define BIO_append_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
00467 BIO_CLOSE|BIO_FP_APPEND,name)
00468 #define BIO_rw_filename(b,name) BIO_ctrl(b,BIO_C_SET_FILENAME, \
00469 BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name)
00470
00471
00472
00473
00474
00475 #define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)ssl)
00476 #define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp)
00477 #define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL)
00478 #define BIO_set_ssl_renegotiate_bytes(b,num) \
00479 BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL);
00480 #define BIO_get_num_renegotiates(b) \
00481 BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL);
00482 #define BIO_set_ssl_renegotiate_timeout(b,seconds) \
00483 BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL);
00484
00485
00486
00487
00488 #define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp)
00489 #define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)bm)
00490 #define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0,(char *)pp)
00491 #define BIO_set_mem_eof_return(b,v) \
00492 BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL)
00493
00494
00495 #define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL)
00496 #define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL)
00497 #define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0)
00498 #define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1)
00499 #define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf)
00500
00501
00502 #define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret))
00503
00504 #define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL)
00505 #define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL)
00506 #define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL)
00507 #define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL)
00508 #define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL)
00509 #define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL)
00510
00511 size_t BIO_ctrl_pending(BIO *b);
00512 size_t BIO_ctrl_wpending(BIO *b);
00513 #define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL)
00514 #define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \
00515 cbp)
00516 #define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb)
00517
00518
00519 #define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL)
00520
00521
00522 #define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL)
00523 #define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL)
00524 #define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2)
00525 #define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL)
00526 #define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL)
00527
00528 #define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL)
00529 #define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL)
00530 size_t BIO_ctrl_get_write_guarantee(BIO *b);
00531 size_t BIO_ctrl_get_read_request(BIO *b);
00532 int BIO_ctrl_reset_read_request(BIO *b);
00533
00534
00535 #define BIO_ctrl_dgram_connect(b,peer) \
00536 (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)peer)
00537 #define BIO_ctrl_set_connected(b, state, peer) \
00538 (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, state, (char *)peer)
00539 #define BIO_dgram_recv_timedout(b) \
00540 (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL)
00541 #define BIO_dgram_send_timedout(b) \
00542 (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL)
00543 #define BIO_dgram_set_peer(b,peer) \
00544 (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)peer)
00545
00546
00547
00548
00549 int BIO_set_ex_data(BIO *bio,int idx,void *data);
00550 void *BIO_get_ex_data(BIO *bio,int idx);
00551 int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
00552 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
00553 unsigned long BIO_number_read(BIO *bio);
00554 unsigned long BIO_number_written(BIO *bio);
00555
00556 # ifndef OPENSSL_NO_FP_API
00557 # if defined(OPENSSL_SYS_WIN16) && defined(_WINDLL)
00558 BIO_METHOD *BIO_s_file_internal(void);
00559 BIO *BIO_new_file_internal(char *filename, char *mode);
00560 BIO *BIO_new_fp_internal(FILE *stream, int close_flag);
00561 # define BIO_s_file BIO_s_file_internal
00562 # define BIO_new_file BIO_new_file_internal
00563 # define BIO_new_fp BIO_new_fp_internal
00564 # else
00565 BIO_METHOD *BIO_s_file(void );
00566 BIO *BIO_new_file(const char *filename, const char *mode);
00567 BIO *BIO_new_fp(FILE *stream, int close_flag);
00568 # define BIO_s_file_internal BIO_s_file
00569 # define BIO_new_file_internal BIO_new_file
00570 # define BIO_new_fp_internal BIO_s_file
00571 # endif
00572 # endif
00573 BIO * BIO_new(BIO_METHOD *type);
00574 int BIO_set(BIO *a,BIO_METHOD *type);
00575 int BIO_free(BIO *a);
00576 void BIO_vfree(BIO *a);
00577 int BIO_read(BIO *b, void *data, int len);
00578 int BIO_gets(BIO *bp,char *buf, int size);
00579 int BIO_write(BIO *b, const void *data, int len);
00580 int BIO_puts(BIO *bp,const char *buf);
00581 int BIO_indent(BIO *b,int indent,int max);
00582 long BIO_ctrl(BIO *bp,int cmd,long larg,void *parg);
00583 long BIO_callback_ctrl(BIO *b, int cmd, void (*fp)(struct bio_st *, int, const char *, int, long, long));
00584 char * BIO_ptr_ctrl(BIO *bp,int cmd,long larg);
00585 long BIO_int_ctrl(BIO *bp,int cmd,long larg,int iarg);
00586 BIO * BIO_push(BIO *b,BIO *append);
00587 BIO * BIO_pop(BIO *b);
00588 void BIO_free_all(BIO *a);
00589 BIO * BIO_find_type(BIO *b,int bio_type);
00590 BIO * BIO_next(BIO *b);
00591 BIO * BIO_get_retry_BIO(BIO *bio, int *reason);
00592 int BIO_get_retry_reason(BIO *bio);
00593 BIO * BIO_dup_chain(BIO *in);
00594
00595 int BIO_nread0(BIO *bio, char **buf);
00596 int BIO_nread(BIO *bio, char **buf, int num);
00597 int BIO_nwrite0(BIO *bio, char **buf);
00598 int BIO_nwrite(BIO *bio, char **buf, int num);
00599
00600 #ifndef OPENSSL_SYS_WIN16
00601 long BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi,
00602 long argl,long ret);
00603 #else
00604 long _far _loadds BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi,
00605 long argl,long ret);
00606 #endif
00607
00608 BIO_METHOD *BIO_s_mem(void);
00609 BIO *BIO_new_mem_buf(void *buf, int len);
00610 BIO_METHOD *BIO_s_socket(void);
00611 BIO_METHOD *BIO_s_connect(void);
00612 BIO_METHOD *BIO_s_accept(void);
00613 BIO_METHOD *BIO_s_fd(void);
00614 #ifndef OPENSSL_SYS_OS2
00615 BIO_METHOD *BIO_s_log(void);
00616 #endif
00617 BIO_METHOD *BIO_s_bio(void);
00618 BIO_METHOD *BIO_s_null(void);
00619 BIO_METHOD *BIO_f_null(void);
00620 BIO_METHOD *BIO_f_buffer(void);
00621 #ifdef OPENSSL_SYS_VMS
00622 BIO_METHOD *BIO_f_linebuffer(void);
00623 #endif
00624 BIO_METHOD *BIO_f_nbio_test(void);
00625 #ifndef OPENSSL_NO_DGRAM
00626 BIO_METHOD *BIO_s_datagram(void);
00627 #endif
00628
00629
00630
00631 int BIO_sock_should_retry(int i);
00632 int BIO_sock_non_fatal_error(int error);
00633 int BIO_dgram_non_fatal_error(int error);
00634
00635 int BIO_fd_should_retry(int i);
00636 int BIO_fd_non_fatal_error(int error);
00637 int BIO_dump_cb(int (*cb)(const void *data, size_t len, void *u),
00638 void *u, const char *s, int len);
00639 int BIO_dump_indent_cb(int (*cb)(const void *data, size_t len, void *u),
00640 void *u, const char *s, int len, int indent);
00641 int BIO_dump(BIO *b,const char *bytes,int len);
00642 int BIO_dump_indent(BIO *b,const char *bytes,int len,int indent);
00643 #ifndef OPENSSL_NO_FP_API
00644 int BIO_dump_fp(FILE *fp, const char *s, int len);
00645 int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent);
00646 #endif
00647 struct hostent *BIO_gethostbyname(const char *name);
00648
00649
00650
00651
00652
00653
00654
00655
00656 int BIO_sock_error(int sock);
00657 int BIO_socket_ioctl(int fd, long type, void *arg);
00658 int BIO_socket_nbio(int fd,int mode);
00659 int BIO_get_port(const char *str, unsigned short *port_ptr);
00660 int BIO_get_host_ip(const char *str, unsigned char *ip);
00661 int BIO_get_accept_socket(char *host_port,int mode);
00662 int BIO_accept(int sock,char **ip_port);
00663 int BIO_sock_init(void );
00664 void BIO_sock_cleanup(void);
00665 int BIO_set_tcp_ndelay(int sock,int turn_on);
00666
00667 BIO *BIO_new_socket(int sock, int close_flag);
00668 BIO *BIO_new_dgram(int fd, int close_flag);
00669 BIO *BIO_new_fd(int fd, int close_flag);
00670 BIO *BIO_new_connect(char *host_port);
00671 BIO *BIO_new_accept(char *host_port);
00672
00673 int BIO_new_bio_pair(BIO **bio1, size_t writebuf1,
00674 BIO **bio2, size_t writebuf2);
00675
00676
00677
00678
00679
00680 void BIO_copy_next_retry(BIO *b);
00681
00682
00683
00684 #ifdef __GNUC__
00685 # define __bio_h__attr__ __attribute__
00686 #else
00687 # define __bio_h__attr__(x)
00688 #endif
00689 int BIO_printf(BIO *bio, const char *format, ...)
00690 __bio_h__attr__((__format__(__printf__,2,3)));
00691 int BIO_vprintf(BIO *bio, const char *format, va_list args)
00692 __bio_h__attr__((__format__(__printf__,2,0)));
00693 int BIO_snprintf(char *buf, size_t n, const char *format, ...)
00694 __bio_h__attr__((__format__(__printf__,3,4)));
00695 int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
00696 __bio_h__attr__((__format__(__printf__,3,0)));
00697 #undef __bio_h__attr__
00698
00699
00700
00701
00702
00703 void ERR_load_BIO_strings(void);
00704
00705
00706
00707
00708 #define BIO_F_ACPT_STATE 100
00709 #define BIO_F_BIO_ACCEPT 101
00710 #define BIO_F_BIO_BER_GET_HEADER 102
00711 #define BIO_F_BIO_CALLBACK_CTRL 131
00712 #define BIO_F_BIO_CTRL 103
00713 #define BIO_F_BIO_GETHOSTBYNAME 120
00714 #define BIO_F_BIO_GETS 104
00715 #define BIO_F_BIO_GET_ACCEPT_SOCKET 105
00716 #define BIO_F_BIO_GET_HOST_IP 106
00717 #define BIO_F_BIO_GET_PORT 107
00718 #define BIO_F_BIO_MAKE_PAIR 121
00719 #define BIO_F_BIO_NEW 108
00720 #define BIO_F_BIO_NEW_FILE 109
00721 #define BIO_F_BIO_NEW_MEM_BUF 126
00722 #define BIO_F_BIO_NREAD 123
00723 #define BIO_F_BIO_NREAD0 124
00724 #define BIO_F_BIO_NWRITE 125
00725 #define BIO_F_BIO_NWRITE0 122
00726 #define BIO_F_BIO_PUTS 110
00727 #define BIO_F_BIO_READ 111
00728 #define BIO_F_BIO_SOCK_INIT 112
00729 #define BIO_F_BIO_WRITE 113
00730 #define BIO_F_BUFFER_CTRL 114
00731 #define BIO_F_CONN_CTRL 127
00732 #define BIO_F_CONN_STATE 115
00733 #define BIO_F_FILE_CTRL 116
00734 #define BIO_F_FILE_READ 130
00735 #define BIO_F_LINEBUFFER_CTRL 129
00736 #define BIO_F_MEM_READ 128
00737 #define BIO_F_MEM_WRITE 117
00738 #define BIO_F_SSL_NEW 118
00739 #define BIO_F_WSASTARTUP 119
00740
00741
00742 #define BIO_R_ACCEPT_ERROR 100
00743 #define BIO_R_BAD_FOPEN_MODE 101
00744 #define BIO_R_BAD_HOSTNAME_LOOKUP 102
00745 #define BIO_R_BROKEN_PIPE 124
00746 #define BIO_R_CONNECT_ERROR 103
00747 #define BIO_R_EOF_ON_MEMORY_BIO 127
00748 #define BIO_R_ERROR_SETTING_NBIO 104
00749 #define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPTED_SOCKET 105
00750 #define BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET 106
00751 #define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107
00752 #define BIO_R_INVALID_ARGUMENT 125
00753 #define BIO_R_INVALID_IP_ADDRESS 108
00754 #define BIO_R_IN_USE 123
00755 #define BIO_R_KEEPALIVE 109
00756 #define BIO_R_NBIO_CONNECT_ERROR 110
00757 #define BIO_R_NO_ACCEPT_PORT_SPECIFIED 111
00758 #define BIO_R_NO_HOSTNAME_SPECIFIED 112
00759 #define BIO_R_NO_PORT_DEFINED 113
00760 #define BIO_R_NO_PORT_SPECIFIED 114
00761 #define BIO_R_NO_SUCH_FILE 128
00762 #define BIO_R_NULL_PARAMETER 115
00763 #define BIO_R_TAG_MISMATCH 116
00764 #define BIO_R_UNABLE_TO_BIND_SOCKET 117
00765 #define BIO_R_UNABLE_TO_CREATE_SOCKET 118
00766 #define BIO_R_UNABLE_TO_LISTEN_SOCKET 119
00767 #define BIO_R_UNINITIALIZED 120
00768 #define BIO_R_UNSUPPORTED_METHOD 121
00769 #define BIO_R_WRITE_TO_READ_ONLY_BIO 126
00770 #define BIO_R_WSASTARTUP 122
00771
00772 #ifdef __cplusplus
00773 }
00774 #endif
00775 #endif