Home | History | Annotate | Line # | Download | only in tlsproxy
      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