diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index a109cfc..6af502e 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -10054,6 +10054,7 @@
 }
 #endif /* MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED */
 
+#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
 static int mbedtls_ssl_tls12_export_keying_material(const mbedtls_ssl_context *ssl,
                                                     const mbedtls_md_type_t hash_alg,
                                                     uint8_t *out,
@@ -10103,7 +10104,9 @@
     mbedtls_free(label_str);
     return ret;
 }
+#endif
 
+#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
 static int mbedtls_ssl_tls13_export_keying_material(mbedtls_ssl_context *ssl,
                                                     const mbedtls_md_type_t hash_alg,
                                                     uint8_t *out,
@@ -10125,6 +10128,7 @@
                                       (const unsigned char *) label, label_len,
                                       context, context_len, out, key_len);
 }
+#endif
 
 int mbedtls_ssl_export_keying_material(mbedtls_ssl_context *ssl,
                                        uint8_t *out, const size_t key_len,
@@ -10141,10 +10145,13 @@
     const mbedtls_md_type_t hash_alg = ciphersuite->mac;
 
     switch (mbedtls_ssl_get_version_number(ssl)) {
+#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
         case MBEDTLS_SSL_VERSION_TLS1_2:
             return mbedtls_ssl_tls12_export_keying_material(ssl, hash_alg, out, key_len,
                                                             label, label_len,
                                                             context, context_len, use_context);
+#endif
+#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
         case MBEDTLS_SSL_VERSION_TLS1_3:
             return mbedtls_ssl_tls13_export_keying_material(ssl,
                                                             hash_alg,
@@ -10154,6 +10161,7 @@
                                                             label_len,
                                                             use_context ? context : NULL,
                                                             use_context ? context_len : 0);
+#endif
         default:
             return MBEDTLS_ERR_SSL_BAD_PROTOCOL_VERSION;
     }
