diff --git a/include/mbedtls/rsa.h b/include/mbedtls/rsa.h
index e412643..d7503ac 100644
--- a/include/mbedtls/rsa.h
+++ b/include/mbedtls/rsa.h
@@ -274,11 +274,11 @@
  *                   exporting the requested parameters
  *                   cannot be done because of a lack of functionality
  *                   or because of security policies, the error code
- *                   \c MBEDTLS_ERR_RSA_EXPORT_UNSUPPORTED is returned.
+ *                   \c MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION is returned.
  *                   In this case, the RSA context stays intact and can
  *                   be continued to be used.
  *
- * \note           Reasons for returning \c MBEDTLS_ERR_RSA_EXPORT_UNSUPPORTED
+ * \note           Reasons for returning \c MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION
  *                 would be the following: Firstly, it might be that an
  *                 alternative RSA implementation is in use which stores
  *                 the key externally, and which either cannot or should not
@@ -319,11 +319,11 @@
  *                   exporting the requested parameters
  *                   cannot be done because of a lack of functionality
  *                   or because of security policies, the error code
- *                   \c MBEDTLS_ERR_RSA_EXPORT_UNSUPPORTED is returned.
+ *                   \c MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION is returned.
  *                   In this case, the RSA context stays intact and can
  *                   be continued to be used.
  *
- * \note           Reasons for returning \c MBEDTLS_ERR_RSA_EXPORT_UNSUPPORTED
+ * \note           Reasons for returning \c MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION
  *                 would be the following: Firstly, it might be that an
  *                 alternative RSA implementation is in use which stores
  *                 the key externally, and which either cannot or should not
@@ -525,7 +525,7 @@
  *                 mode being set to MBEDTLS_RSA_PRIVATE and may instead
  *                 return MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION.
  *
- * \return         0 if successful, or an MBEDTLS_ERR_RSA_XXX error code
+ * \return         0 if successful, or an \c MBEDTLS_ERR_RSA_XXX error code
  *
  * \note           The output buffer must be as large as the size
  *                 of ctx->N (eg. 128 bytes if RSA-1024 is used).
@@ -557,7 +557,7 @@
  *                 mode being set to MBEDTLS_RSA_PRIVATE and may instead
  *                 return MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION.
  *
- * \return         0 if successful, or an MBEDTLS_ERR_RSA_XXX error code
+ * \return         0 if successful, or an \c MBEDTLS_ERR_RSA_XXX error code
  *
  * \note           The output buffer must be as large as the size
  *                 of ctx->N (eg. 128 bytes if RSA-1024 is used).
@@ -592,7 +592,7 @@
  *                 mode being set to MBEDTLS_RSA_PRIVATE and may instead
  *                 return MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION.
  *
- * \return         0 if successful, or an MBEDTLS_ERR_RSA_XXX error code
+ * \return         0 if successful, or an \c MBEDTLS_ERR_RSA_XXX error code
  *
  * \note           The output buffer must be as large as the size
  *                 of ctx->N (eg. 128 bytes if RSA-1024 is used).
@@ -629,7 +629,7 @@
  *                 mode being set to MBEDTLS_RSA_PUBLIC and may instead
  *                 return MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION.
  *
- * \return         0 if successful, or an MBEDTLS_ERR_RSA_XXX error code
+ * \return         0 if successful, or an \c MBEDTLS_ERR_RSA_XXX error code
  *
  * \note           The output buffer length \c output_max_len should be
  *                 as large as the size \c ctx->len of \c ctx->N (eg. 128 bytes
@@ -670,7 +670,7 @@
  *                 mode being set to MBEDTLS_RSA_PUBLIC and may instead
  *                 return MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION.
  *
- * \return         0 if successful, or an MBEDTLS_ERR_RSA_XXX error code
+ * \return         0 if successful, or an \c MBEDTLS_ERR_RSA_XXX error code
  *
  * \note           The output buffer length \c output_max_len should be
  *                 as large as the size \c ctx->len of \c ctx->N (eg. 128 bytes
@@ -713,7 +713,7 @@
  *                 mode being set to MBEDTLS_RSA_PUBLIC and may instead
  *                 return MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION.
  *
- * \return         0 if successful, or an MBEDTLS_ERR_RSA_XXX error code
+ * \return         0 if successful, or an \c MBEDTLS_ERR_RSA_XXX error code
  *
  * \note           The output buffer length \c output_max_len should be
  *                 as large as the size \c ctx->len of \c ctx->N (eg. 128 bytes
