OLD | NEW |
1 /* crypto/bio/bio.h */ | 1 /* crypto/bio/bio.h */ |
2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 * All rights reserved. | 3 * All rights reserved. |
4 * | 4 * |
5 * This package is an SSL implementation written | 5 * This package is an SSL implementation written |
6 * by Eric Young (eay@cryptsoft.com). | 6 * by Eric Young (eay@cryptsoft.com). |
7 * The implementation was written so as to conform with Netscapes SSL. | 7 * The implementation was written so as to conform with Netscapes SSL. |
8 * | 8 * |
9 * This library is free for commercial and non-commercial use as long as | 9 * This library is free for commercial and non-commercial use as long as |
10 * the following conditions are aheared to. The following conditions | 10 * the following conditions are aheared to. The following conditions |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 #define BIO_TYPE_CONNECT (12|0x0400|0x0100) /* socket - connect */ | 88 #define BIO_TYPE_CONNECT (12|0x0400|0x0100) /* socket - connect */ |
89 #define BIO_TYPE_ACCEPT (13|0x0400|0x0100) /* socket for accept */ | 89 #define BIO_TYPE_ACCEPT (13|0x0400|0x0100) /* socket for accept */ |
90 #define BIO_TYPE_PROXY_CLIENT (14|0x0200) /* client proxy BIO */ | 90 #define BIO_TYPE_PROXY_CLIENT (14|0x0200) /* client proxy BIO */ |
91 #define BIO_TYPE_PROXY_SERVER (15|0x0200) /* server proxy BIO */ | 91 #define BIO_TYPE_PROXY_SERVER (15|0x0200) /* server proxy BIO */ |
92 #define BIO_TYPE_NBIO_TEST (16|0x0200) /* server proxy BIO */ | 92 #define BIO_TYPE_NBIO_TEST (16|0x0200) /* server proxy BIO */ |
93 #define BIO_TYPE_NULL_FILTER (17|0x0200) | 93 #define BIO_TYPE_NULL_FILTER (17|0x0200) |
94 #define BIO_TYPE_BER (18|0x0200) /* BER -> bin filter */ | 94 #define BIO_TYPE_BER (18|0x0200) /* BER -> bin filter */ |
95 #define BIO_TYPE_BIO (19|0x0400) /* (half a) BIO pair */ | 95 #define BIO_TYPE_BIO (19|0x0400) /* (half a) BIO pair */ |
96 #define BIO_TYPE_LINEBUFFER (20|0x0200) /* filter */ | 96 #define BIO_TYPE_LINEBUFFER (20|0x0200) /* filter */ |
97 #define BIO_TYPE_DGRAM (21|0x0400|0x0100) | 97 #define BIO_TYPE_DGRAM (21|0x0400|0x0100) |
| 98 #define BIO_TYPE_ASN1 (22|0x0200) /* filter */ |
98 #define BIO_TYPE_COMP (23|0x0200) /* filter */ | 99 #define BIO_TYPE_COMP (23|0x0200) /* filter */ |
99 | 100 |
100 #define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */ | 101 #define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */ |
101 #define BIO_TYPE_FILTER 0x0200 | 102 #define BIO_TYPE_FILTER 0x0200 |
102 #define BIO_TYPE_SOURCE_SINK 0x0400 | 103 #define BIO_TYPE_SOURCE_SINK 0x0400 |
103 | 104 |
104 /* BIO_FILENAME_READ|BIO_CLOSE to open or close on free. | 105 /* BIO_FILENAME_READ|BIO_CLOSE to open or close on free. |
105 * BIO_set_fp(in,stdin,BIO_NOCLOSE); */ | 106 * BIO_set_fp(in,stdin,BIO_NOCLOSE); */ |
106 #define BIO_NOCLOSE 0x00 | 107 #define BIO_NOCLOSE 0x00 |
107 #define BIO_CLOSE 0x01 | 108 #define BIO_CLOSE 0x01 |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 void BIO_set_callback(BIO *b, | 259 void BIO_set_callback(BIO *b, |
259 long (*callback)(struct bio_st *,int,const char *,int, long,long)); | 260 long (*callback)(struct bio_st *,int,const char *,int, long,long)); |
260 char *BIO_get_callback_arg(const BIO *b); | 261 char *BIO_get_callback_arg(const BIO *b); |
261 void BIO_set_callback_arg(BIO *b, char *arg); | 262 void BIO_set_callback_arg(BIO *b, char *arg); |
262 | 263 |
263 const char * BIO_method_name(const BIO *b); | 264 const char * BIO_method_name(const BIO *b); |
264 int BIO_method_type(const BIO *b); | 265 int BIO_method_type(const BIO *b); |
265 | 266 |
266 typedef void bio_info_cb(struct bio_st *, int, const char *, int, long, long); | 267 typedef void bio_info_cb(struct bio_st *, int, const char *, int, long, long); |
267 | 268 |
268 #ifndef OPENSSL_SYS_WIN16 | |
269 typedef struct bio_method_st | 269 typedef struct bio_method_st |
270 { | 270 { |
271 int type; | 271 int type; |
272 const char *name; | 272 const char *name; |
273 int (*bwrite)(BIO *, const char *, int); | 273 int (*bwrite)(BIO *, const char *, int); |
274 int (*bread)(BIO *, char *, int); | 274 int (*bread)(BIO *, char *, int); |
275 int (*bputs)(BIO *, const char *); | 275 int (*bputs)(BIO *, const char *); |
276 int (*bgets)(BIO *, char *, int); | 276 int (*bgets)(BIO *, char *, int); |
277 long (*ctrl)(BIO *, int, long, void *); | 277 long (*ctrl)(BIO *, int, long, void *); |
278 int (*create)(BIO *); | 278 int (*create)(BIO *); |
279 int (*destroy)(BIO *); | 279 int (*destroy)(BIO *); |
280 long (*callback_ctrl)(BIO *, int, bio_info_cb *); | 280 long (*callback_ctrl)(BIO *, int, bio_info_cb *); |
281 } BIO_METHOD; | 281 } BIO_METHOD; |
282 #else | |
283 typedef struct bio_method_st | |
284 { | |
285 int type; | |
286 const char *name; | |
287 int (_far *bwrite)(); | |
288 int (_far *bread)(); | |
289 int (_far *bputs)(); | |
290 int (_far *bgets)(); | |
291 long (_far *ctrl)(); | |
292 int (_far *create)(); | |
293 int (_far *destroy)(); | |
294 long (_far *callback_ctrl)(); | |
295 } BIO_METHOD; | |
296 #endif | |
297 | 282 |
298 struct bio_st | 283 struct bio_st |
299 { | 284 { |
300 BIO_METHOD *method; | 285 BIO_METHOD *method; |
301 /* bio, mode, argp, argi, argl, ret */ | 286 /* bio, mode, argp, argi, argl, ret */ |
302 long (*callback)(struct bio_st *,int,const char *,int, long,long); | 287 long (*callback)(struct bio_st *,int,const char *,int, long,long); |
303 char *cb_arg; /* first argument for the callback */ | 288 char *cb_arg; /* first argument for the callback */ |
304 | 289 |
305 int init; | 290 int init; |
306 int shutdown; | 291 int shutdown; |
307 int flags; /* extra storage */ | 292 int flags; /* extra storage */ |
308 int retry_reason; | 293 int retry_reason; |
309 int num; | 294 int num; |
310 void *ptr; | 295 void *ptr; |
311 struct bio_st *next_bio; /* used by filter BIOs */ | 296 struct bio_st *next_bio; /* used by filter BIOs */ |
312 struct bio_st *prev_bio; /* used by filter BIOs */ | 297 struct bio_st *prev_bio; /* used by filter BIOs */ |
313 int references; | 298 int references; |
314 unsigned long num_read; | 299 unsigned long num_read; |
315 unsigned long num_write; | 300 unsigned long num_write; |
316 | 301 |
317 CRYPTO_EX_DATA ex_data; | 302 CRYPTO_EX_DATA ex_data; |
318 }; | 303 }; |
319 | 304 |
320 DECLARE_STACK_OF(BIO) | 305 DECLARE_STACK_OF(BIO) |
321 | 306 |
322 typedef struct bio_f_buffer_ctx_struct | 307 typedef struct bio_f_buffer_ctx_struct |
323 { | 308 { |
| 309 /* Buffers are setup like this: |
| 310 * |
| 311 * <---------------------- size -----------------------> |
| 312 * +---------------------------------------------------+ |
| 313 * | consumed | remaining | free space | |
| 314 * +---------------------------------------------------+ |
| 315 * <-- off --><------- len -------> |
| 316 */ |
| 317 |
324 /* BIO *bio; */ /* this is now in the BIO struct */ | 318 /* BIO *bio; */ /* this is now in the BIO struct */ |
325 int ibuf_size; /* how big is the input buffer */ | 319 int ibuf_size; /* how big is the input buffer */ |
326 int obuf_size; /* how big is the output buffer */ | 320 int obuf_size; /* how big is the output buffer */ |
327 | 321 |
328 char *ibuf; /* the char array */ | 322 char *ibuf; /* the char array */ |
329 int ibuf_len; /* how many bytes are in it */ | 323 int ibuf_len; /* how many bytes are in it */ |
330 int ibuf_off; /* write/read offset */ | 324 int ibuf_off; /* write/read offset */ |
331 | 325 |
332 char *obuf; /* the char array */ | 326 char *obuf; /* the char array */ |
333 int obuf_len; /* how many bytes are in it */ | 327 int obuf_len; /* how many bytes are in it */ |
334 int obuf_off; /* write/read offset */ | 328 int obuf_off; /* write/read offset */ |
335 } BIO_F_BUFFER_CTX; | 329 } BIO_F_BUFFER_CTX; |
336 | 330 |
| 331 /* Prefix and suffix callback in ASN1 BIO */ |
| 332 typedef int asn1_ps_func(BIO *b, unsigned char **pbuf, int *plen, void *parg); |
| 333 |
337 /* connect BIO stuff */ | 334 /* connect BIO stuff */ |
338 #define BIO_CONN_S_BEFORE 1 | 335 #define BIO_CONN_S_BEFORE 1 |
339 #define BIO_CONN_S_GET_IP 2 | 336 #define BIO_CONN_S_GET_IP 2 |
340 #define BIO_CONN_S_GET_PORT 3 | 337 #define BIO_CONN_S_GET_PORT 3 |
341 #define BIO_CONN_S_CREATE_SOCKET 4 | 338 #define BIO_CONN_S_CREATE_SOCKET 4 |
342 #define BIO_CONN_S_CONNECT 5 | 339 #define BIO_CONN_S_CONNECT 5 |
343 #define BIO_CONN_S_OK 6 | 340 #define BIO_CONN_S_OK 6 |
344 #define BIO_CONN_S_BLOCKED_CONNECT 7 | 341 #define BIO_CONN_S_BLOCKED_CONNECT 7 |
345 #define BIO_CONN_S_NBIO 8 | 342 #define BIO_CONN_S_NBIO 8 |
346 /*#define BIO_CONN_get_param_hostname BIO_ctrl */ | 343 /*#define BIO_CONN_get_param_hostname BIO_ctrl */ |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 #define BIO_C_GET_WRITE_GUARANTEE 140 | 386 #define BIO_C_GET_WRITE_GUARANTEE 140 |
390 #define BIO_C_GET_READ_REQUEST 141 | 387 #define BIO_C_GET_READ_REQUEST 141 |
391 #define BIO_C_SHUTDOWN_WR 142 | 388 #define BIO_C_SHUTDOWN_WR 142 |
392 #define BIO_C_NREAD0 143 | 389 #define BIO_C_NREAD0 143 |
393 #define BIO_C_NREAD 144 | 390 #define BIO_C_NREAD 144 |
394 #define BIO_C_NWRITE0 145 | 391 #define BIO_C_NWRITE0 145 |
395 #define BIO_C_NWRITE 146 | 392 #define BIO_C_NWRITE 146 |
396 #define BIO_C_RESET_READ_REQUEST 147 | 393 #define BIO_C_RESET_READ_REQUEST 147 |
397 #define BIO_C_SET_MD_CTX 148 | 394 #define BIO_C_SET_MD_CTX 148 |
398 | 395 |
| 396 #define BIO_C_SET_PREFIX 149 |
| 397 #define BIO_C_GET_PREFIX 150 |
| 398 #define BIO_C_SET_SUFFIX 151 |
| 399 #define BIO_C_GET_SUFFIX 152 |
| 400 |
| 401 #define BIO_C_SET_EX_ARG 153 |
| 402 #define BIO_C_GET_EX_ARG 154 |
399 | 403 |
400 #define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) | 404 #define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) |
401 #define BIO_get_app_data(s) BIO_get_ex_data(s,0) | 405 #define BIO_get_app_data(s) BIO_get_ex_data(s,0) |
402 | 406 |
403 /* BIO_s_connect() and BIO_s_socks4a_connect() */ | 407 /* BIO_s_connect() and BIO_s_socks4a_connect() */ |
404 #define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)nam
e) | 408 #define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0,(char *)nam
e) |
405 #define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port) | 409 #define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1,(char *)port) |
406 #define BIO_set_conn_ip(b,ip) BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)ip) | 410 #define BIO_set_conn_ip(b,ip) BIO_ctrl(b,BIO_C_SET_CONNECT,2,(char *)ip) |
407 #define BIO_set_conn_int_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,3,(char *)por
t) | 411 #define BIO_set_conn_int_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,3,(char *)por
t) |
408 #define BIO_get_conn_hostname(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0) | 412 #define BIO_get_conn_hostname(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0) |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 /* These two aren't currently implemented */ | 556 /* These two aren't currently implemented */ |
553 /* int BIO_get_ex_num(BIO *bio); */ | 557 /* int BIO_get_ex_num(BIO *bio); */ |
554 /* void BIO_set_ex_free_func(BIO *bio,int idx,void (*cb)()); */ | 558 /* void BIO_set_ex_free_func(BIO *bio,int idx,void (*cb)()); */ |
555 int BIO_set_ex_data(BIO *bio,int idx,void *data); | 559 int BIO_set_ex_data(BIO *bio,int idx,void *data); |
556 void *BIO_get_ex_data(BIO *bio,int idx); | 560 void *BIO_get_ex_data(BIO *bio,int idx); |
557 int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, | 561 int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, |
558 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); | 562 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); |
559 unsigned long BIO_number_read(BIO *bio); | 563 unsigned long BIO_number_read(BIO *bio); |
560 unsigned long BIO_number_written(BIO *bio); | 564 unsigned long BIO_number_written(BIO *bio); |
561 | 565 |
| 566 /* For BIO_f_asn1() */ |
| 567 int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, |
| 568 asn1_ps_func *prefix_free); |
| 569 int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, |
| 570 asn1_ps_func **pprefix_free); |
| 571 int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, |
| 572 asn1_ps_func *suffix_free); |
| 573 int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, |
| 574 asn1_ps_func **psuffix_free); |
| 575 |
562 # ifndef OPENSSL_NO_FP_API | 576 # ifndef OPENSSL_NO_FP_API |
563 # if defined(OPENSSL_SYS_WIN16) && defined(_WINDLL) | |
564 BIO_METHOD *BIO_s_file_internal(void); | |
565 BIO *BIO_new_file_internal(char *filename, char *mode); | |
566 BIO *BIO_new_fp_internal(FILE *stream, int close_flag); | |
567 # define BIO_s_file BIO_s_file_internal | |
568 # define BIO_new_file BIO_new_file_internal | |
569 # define BIO_new_fp BIO_new_fp_internal | |
570 # else /* FP_API */ | |
571 BIO_METHOD *BIO_s_file(void ); | 577 BIO_METHOD *BIO_s_file(void ); |
572 BIO *BIO_new_file(const char *filename, const char *mode); | 578 BIO *BIO_new_file(const char *filename, const char *mode); |
573 BIO *BIO_new_fp(FILE *stream, int close_flag); | 579 BIO *BIO_new_fp(FILE *stream, int close_flag); |
574 # define BIO_s_file_internal»» BIO_s_file | 580 # define BIO_s_file_internal» BIO_s_file |
575 # define BIO_new_file_internal» BIO_new_file | |
576 # define BIO_new_fp_internal»» BIO_s_file | |
577 # endif /* FP_API */ | |
578 # endif | 581 # endif |
579 BIO * BIO_new(BIO_METHOD *type); | 582 BIO * BIO_new(BIO_METHOD *type); |
580 int BIO_set(BIO *a,BIO_METHOD *type); | 583 int BIO_set(BIO *a,BIO_METHOD *type); |
581 int BIO_free(BIO *a); | 584 int BIO_free(BIO *a); |
582 void BIO_vfree(BIO *a); | 585 void BIO_vfree(BIO *a); |
583 int BIO_read(BIO *b, void *data, int len); | 586 int BIO_read(BIO *b, void *data, int len); |
584 int BIO_gets(BIO *bp,char *buf, int size); | 587 int BIO_gets(BIO *bp,char *buf, int size); |
585 int BIO_write(BIO *b, const void *data, int len); | 588 int BIO_write(BIO *b, const void *data, int len); |
586 int BIO_puts(BIO *bp,const char *buf); | 589 int BIO_puts(BIO *bp,const char *buf); |
587 int BIO_indent(BIO *b,int indent,int max); | 590 int BIO_indent(BIO *b,int indent,int max); |
588 long BIO_ctrl(BIO *bp,int cmd,long larg,void *parg); | 591 long BIO_ctrl(BIO *bp,int cmd,long larg,void *parg); |
589 long BIO_callback_ctrl(BIO *b, int cmd, void (*fp)(struct bio_st *, int, const c
har *, int, long, long)); | 592 long BIO_callback_ctrl(BIO *b, int cmd, void (*fp)(struct bio_st *, int, const c
har *, int, long, long)); |
590 char * BIO_ptr_ctrl(BIO *bp,int cmd,long larg); | 593 char * BIO_ptr_ctrl(BIO *bp,int cmd,long larg); |
591 long BIO_int_ctrl(BIO *bp,int cmd,long larg,int iarg); | 594 long BIO_int_ctrl(BIO *bp,int cmd,long larg,int iarg); |
592 BIO * BIO_push(BIO *b,BIO *append); | 595 BIO * BIO_push(BIO *b,BIO *append); |
593 BIO * BIO_pop(BIO *b); | 596 BIO * BIO_pop(BIO *b); |
594 void BIO_free_all(BIO *a); | 597 void BIO_free_all(BIO *a); |
595 BIO * BIO_find_type(BIO *b,int bio_type); | 598 BIO * BIO_find_type(BIO *b,int bio_type); |
596 BIO * BIO_next(BIO *b); | 599 BIO * BIO_next(BIO *b); |
597 BIO * BIO_get_retry_BIO(BIO *bio, int *reason); | 600 BIO * BIO_get_retry_BIO(BIO *bio, int *reason); |
598 int BIO_get_retry_reason(BIO *bio); | 601 int BIO_get_retry_reason(BIO *bio); |
599 BIO * BIO_dup_chain(BIO *in); | 602 BIO * BIO_dup_chain(BIO *in); |
600 | 603 |
601 int BIO_nread0(BIO *bio, char **buf); | 604 int BIO_nread0(BIO *bio, char **buf); |
602 int BIO_nread(BIO *bio, char **buf, int num); | 605 int BIO_nread(BIO *bio, char **buf, int num); |
603 int BIO_nwrite0(BIO *bio, char **buf); | 606 int BIO_nwrite0(BIO *bio, char **buf); |
604 int BIO_nwrite(BIO *bio, char **buf, int num); | 607 int BIO_nwrite(BIO *bio, char **buf, int num); |
605 | 608 |
606 #ifndef OPENSSL_SYS_WIN16 | |
607 long BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi, | 609 long BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi, |
608 long argl,long ret); | 610 long argl,long ret); |
609 #else | |
610 long _far _loadds BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi, | |
611 long argl,long ret); | |
612 #endif | |
613 | 611 |
614 BIO_METHOD *BIO_s_mem(void); | 612 BIO_METHOD *BIO_s_mem(void); |
615 BIO *BIO_new_mem_buf(void *buf, int len); | 613 BIO *BIO_new_mem_buf(void *buf, int len); |
616 BIO_METHOD *BIO_s_socket(void); | 614 BIO_METHOD *BIO_s_socket(void); |
617 BIO_METHOD *BIO_s_connect(void); | 615 BIO_METHOD *BIO_s_connect(void); |
618 BIO_METHOD *BIO_s_accept(void); | 616 BIO_METHOD *BIO_s_accept(void); |
619 BIO_METHOD *BIO_s_fd(void); | 617 BIO_METHOD *BIO_s_fd(void); |
620 #ifndef OPENSSL_SYS_OS2 | 618 #ifndef OPENSSL_SYS_OS2 |
621 BIO_METHOD *BIO_s_log(void); | 619 BIO_METHOD *BIO_s_log(void); |
622 #endif | 620 #endif |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
772 #define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 | 770 #define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 |
773 #define BIO_R_UNINITIALIZED 120 | 771 #define BIO_R_UNINITIALIZED 120 |
774 #define BIO_R_UNSUPPORTED_METHOD 121 | 772 #define BIO_R_UNSUPPORTED_METHOD 121 |
775 #define BIO_R_WRITE_TO_READ_ONLY_BIO 126 | 773 #define BIO_R_WRITE_TO_READ_ONLY_BIO 126 |
776 #define BIO_R_WSASTARTUP 122 | 774 #define BIO_R_WSASTARTUP 122 |
777 | 775 |
778 #ifdef __cplusplus | 776 #ifdef __cplusplus |
779 } | 777 } |
780 #endif | 778 #endif |
781 #endif | 779 #endif |
OLD | NEW |