diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h
index a4c0467..e1ba5cd 100644
--- a/include/mbedtls/ssl_internal.h
+++ b/include/mbedtls/ssl_internal.h
@@ -1096,50 +1096,23 @@
 #endif
 
 #if defined(MBEDTLS_SSL_DTLS_SRTP)
-static inline uint16_t mbedtls_ssl_get_srtp_profile_iana_value
-                                            ( mbedtls_ssl_srtp_profile profile )
-{
-    uint16_t profile_value = 0xffff;
-    switch( profile )
-    {
-        case MBEDTLS_SRTP_AES128_CM_HMAC_SHA1_80:
-            profile_value = MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80;
-            break;
-        case MBEDTLS_SRTP_AES128_CM_HMAC_SHA1_32:
-            profile_value = MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32;
-            break;
-        case MBEDTLS_SRTP_NULL_HMAC_SHA1_80:
-            profile_value = MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80;
-            break;
-        case MBEDTLS_SRTP_NULL_HMAC_SHA1_32:
-            profile_value = MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32;
-            break;
-        default: break;
-    }
-    return( profile_value );
-}
+#if defined(MBEDTLS_DEBUG_C)
+const char *mbedtls_ssl_get_srtp_profile_as_string ( mbedtls_ssl_srtp_profile profile );
+#endif /* MBEDTLS_DEBUG_C */
 
-static inline mbedtls_ssl_srtp_profile mbedtls_ssl_get_srtp_profile_value
-                                                    ( uint16_t srtp_iana_value )
+static inline mbedtls_ssl_srtp_profile mbedtls_ssl_check_srtp_profile_value
+                                                    ( const uint16_t srtp_profile_value )
 {
-    mbedtls_ssl_srtp_profile profile_value = MBEDTLS_SRTP_UNSET_PROFILE;
-    switch( srtp_iana_value )
+    switch( srtp_profile_value )
     {
         case MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_80:
-            profile_value = MBEDTLS_SRTP_AES128_CM_HMAC_SHA1_80;
-            break;
         case MBEDTLS_TLS_SRTP_AES128_CM_HMAC_SHA1_32:
-            profile_value = MBEDTLS_SRTP_AES128_CM_HMAC_SHA1_32;
-            break;
         case MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_80:
-            profile_value = MBEDTLS_SRTP_NULL_HMAC_SHA1_80;
-            break;
         case MBEDTLS_TLS_SRTP_NULL_HMAC_SHA1_32:
-            profile_value = MBEDTLS_SRTP_NULL_HMAC_SHA1_32;
-            break;
+            return srtp_profile_value;
         default: break;
     }
-    return( profile_value );
+    return( MBEDTLS_TLS_SRTP_UNSET );
 }
 #endif
 
