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,
diff --git a/library/ecjpake.c b/library/ecjpake.c
index dffab22..651d3e7 100644
--- a/library/ecjpake.c
+++ b/library/ecjpake.c
@@ -84,6 +84,7 @@
* Setup context
*/
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,
@@ -91,6 +92,8 @@
{
int ret;
+ ctx->role = role;
+
if( ( ctx->md_info = mbedtls_md_info_from_type( hash ) ) == NULL )
return( MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE );
@@ -932,12 +935,12 @@
if( verbose != 0 )
mbedtls_printf( " ECJPAKE test #0 (setup): " );
- TEST_ASSERT( mbedtls_ecjpake_setup( &cli,
+ TEST_ASSERT( mbedtls_ecjpake_setup( &cli, MBEDTLS_ECJPAKE_CLIENT,
MBEDTLS_MD_SHA256, MBEDTLS_ECP_DP_SECP256R1,
ecjpake_test_password,
sizeof( ecjpake_test_password ) ) == 0 );
- TEST_ASSERT( mbedtls_ecjpake_setup( &srv,
+ TEST_ASSERT( mbedtls_ecjpake_setup( &srv, MBEDTLS_ECJPAKE_SERVER,
MBEDTLS_MD_SHA256, MBEDTLS_ECP_DP_SECP256R1,
ecjpake_test_password,
sizeof( ecjpake_test_password ) ) == 0 );