X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=project.h;h=7918780f2e389a7e8a48c4de5de3437a3d4d4646;hp=4c594ff7c5b002ac600fbe9c519aea6d2a38191a;hb=2ee44d395b5fc814fc3768da2bc8f0e4230baa68;hpb=8666662f482bbfbb9c8407af506b5b82e2ef0dae diff --git a/project.h b/project.h index 4c594ff7..7918780f 100644 --- a/project.h +++ b/project.h @@ -45,6 +45,15 @@ #include "config.h" #ifdef FEATURE_HTTPS_INSPECTION +/* +* Macros for SSL structures +*/ +#define CERT_INFO_BUF_SIZE 4096 +#define CERT_FILE_BUF_SIZE 16384 +#define ISSUER_NAME_BUF_SIZE 2048 +#define HASH_OF_HOST_BUF_SIZE 16 +#endif /* FEATURE_HTTPS_INSPECTION */ + #ifdef FEATURE_PTHREAD # include typedef pthread_mutex_t privoxy_mutex_t; @@ -55,6 +64,7 @@ typedef CRITICAL_SECTION privoxy_mutex_t; #endif +#ifdef FEATURE_HTTPS_INSPECTION_MBEDTLS #include "mbedtls/net_sockets.h" #include "mbedtls/entropy.h" #include "mbedtls/ctr_drbg.h" @@ -62,15 +72,18 @@ #if defined(MBEDTLS_SSL_CACHE_C) #include "mbedtls/ssl_cache.h" #endif +#endif /* FEATURE_HTTPS_INSPECTION_MBEDTLS */ -/* -* Macros for SSL structures -*/ -#define CERT_INFO_BUF_SIZE 4096 -#define CERT_FILE_BUF_SIZE 16384 -#define ISSUER_NAME_BUF_SIZE 2048 -#define HASH_OF_HOST_BUF_SIZE 16 +#ifdef FEATURE_HTTPS_INSPECTION_OPENSSL +#ifdef _WIN32 +#include +#undef X509_NAME +#undef X509_EXTENSIONS #endif +#include +#include +#include +#endif /* FEATURE_HTTPS_INSPECTION_OPENSSL */ /* Need for struct sockaddr_storage */ #ifdef HAVE_RFC2553 @@ -287,7 +300,7 @@ struct map struct map_entry *last; }; -#ifdef FEATURE_HTTPS_INSPECTION +#ifdef FEATURE_HTTPS_INSPECTION_MBEDTLS /* * Struct of attributes necessary for TLS/SSL connection */ @@ -303,8 +316,17 @@ typedef struct { mbedtls_ssl_cache_context cache; #endif } mbedtls_connection_attr; -#endif +#endif /* FEATURE_HTTPS_INSPECTION_MBEDTLS */ +#ifdef FEATURE_HTTPS_INSPECTION_OPENSSL +/* + * Struct of attributes necessary for TLS/SSL connection + */ +typedef struct { + SSL_CTX* ctx; + BIO *bio; +} openssl_connection_attr; +#endif /* FEATURE_HTTPS_INSPECTION_OPENSSL */ /** * A HTTP request. This includes the method (GET, POST) and * the parsed URL. @@ -471,13 +493,6 @@ struct iob }; -/** - * Return the number of bytes in the I/O buffer associated with the passed - * I/O buffer. May be zero. - */ -#define IOB_PEEK(IOB) ((IOB->cur > IOB->eod) ? (IOB->eod - IOB->cur) : 0) - - /* Bits for csp->content_type bitmask: */ #define CT_TEXT 0x0001U /**< Suitable for pcrs filtering. */ #define CT_GIF 0x0002U /**< Suitable for GIF filtering. */ @@ -756,6 +771,9 @@ struct reusable_connection enum forwarder_type forwarder_type; char *gateway_host; int gateway_port; + char *auth_username; + char *auth_password; + char *forward_host; int forward_port; }; @@ -960,6 +978,14 @@ struct reusable_connection */ #define MAX_LISTENING_SOCKETS 10 +struct ssl_attr { +#ifdef FEATURE_HTTPS_INSPECTION_MBEDTLS + mbedtls_connection_attr mbedtls_attr; /* Mbed TLS attrs*/ +#endif /* FEATURE_HTTPS_INSPECTION_MBEDTLS */ +#ifdef FEATURE_HTTPS_INSPECTION_OPENSSL + openssl_connection_attr openssl_attr; /* OpenSSL atrrs */ +#endif /* FEATURE_HTTPS_INSPECTION_OPENSSL */ +}; /** * The state of a Privoxy processing thread. */ @@ -1014,10 +1040,8 @@ struct client_state /* XXX: should be renamed to server_iob */ struct iob iob[1]; -#ifdef FEATURE_HTTPS_INSPECTION - mbedtls_connection_attr mbedtls_server_attr; /* attributes for connection to server */ - mbedtls_connection_attr mbedtls_client_attr; /* attributes for connection to client */ -#endif + struct ssl_attr ssl_server_attr; /* attributes for connection to server */ + struct ssl_attr ssl_client_attr; /* attributes for connection to client */ /** An I/O buffer used for buffering data read from the client */ struct iob client_iob[1]; @@ -1088,8 +1112,24 @@ struct client_state char *error_message; #ifdef FEATURE_HTTPS_INSPECTION - /* Result of server certificate verification */ + /* Result of server certificate verification + * + * Values for flag determining certificate validity + * are compatible with return value of function + * mbedtls_ssl_get_verify_result() for mbedtls + * and SSL_get_verify_result() for openssl. + * There are no values for "invalid certificate", they are + * set by the functions mentioned above. + */ +#define SSL_CERT_VALID 0 +#ifdef FEATURE_HTTPS_INSPECTION_MBEDTLS +#define SSL_CERT_NOT_VERIFIED 0xFFFFFFFF uint32_t server_cert_verification_result; +#endif /* FEATURE_HTTPS_INSPECTION_MBEDTLS */ +#ifdef FEATURE_HTTPS_INSPECTION_OPENSSL +#define SSL_CERT_NOT_VERIFIED ~0L + long server_cert_verification_result; +#endif /* FEATURE_HTTPS_INSPECTION_OPENSSL */ /* Flag for certificate validity checking */ int dont_verify_certificate;