diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 6b08445..caaba24 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -4690,29 +4690,24 @@
 #endif /* MBEDTLS_SSL_ALPN */
 
 #if defined(MBEDTLS_SSL_DTLS_SRTP)
-static const mbedtls_ssl_srtp_profile_info srtp_profile_definitions[] =
+#if defined(MBEDTLS_DEBUG_C)
+const char *mbedtls_ssl_get_srtp_profile_as_string ( mbedtls_ssl_srtp_profile profile )
 {
-    { MBEDTLS_SRTP_AES128_CM_HMAC_SHA1_80, "MBEDTLS_SRTP_AES128_CM_HMAC_SHA1_80" },
-    { MBEDTLS_SRTP_AES128_CM_HMAC_SHA1_32, "MBEDTLS_SRTP_AES128_CM_HMAC_SHA1_32" },
-    { MBEDTLS_SRTP_NULL_HMAC_SHA1_80, "MBEDTLS_SRTP_NULL_HMAC_SHA1_80" },
-    { MBEDTLS_SRTP_NULL_HMAC_SHA1_32, "MBEDTLS_SRTP_NULL_HMAC_SHA1_32" },
-    { MBEDTLS_SRTP_UNSET_PROFILE, "" }
-};
-
-const mbedtls_ssl_srtp_profile_info *mbedtls_ssl_dtls_srtp_profile_info_from_id( mbedtls_ssl_srtp_profile profile )
-{
-    const mbedtls_ssl_srtp_profile_info *cur = srtp_profile_definitions;
-
-    while( cur->profile != MBEDTLS_SRTP_UNSET_PROFILE )
+    switch( profile )
     {
-        if( cur->profile == profile )
-            return( cur );
-
-        cur++;
+        case MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80:
+            return "MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80";
+        case MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32:
+            return "MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32";
+        case MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80:
+            return "MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80";
+        case MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32:
+            return "MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32";
+        default: break;
     }
-
-    return( NULL );
+    return( "" );
 }
+#endif /* MBEDTLS_DEBUG_C */
 
 void mbedtls_ssl_conf_srtp_mki_value_supported( mbedtls_ssl_config *conf,
                                                 int support_mki_value )
@@ -4758,10 +4753,10 @@
     {
         switch( profiles[i] )
         {
-            case MBEDTLS_SRTP_AES128_CM_HMAC_SHA1_80:
-            case MBEDTLS_SRTP_AES128_CM_HMAC_SHA1_32:
-            case MBEDTLS_SRTP_NULL_HMAC_SHA1_80:
-            case MBEDTLS_SRTP_NULL_HMAC_SHA1_32:
+            case MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80:
+            case MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32:
+            case MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80:
+            case MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32:
                 break;
             default:
                 conf->dtls_srtp_profile_list = NULL;
