mirror of
https://github.com/3proxy/3proxy.git
synced 2025-04-19 02:32:09 +08:00
58 lines
1.1 KiB
C
58 lines
1.1 KiB
C
#ifndef __my_ssl_h__
|
|
#define __my_ssl_h__
|
|
|
|
//
|
|
// opaque connection structure
|
|
//
|
|
typedef void *SSL_CONN;
|
|
//
|
|
// opaque certificate structure
|
|
//
|
|
typedef void *SSL_CERT;
|
|
|
|
struct ssl_config {
|
|
int mitm;
|
|
int serv;
|
|
char *certcache;
|
|
X509 *CA_cert;
|
|
X509 *server_cert;
|
|
EVP_PKEY *CA_key;
|
|
EVP_PKEY *server_key;
|
|
SSL_CTX *cli_ctx;
|
|
SSL_CTX *srv_ctx;
|
|
};
|
|
|
|
typedef struct ssl_config SSL_CONFIG;
|
|
|
|
|
|
//
|
|
// Create copy of certificate signed by "other" CA
|
|
//
|
|
SSL_CERT ssl_copy_cert(SSL_CERT cert, SSL_CONFIG *config);
|
|
|
|
//
|
|
// SSL/TLS handshakes
|
|
//
|
|
SSL_CONN ssl_handshake_to_server(SOCKET s, char * hostname, SSL_CTX *srv_ctx, SSL_CERT *server_cert, char **errSSL);
|
|
SSL_CONN ssl_handshake_to_client(SOCKET s, SSL_CERT server_cert, EVP_PKEY *server_key, char **errSSL);
|
|
|
|
//
|
|
// SSL/TLS Read/Write
|
|
//
|
|
int ssl_read(SSL_CONN connection, void * buf, int bufsize);
|
|
int ssl_write(SSL_CONN connection, void * buf, int bufsize);
|
|
int ssl_pending(SSL_CONN connection);
|
|
|
|
//
|
|
// Release of opaque structures
|
|
//
|
|
void ssl_conn_free(SSL_CONN connection);
|
|
void _ssl_cert_free(SSL_CERT cert);
|
|
|
|
//
|
|
// Global (de)initialization
|
|
//
|
|
void ssl_init(void);
|
|
|
|
|
|
#endif // __my_ssl_h__
|