From 5b3190e6804d4e9dbce08da727d8bcfd96210c3a Mon Sep 17 00:00:00 2001 From: Mikkel Krautz Date: Sat, 29 Jul 2017 13:58:01 +0200 Subject: [PATCH] Meta: implement support for named DH parameters for sslDHParams option. --- src/murmur/Meta.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/murmur/Meta.cpp b/src/murmur/Meta.cpp index 7670b8ff2..7976dc755 100644 --- a/src/murmur/Meta.cpp +++ b/src/murmur/Meta.cpp @@ -15,6 +15,7 @@ #include "Version.h" #include "SSL.h" #include "EnvUtils.h" +#include "FFDHE.h" #if defined(USE_QSSLDIFFIEHELLMANPARAMETERS) # include @@ -519,12 +520,21 @@ bool MetaParams::loadSSLSettings() { #if defined(USE_QSSLDIFFIEHELLMANPARAMETERS) if (! qsSSLDHParams.isEmpty()) { - QFile pem(qsSSLDHParams); - if (pem.open(QIODevice::ReadOnly)) { - dhparams = pem.readAll(); - pem.close(); + if (qsSSLDHParams.startsWith(QLatin1String("@"))) { + QString group = qsSSLDHParams.mid(1).trimmed(); + QByteArray pem = FFDHE::PEMForNamedGroup(group); + if (pem.isEmpty()) { + qCritical("MetaParms: Diffie-Hellman parameters with name '%s' is not available in Murmur.", qPrintable(qsSSLDHParams)); + } + dhparams = pem; } else { - qCritical("MetaParams: Failed to read %s", qPrintable(qsSSLDHParams)); + QFile pem(qsSSLDHParams); + if (pem.open(QIODevice::ReadOnly)) { + dhparams = pem.readAll(); + pem.close(); + } else { + qCritical("MetaParams: Failed to read %s", qPrintable(qsSSLDHParams)); + } } }