diff --git a/library/ssl_misc.h b/library/ssl_misc.h
index 5037e44..30c3c3a 100644
--- a/library/ssl_misc.h
+++ b/library/ssl_misc.h
@@ -2423,34 +2423,11 @@
 /* Check if we have any PSK to offer, returns 0 if PSK is available.
  * Assign the psk and ticket if pointers are present.
  */
-static inline int mbedtls_ssl_get_psk_to_offer(
+int mbedtls_ssl_get_psk_to_offer(
         const mbedtls_ssl_context *ssl,
+        int *psk_type,
         const unsigned char **psk, size_t *psk_len,
-        const unsigned char **psk_identity, size_t *psk_identity_len )
-{
-    int ptrs_present = 0;
-
-    if( psk != NULL && psk_len != NULL &&
-        psk_identity != NULL && psk_identity_len != NULL )
-    {
-        ptrs_present = 1;
-    }
-
-    /* Check if an external PSK has been configured. */
-    if( ssl->conf->psk != NULL )
-    {
-        if( ptrs_present )
-        {
-            *psk = ssl->conf->psk;
-            *psk_len = ssl->conf->psk_len;
-            *psk_identity = ssl->conf->psk_identity;
-            *psk_identity_len = ssl->conf->psk_identity_len;
-        }
-        return( 0 );
-    }
-
-    return( 1 );
-}
+        const unsigned char **psk_identity, size_t *psk_identity_len );
 
 /**
  * \brief Given an SSL context and its associated configuration, write the TLS
@@ -2459,9 +2436,11 @@
  * \param[in]   ssl     SSL context
  * \param[in]   buf     Base address of the buffer where to write the extension
  * \param[in]   end     End address of the buffer where to write the extension
- * \param[out]  out_len Length of the data written into the buffer \p buf
+ * \param[out]  out_len Length in bytes of the Pre-Shared key extension: data
+ *                      written into the buffer \p buf by this function plus
+ *                      the length of the binders to be written.
  * \param[out]  binders_len Length of the binders to be written at the end of
- *                          extension
+ *                          the extension.
  */
 int mbedtls_ssl_tls13_write_pre_shared_key_ext_without_binders(
     mbedtls_ssl_context *ssl,
@@ -2474,8 +2453,8 @@
  *        ClientHello.
  *
  * \param[in]   ssl     SSL context
- * \param[in]   buf     Base address of the buffer where to write the extension
- * \param[in]   end     End address of the buffer where to write the extension
+ * \param[in]   buf     Base address of the buffer where to write the binders
+ * \param[in]   end     End address of the buffer where to write the binders
  */
 int mbedtls_ssl_tls13_write_pre_shared_key_ext_binders(
     mbedtls_ssl_context *ssl,
