From 602947d48acdb1cfb4835a654721fb040ccc8101 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Thu, 18 Feb 2021 12:34:29 +0100 Subject: [PATCH] pt-tls-server: Explicitly request client authentication if necessary The PT_TLS_AUTH_TLS_OR_SASL case currently can't be implemented properly as TLS authentication will be enforced if a client identity is configured on the TLS server socket. --- src/libpttls/pt_tls_server.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/libpttls/pt_tls_server.c b/src/libpttls/pt_tls_server.c index 1ad6165f6..ba217aa9b 100644 --- a/src/libpttls/pt_tls_server.c +++ b/src/libpttls/pt_tls_server.c @@ -524,6 +524,18 @@ pt_tls_server_t *pt_tls_server_create(identification_t *server, int fd, pt_tls_auth_t auth, tnccs_t *tnccs) { private_pt_tls_server_t *this; + identification_t *client = NULL; + + switch (auth) + { + case PT_TLS_AUTH_TLS: + case PT_TLS_AUTH_TLS_OR_SASL: + case PT_TLS_AUTH_TLS_AND_SASL: + client = identification_create_from_encoding(ID_ANY, chunk_empty); + break; + default: + break; + } INIT(this, .public = { @@ -532,12 +544,14 @@ pt_tls_server_t *pt_tls_server_create(identification_t *server, int fd, .destroy = _destroy, }, .state = PT_TLS_SERVER_VERSION, - .tls = tls_socket_create(TRUE, server, NULL, fd, NULL, TLS_UNSPEC, + .tls = tls_socket_create(TRUE, server, client, fd, NULL, TLS_UNSPEC, TLS_UNSPEC, FALSE), .tnccs = (tls_t*)tnccs, .auth = auth, ); + DESTROY_IF(client); + if (!this->tls) { this->tnccs->destroy(this->tnccs);