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