diff --git a/include/mbedtls/ecdsa.h b/include/mbedtls/ecdsa.h
index 8725cee..4029c1c 100644
--- a/include/mbedtls/ecdsa.h
+++ b/include/mbedtls/ecdsa.h
@@ -85,6 +85,7 @@
 /** The maximal size of an ECDSA signature in Bytes. */
 #define MBEDTLS_ECDSA_MAX_LEN (MBEDTLS_ECDSA_MAX_SIG_LEN( \
         8 * MBEDTLS_ECP_MAX_BYTES ) )
+
 /**
  * \brief           The ECDSA context structure.
  */
@@ -287,7 +288,7 @@
 #endif /* MBEDTLS_ECDSA_DETERMINISTIC */
 
 /**
- * \brief           Convert a signature from numbers to ASN.1
+ * \brief           Convert an ECDSA signature from number pair format to ASN.1
  *
  * \param r         First number of the signature
  * \param s         Second number of the signature
diff --git a/include/mbedtls/pk.h b/include/mbedtls/pk.h
index 54b4c4a..edce48c 100644
--- a/include/mbedtls/pk.h
+++ b/include/mbedtls/pk.h
@@ -470,7 +470,8 @@
              int (*f_rng)(void *, unsigned char *, size_t), void *p_rng );
 
 /**
- * \brief           Calculate the size of a signature made with this key.
+ * \brief           Provide an upper bound for the size of a signature made
+ *                  with this key.
  *
  * \param ctx       PK context to use
  *
diff --git a/include/mbedtls/pk_info.h b/include/mbedtls/pk_info.h
index a4bba46..2ad5b3b 100644
--- a/include/mbedtls/pk_info.h
+++ b/include/mbedtls/pk_info.h
@@ -4,7 +4,8 @@
  * \brief Public Key cryptography abstraction layer: object interface
  *
  *  This file contains the info structure interface used by developers to
- *  provide engine-specific implementations of opaque key handling functions.
+ *  provide target-specific implementations of opaque key handling functions
+ *  (called engines in the following).
  *
  *  Copyright (C) 2006-2018, ARM Limited, All Rights Reserved
  *  SPDX-License-Identifier: Apache-2.0
@@ -112,7 +113,7 @@
     size_t (*get_bitlen)( const void *ctx );
 
     /** Tell if the context implements the algorithm specified by
-     * the provided type (e.g.\ ECKEY can do ECDSA).
+     * the provided type (e.g. ECKEY can do ECDSA).
      *
      * mbedtls_pk_can_do() calls this function.
      *
@@ -144,7 +145,7 @@
      *
      * mbedtls_pk_sign() calls this function.
      *
-     * Assume that the buffer \c sig has room for
+     * Assumes that the buffer \c sig has room for
      * \c signature_size_func(ctx) bytes.
      *
      * The arguments \c f_rng and \c p_rng are provided in case the
@@ -154,7 +155,7 @@
      * return #MBEDTLS_ERR_PK_BAD_INPUT_DATA otherwise.
      *
      * Opaque implementations may omit this method if they do not support
-     * signature. */
+     * signing. */
     int (*sign_func)( void *ctx, mbedtls_md_type_t md_alg,
                       const unsigned char *hash, size_t hash_len,
                       unsigned char *sig, size_t *sig_len,
