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 */ 27typedef 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 54extern TLSP_STATE *tlsp_state_create(const char *, VSTREAM *); 55extern 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