diff --git a/include/mbedtls/ecjpake.h b/include/mbedtls/ecjpake.h
index 8dc8244..56bf397 100644
--- a/include/mbedtls/ecjpake.h
+++ b/include/mbedtls/ecjpake.h
@@ -151,40 +151,6 @@
                                     size_t len );
 
 /*
- * \brief           Generate and write ServerECJPAKEParams
- *                  (the contents for the ServerKeyExchange)
- *
- * \param ctx       Context to use
- * \param buf       Buffer to write the contents to
- * \param len       Buffer size
- * \param olen      Will be updated with the number of bytes written
- * \param f_rng     RNG function
- * \param p_rng     RNG parameter
- *
- * \return          0 if successfull,
- *                  a negative error code otherwise
- */
-int mbedtls_ecjpake_tls_write_server_params( mbedtls_ecjpake_context *ctx,
-                            unsigned char *buf, size_t len, size_t *olen,
-                            int (*f_rng)(void *, unsigned char *, size_t),
-                            void *p_rng );
-
-/*
- * \brief           Read and process ServerECJPAKEParams
- *                  (the contents for the ServerKeyExchange)
- *
- * \param ctx       Context to use
- * \param buf       Pointer to the message
- * \param len       Message length
- *
- * \return          0 if successfull,
- *                  a negative error code otherwise
- */
-int mbedtls_ecjpake_tls_read_server_params( mbedtls_ecjpake_context *ctx,
-                                            const unsigned char *buf,
-                                            size_t len );
-
-/*
  * \brief           Generate and write ClientECJPAKEParams
  *                  (the contents for the ClientKeyExchange)
  *
@@ -198,7 +164,7 @@
  * \return          0 if successfull,
  *                  a negative error code otherwise
  */
-int mbedtls_ecjpake_tls_write_client_params( mbedtls_ecjpake_context *ctx,
+int mbedtls_ecjpake_write_round_two( mbedtls_ecjpake_context *ctx,
                             unsigned char *buf, size_t len, size_t *olen,
                             int (*f_rng)(void *, unsigned char *, size_t),
                             void *p_rng );
@@ -214,7 +180,7 @@
  * \return          0 if successfull,
  *                  a negative error code otherwise
  */
-int mbedtls_ecjpake_tls_read_client_params( mbedtls_ecjpake_context *ctx,
+int mbedtls_ecjpake_read_round_two( mbedtls_ecjpake_context *ctx,
                                             const unsigned char *buf,
                                             size_t len );
 
