Store our role in the context
diff --git a/include/mbedtls/ecjpake.h b/include/mbedtls/ecjpake.h
index 2207ad9..ba0a702 100644
--- a/include/mbedtls/ecjpake.h
+++ b/include/mbedtls/ecjpake.h
@@ -30,10 +30,16 @@
extern "C" {
#endif
+typedef enum {
+ MBEDTLS_ECJPAKE_CLIENT,
+ MBEDTLS_ECJPAKE_SERVER,
+} mbedtls_ecjpake_role;
+
typedef struct
{
const mbedtls_md_info_t *md_info; /**< Hash to use */
mbedtls_ecp_group grp; /**< Elliptic curve */
+ mbedtls_ecjpake_role role; /**< Are we client or server? */
mbedtls_ecp_point X1; /**< Public key one */
mbedtls_ecp_point X2; /**< Public key two */
@@ -62,6 +68,7 @@
* standard are MBEDTLS_MD_SHA256/MBEDTLS_ECP_DP_SECP256R1.
*
* \param ctx context to set up
+ * \param role Our role: client or server
* \param hash hash function to use (MBEDTLS_MD_XXX)
* \param curve elliptic curve identifier (MBEDTLS_ECP_DP_XXX)
* \param secret shared secret
@@ -71,6 +78,7 @@
* a negative error code otherwise
*/
int mbedtls_ecjpake_setup( mbedtls_ecjpake_context *ctx,
+ mbedtls_ecjpake_role role,
mbedtls_md_type_t hash,
mbedtls_ecp_group_id curve,
const unsigned char *secret,