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