diff --git a/library/ssl_misc.h b/library/ssl_misc.h
index a8bc108..68cc4f0 100644
--- a/library/ssl_misc.h
+++ b/library/ssl_misc.h
@@ -1309,6 +1309,28 @@
                                     psa_algorithm_t *alg,
                                     psa_key_type_t *key_type,
                                     size_t *key_size );
+
+/**
+ * \brief       Convert given PSA status to mbedtls error code.
+ *
+ * \param  status      [in] given PSA status
+ *
+ * \return             corresponding mbedtls error code
+ */
+static inline int psa_status_to_mbedtls( psa_status_t status )
+{
+    switch( status )
+    {
+        case PSA_SUCCESS:
+            return( 0 );
+        case PSA_ERROR_INSUFFICIENT_MEMORY:
+            return( MBEDTLS_ERR_CIPHER_ALLOC_FAILED );
+        case PSA_ERROR_NOT_SUPPORTED:
+            return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE );
+        default:
+            return( MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED );
+    }
+}
 #endif /* MBEDTLS_USE_PSA_CRYPTO */
 
 #endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 3cf741e..19204d2 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -669,23 +669,6 @@
                           const unsigned char *, size_t,
                           unsigned char *, size_t);
 
-#if defined(MBEDTLS_USE_PSA_CRYPTO)
-static int psa_status_to_mbedtls( psa_status_t status )
-{
-    switch( status )
-    {
-        case PSA_SUCCESS:
-            return( 0 );
-        case PSA_ERROR_INSUFFICIENT_MEMORY:
-            return( MBEDTLS_ERR_CIPHER_ALLOC_FAILED );
-        case PSA_ERROR_NOT_SUPPORTED:
-            return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE );
-        default:
-            return( MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED );
-    }
-}
-#endif /* MBEDTLS_USE_PSA_CRYPTO */
-
 /*
  * Populate a transform structure with session keys and all the other
  * necessary information.
diff --git a/library/ssl_tls13_keys.c b/library/ssl_tls13_keys.c
index e91b123..af01a04 100644
--- a/library/ssl_tls13_keys.c
+++ b/library/ssl_tls13_keys.c
@@ -795,23 +795,6 @@
     return( ret );
 }
 
-#if defined(MBEDTLS_USE_PSA_CRYPTO)
-static int psa_status_to_mbedtls( psa_status_t status )
-{
-    switch( status )
-    {
-        case PSA_SUCCESS:
-            return( 0 );
-        case PSA_ERROR_INSUFFICIENT_MEMORY:
-            return( MBEDTLS_ERR_CIPHER_ALLOC_FAILED );
-        case PSA_ERROR_NOT_SUPPORTED:
-            return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE );
-        default:
-            return( MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED );
-    }
-}
-#endif /* MBEDTLS_USE_PSA_CRYPTO */
-
 int mbedtls_ssl_tls13_populate_transform( mbedtls_ssl_transform *transform,
                                           int endpoint,
                                           int ciphersuite,
