From 96bc120213c0a280ac2cfe18cacc74bbc71d99a6 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Mon, 18 Aug 2025 13:01:46 +0200 Subject: [PATCH] [crypto,tls] set server certificate chain --- libfreerdp/crypto/tls.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/libfreerdp/crypto/tls.c b/libfreerdp/crypto/tls.c index 48d2956a8..997c7c4c1 100644 --- a/libfreerdp/crypto/tls.c +++ b/libfreerdp/crypto/tls.c @@ -1202,6 +1202,19 @@ TlsHandshakeResult freerdp_tls_accept_ex(rdpTls* tls, BIO* underlying, rdpSettin return TLS_HANDSHAKE_ERROR; } + const size_t cnt = freerdp_certificate_get_chain_len(cert); + for (size_t x = 0; x < cnt; x++) + { + X509* xcert = freerdp_certificate_get_chain_at(cert, x); + WINPR_ASSERT(xcert); + const long rc = SSL_add1_chain_cert(tls->ssl, xcert); + if (rc != 1) + { + WLog_ERR(TAG, "SSL_add1_chain_cert failed"); + return TLS_HANDSHAKE_ERROR; + } + } + #if defined(MICROSOFT_IOS_SNI_BUG) && !defined(OPENSSL_NO_TLSEXT) && \ !defined(LIBRESSL_VERSION_NUMBER) SSL_set_tlsext_debug_callback(tls->ssl, tls_openssl_tlsext_debug_callback);