diff --git a/programs/ssl/ssl_test_lib.c b/programs/ssl/ssl_test_lib.c
index fdb6a52..37062b7 100644
--- a/programs/ssl/ssl_test_lib.c
+++ b/programs/ssl/ssl_test_lib.c
@@ -451,6 +451,14 @@
 
 #if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_EPHEMERAL_ENABLED) && \
     defined(PSA_WANT_ALG_FFDH)
+
+/* Finite Field Group Names (DHE) */
+#define MBEDTLS_SSL_IANA_TLS_GROUP_NAME_FFDHE2048     "ffdhe2048"
+#define MBEDTLS_SSL_IANA_TLS_GROUP_NAME_FFDHE3072     "ffdhe3072"
+#define MBEDTLS_SSL_IANA_TLS_GROUP_NAME_FFDHE4096     "ffdhe4096"
+#define MBEDTLS_SSL_IANA_TLS_GROUP_NAME_FFDHE6144     "ffdhe6144"
+#define MBEDTLS_SSL_IANA_TLS_GROUP_NAME_FFDHE8192     "ffdhe8192"
+
 static uint16_t mbedtls_ssl_ffdh_group_from_name(const char *name)
 {
     if (strcmp(name, MBEDTLS_SSL_IANA_TLS_GROUP_NAME_FFDHE2048) == 0) {
@@ -469,7 +477,6 @@
 
 static const uint16_t *mbedtls_ssl_ffdh_supported_groups(void)
 {
-#if defined(PSA_WANT_ALG_FFDH)
     static const uint16_t ffdh_groups[] = {
         MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE2048,
         MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE3072,
@@ -479,9 +486,25 @@
         0
     };
     return ffdh_groups;
-#else
+}
+
+static inline const char *mbedtls_ssl_ffdh_name_from_group(uint16_t group)
+{
+    switch (group) {
+        case MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE2048:
+            return MBEDTLS_SSL_IANA_TLS_GROUP_NAME_FFDHE2048;
+        case MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE3072:
+            return MBEDTLS_SSL_IANA_TLS_GROUP_NAME_FFDHE3072;
+        case MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE4096:
+            return MBEDTLS_SSL_IANA_TLS_GROUP_NAME_FFDHE4096;
+        case MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE6144:
+            return MBEDTLS_SSL_IANA_TLS_GROUP_NAME_FFDHE6144;
+        case MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE8192:
+            return MBEDTLS_SSL_IANA_TLS_GROUP_NAME_FFDHE8192;
+        default:
+            return NULL;
+    }
     return NULL;
-#endif
 }
 #endif /* MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_EPHEMERAL_ENABLED && PSA_WANT_ALG_FFDH */
 
@@ -498,7 +521,7 @@
         while (i < group_list_len - 1 && *p != '\0') {
             q = p;
 #if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_EPHEMERAL_ENABLED) && \
-    defined(PSA_WANT_ALG_FFDH)
+            defined(PSA_WANT_ALG_FFDH)
             uint16_t ffdh_group = 0;
 #endif
 #if defined(MBEDTLS_ECP_LIGHT)
@@ -518,7 +541,7 @@
             } else
 #endif
 #if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_EPHEMERAL_ENABLED) && \
-    defined(PSA_WANT_ALG_FFDH)
+            defined(PSA_WANT_ALG_FFDH)
             if ((ffdh_group = mbedtls_ssl_ffdh_group_from_name(q)) != 0) {
                 group_list[i++] = ffdh_group;
             } else
@@ -534,7 +557,7 @@
                 }
 #endif
 #if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_EPHEMERAL_ENABLED) && \
-    defined(PSA_WANT_ALG_FFDH)
+                defined(PSA_WANT_ALG_FFDH)
                 const uint16_t *supported_ffdh_group = mbedtls_ssl_ffdh_supported_groups();
                 while (*supported_ffdh_group != 0) {
                     mbedtls_printf("%s ",
