diff --git a/include/mbedtls/pk.h b/include/mbedtls/pk.h
index ebd898e..86ab7d6 100644
--- a/include/mbedtls/pk.h
+++ b/include/mbedtls/pk.h
@@ -359,38 +359,34 @@
 
 #if defined(MBEDTLS_USE_PSA_CRYPTO)
 /**
- * \brief           Initialize a PK context to wrap a PSA key.
+ * \brief Initialize a PK context to wrap a PSA key.
  *
- *                  This function helps creating a PK context which wraps a
- *                  PSA key. The PSA wrapped key must be an EC or RSA key pair
- *                  (DH is not suported in PK module).
+ * This function helps creating a PK context which wraps a PSA key. The PSA wrapped
+ * key must be an EC or RSA key pair (DH is not suported in PK module).
  *
- *                  Under the hood PSA functions are used to perform the required
- *                  operations and, based on the key type, used algorithms will be:
- *                  * EC:
- *                      * verify, verify_ext, sign, sign_ext: ECDSA.
- *                  * RSA:
- *                      * sign, sign_ext, decrypt: use the primary algorithm in
- *                        the wrapped PSA key;
- *                      * verify, verify_ext, encrypt: not supported.
+ * Under the hood PSA functions are used to perform the required
+ * operations and, based on the key type, used algorithms will be:
+ * * EC:
+ *     * verify, verify_ext, sign, sign_ext: ECDSA.
+ * * RSA:
+ *     * sign, sign_ext, decrypt: use the primary algorithm in the wrapped PSA key;
+ *     * verify, verify_ext, encrypt: not supported.
  *
- *                  In order for the above operations to succeed, the policy of
- *                  the wrapped PSA key must allow the specified algorithm.
+ * In order for the above operations to succeed, the policy of the wrapped PSA
+ * key must allow the specified algorithm.
  *
- * \warning         The PSA wrapped key must remain valid as long as the wrapping
- *                  PK context is in use, that is at least between the point this
- *                  function is called and the point mbedtls_pk_free() is called
- *                  on this context.
+ * \warning The PSA wrapped key must remain valid as long as the wrapping PK
+ *          context is in use, that is at least between the point this function
+ *          is called and the point mbedtls_pk_free() is called on this context.
  *
- * \param ctx       The context to initialize. It must be empty (type NONE).
- * \param key       The PSA key to wrap, which must hold an ECC or RSA key pair.
+ * \param ctx The context to initialize. It must be empty (type NONE).
+ * \param key The PSA key to wrap, which must hold an ECC or RSA key pair.
  *
- * \return          \c 0 on success.
- * \return          #MBEDTLS_ERR_PK_BAD_INPUT_DATA on invalid input
- *                  (context already used, invalid key identifier).
- * \return          #MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE if the key is not an
- *                  ECC key pair.
- * \return          #MBEDTLS_ERR_PK_ALLOC_FAILED on allocation failure.
+ * \return    \c 0 on success.
+ * \return    #MBEDTLS_ERR_PK_BAD_INPUT_DATA on invalid input (context already
+ *            used, invalid key identifier).
+ * \return    #MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE if the key is not an ECC key pair.
+ * \return    #MBEDTLS_ERR_PK_ALLOC_FAILED on allocation failure.
  */
 int mbedtls_pk_setup_opaque(mbedtls_pk_context *ctx,
                             const mbedtls_svc_key_id_t key);
