5 #include <netinet/in.h>
6 #include <openssl/prov_ssl.h>
7 #include <openssl/types.h>
14 #include <sys/socket.h>
15 #include <arpa/inet.h>
16 #include <sys/select.h>
17 #include <openssl/ssl.h>
18 #include <openssl/err.h>
21 servername_callback(SSL *ssl,
int *a,
void *b)
23 return (SSL_TLSEXT_ERR_OK);
27 create_tls_context(
const char *cert_file,
const char *key_file)
29 const SSL_METHOD *method;
32 method = TLS_server_method();
34 ctx = SSL_CTX_new(method);
37 ERR_print_errors_fp(stderr);
43 SSL_CTX_set_min_proto_version(ctx, TLS1_2_VERSION);
45 if (SSL_CTX_use_certificate_file(ctx, cert_file, SSL_FILETYPE_PEM) <= 0)
47 ERR_print_errors_fp(stderr);
51 if (SSL_CTX_use_PrivateKey_file(ctx, key_file, SSL_FILETYPE_PEM) <= 0)
53 ERR_print_errors_fp(stderr);
57 SSL_CTX_set_tlsext_servername_callback(ctx, servername_callback);
65 SSL_load_error_strings();