1 /* $NetBSD: tlsproxy.h,v 1.2 2020/03/18 19:05:21 christos Exp $ */ 2 3 /*++ 4 /* NAME 5 /* tlsproxy 3h 6 /* SUMMARY 7 /* tlsproxy internal interfaces 8 /* SYNOPSIS 9 /* #include <tlsproxy.h> 10 /* DESCRIPTION 11 /* .nf 12 13 /* 14 * Utility library. 15 */ 16 #include <vstream.h> 17 #include <nbbio.h> 18 19 /* 20 * TLS library. 21 */ 22 #include <tls.h> 23 24 /* 25 * Internal interface. 26 */ 27 typedef struct { 28 int flags; /* see below */ 29 int req_flags; /* request flags, see tls_proxy.h */ 30 int is_server_role; /* avoid clumsy handler code */ 31 char *service; /* argv[0] */ 32 VSTREAM *plaintext_stream; /* local peer: postscreen(8), etc. */ 33 NBBIO *plaintext_buf; /* plaintext buffer */ 34 int ciphertext_fd; /* remote peer */ 35 EVENT_NOTIFY_FN ciphertext_timer; /* kludge */ 36 int timeout; /* read/write time limit */ 37 int handshake_timeout; /* in-handshake time limit */ 38 int session_timeout; /* post-handshake time limit */ 39 char *remote_endpt; /* printable remote endpoint */ 40 char *server_id; /* cache management */ 41 TLS_APPL_STATE *appl_state; /* libtls state */ 42 TLS_SESS_STATE *tls_context; /* libtls state */ 43 int ssl_last_err; /* TLS I/O state */ 44 TLS_CLIENT_PARAMS *tls_params; /* globals not part of init_props */ 45 TLS_SERVER_INIT_PROPS *server_init_props; 46 TLS_SERVER_START_PROPS *server_start_props; 47 TLS_CLIENT_INIT_PROPS *client_init_props; 48 TLS_CLIENT_START_PROPS *client_start_props; 49 } TLSP_STATE; 50 51 #define TLSP_FLAG_DO_HANDSHAKE (1<<0) 52 #define TLSP_FLAG_NO_MORE_CIPHERTEXT_IO (1<<1) /* overrides DO_HANDSHAKE */ 53 54 extern TLSP_STATE *tlsp_state_create(const char *, VSTREAM *); 55 extern void tlsp_state_free(TLSP_STATE *); 56 57 /* LICENSE 58 /* .ad 59 /* .fi 60 /* The Secure Mailer license must be distributed with this software. 61 /* AUTHOR(S) 62 /* Wietse Venema 63 /* IBM T.J. Watson Research 64 /* P.O. Box 704 65 /* Yorktown Heights, NY 10598, USA 66 /* 67 /* Wietse Venema 68 /* Google, Inc. 69 /* 111 8th Avenue 70 /* New York, NY 10011, USA 71 /*--*/ 72