Changeset 12 in Main for trunk/Server/ssl.c


Ignore:
Timestamp:
Sep 13, 2024, 10:36:03 PM (2 months ago)
Author:
Nishi
Message:

vhost works

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Server/ssl.c

    r11 r12  
    22
    33#include "tw_ssl.h"
     4
     5#include "tw_config.h"
     6
     7#include <stdio.h>
     8
     9#include <cm_log.h>
     10
     11extern struct tw_config config;
     12
     13int tw_ssl_cert_cb(SSL* ssl, void* arg) {
     14        const char* s = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name);
     15        if(s != NULL) {
     16                cm_log("SSL", "Certificate request for %s", s);
     17        } else {
     18                s = config.hostname;
     19                cm_log("SSL", "Could not get the servername, defaulting to the hostname: %s", s);
     20        }
     21        struct tw_config_entry* e = tw_vhost_match(s, (uint64_t)arg);
     22        if(e != NULL && e->sslkey != NULL && e->sslcert != NULL) {
     23                SSL_use_PrivateKey_file(ssl, e->sslkey, SSL_FILETYPE_PEM);
     24                SSL_use_certificate_file(ssl, e->sslcert, SSL_FILETYPE_PEM);
     25                return 1;
     26        } else {
     27                return 0;
     28        }
     29}
     30
     31SSL_CTX* tw_create_ssl_ctx(uint64_t port) {
     32        SSL_CTX* ctx = SSL_CTX_new(TLS_server_method());
     33        SSL_CTX_set_cert_cb(ctx, tw_ssl_cert_cb, (void*)port);
     34        return ctx;
     35}
Note: See TracChangeset for help on using the changeset viewer.