diff options
-rw-r--r-- | src/FFDHE.cpp | 10 | ||||
-rw-r--r-- | src/FFDHE.h | 4 | ||||
-rw-r--r-- | src/tests/TestFFDHE/TestFFDHE.cpp | 20 |
3 files changed, 29 insertions, 5 deletions
diff --git a/src/FFDHE.cpp b/src/FFDHE.cpp index 15f91b13c..eeb726cfc 100644 --- a/src/FFDHE.cpp +++ b/src/FFDHE.cpp @@ -8,6 +8,16 @@ #include "FFDHE.h" #include "FFDHETable.h" +QStringList FFDHE::NamedGroups() { + QStringList ng; + ng << QLatin1String("ffdhe2048"); + ng << QLatin1String("ffdhe3072"); + ng << QLatin1String("ffdhe4096"); + ng << QLatin1String("ffdhe6144"); + ng << QLatin1String("ffdhe8192"); + return ng; +} + QByteArray FFDHE::PEMForNamedGroup(QString name) { name = name.toLower(); diff --git a/src/FFDHE.h b/src/FFDHE.h index df3a1b0cd..bde244b18 100644 --- a/src/FFDHE.h +++ b/src/FFDHE.h @@ -9,6 +9,10 @@ /// FFDHE provides access to the Diffie-Hellman parameters from RFC 7919. class FFDHE { public: + /// NamedGroups returns a list of the supported named + /// groups for PEMForNamedGroup. + static QStringList NamedGroups(); + /// PEMForNamedGroup returns the PEM-encoded /// Diffie-Hellman parameters for the RFC 7919 /// group with the given name, such as "ffdhe2048", diff --git a/src/tests/TestFFDHE/TestFFDHE.cpp b/src/tests/TestFFDHE/TestFFDHE.cpp index d5dcd286d..0a8fa8ef5 100644 --- a/src/tests/TestFFDHE/TestFFDHE.cpp +++ b/src/tests/TestFFDHE/TestFFDHE.cpp @@ -22,6 +22,7 @@ class TestFFDHE : public QObject { #if defined(USE_QSSLDIFFIEHELLMANPARAMETERS) void exercise_data(); void exercise(); + void namedGroupsMethod(); #endif }; @@ -51,10 +52,7 @@ void TestFFDHE::exercise_data() { QTest::newRow("trailingspace") << QString(QLatin1String("ffdhe2048 ")) << false; } -void TestFFDHE::exercise() { - QFETCH(QString, name); - QFETCH(bool, expectedToWork); - +static bool tryFFDHELookupByName(QString name) { bool ok = true; QByteArray pem = FFDHE::PEMForNamedGroup(name); @@ -69,7 +67,19 @@ void TestFFDHE::exercise() { } } - QCOMPARE(ok, expectedToWork); + return ok; +} + +void TestFFDHE::exercise() { + QFETCH(QString, name); + QFETCH(bool, expectedToWork); + QCOMPARE(tryFFDHELookupByName(name), expectedToWork); +} + +void TestFFDHE::namedGroupsMethod() { + foreach (QString name, FFDHE::NamedGroups()) { + QCOMPARE(tryFFDHELookupByName(name), true); + } } #endif |