From 57f9babda22d4c555165149334351b487b08b639 Mon Sep 17 00:00:00 2001 From: Leo Date: Mon, 4 May 2026 12:45:33 +0800 Subject: [PATCH 1/2] feat: prioritize post quantum EC groups Signed-off-by: Leo --- src/tlshd/ktls.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/tlshd/ktls.c b/src/tlshd/ktls.c index 311847d..3a5ee91 100644 --- a/src/tlshd/ktls.c +++ b/src/tlshd/ktls.c @@ -478,6 +478,15 @@ static int tlshd_gnutls_priority_init_list(const unsigned int *ciphers, if (!pstring) return -ENOMEM; + /* Prioritize post-quantum EC groups. */ + pstring = tlshd_string_concat(pstring, + ":-GROUP-ALL:+GROUP-X25519-MLKEM768:+GROUP-SECP256R1-MLKEM768:+GROUP-SECP384R1-MLKEM1024" + ":+GROUP-X25519:+GROUP-X448:+GROUP-SECP256R1:+GROUP-SECP384R1:+GROUP-SECP521R1" + ":+GROUP-FFDHE2048:+GROUP-FFDHE3072:+GROUP-FFDHE4096:+GROUP-FFDHE6144:+GROUP-FFDHE8192" + ); + if (!pstring) + return -ENOMEM; + /* * Handshakes must negotiate only ciphers that are supported * by kTLS. The list below contains the ciphers that are From 8dcbd1ef947d18d04af300e816a987a34563d75d Mon Sep 17 00:00:00 2001 From: Leo Date: Tue, 5 May 2026 01:25:16 +0800 Subject: [PATCH 2/2] fix: avoid enabling MLKEM groups when run against legacy version of GnuTLS that not support such groups, otherwise tlshd would fail reference: - https://lists.gnupg.org/pipermail/gnutls-help/2024-November/004865.html - https://lists.gnupg.org/pipermail/gnutls-help/2025-February/004875.html Signed-off-by: Leo --- src/tlshd/ktls.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/tlshd/ktls.c b/src/tlshd/ktls.c index 3a5ee91..0d66f55 100644 --- a/src/tlshd/ktls.c +++ b/src/tlshd/ktls.c @@ -479,8 +479,23 @@ static int tlshd_gnutls_priority_init_list(const unsigned int *ciphers, return -ENOMEM; /* Prioritize post-quantum EC groups. */ + pstring = tlshd_string_concat(pstring, ":-GROUP-ALL"); + if (!pstring) + return -ENOMEM; + + if (gnutls_check_version_numeric(3, 8, 8)) { + pstring = tlshd_string_concat(pstring, ":+GROUP-X25519-MLKEM768:+GROUP-SECP256R1-MLKEM768"); + if (!pstring) + return -ENOMEM; + } + + if (gnutls_check_version_numeric(3, 8, 9)) { + pstring = tlshd_string_concat(pstring, ":+GROUP-SECP384R1-MLKEM1024"); + if (!pstring) + return -ENOMEM; + } + pstring = tlshd_string_concat(pstring, - ":-GROUP-ALL:+GROUP-X25519-MLKEM768:+GROUP-SECP256R1-MLKEM768:+GROUP-SECP384R1-MLKEM1024" ":+GROUP-X25519:+GROUP-X448:+GROUP-SECP256R1:+GROUP-SECP384R1:+GROUP-SECP521R1" ":+GROUP-FFDHE2048:+GROUP-FFDHE3072:+GROUP-FFDHE4096:+GROUP-FFDHE6144:+GROUP-FFDHE8192" );