Add mbedtls_ecjpake_check(), tells if set up
This will be used in SSL to avoid the computation-heavy processing of EC
J-PAKE hello extensions in case we don't have an EC J-PAKE password
diff --git a/include/mbedtls/ecjpake.h b/include/mbedtls/ecjpake.h
index 8096848..c1aa8cf 100644
--- a/include/mbedtls/ecjpake.h
+++ b/include/mbedtls/ecjpake.h
@@ -115,6 +115,16 @@
const unsigned char *secret,
size_t len );
+/*
+ * \brief Check if a context is ready for use
+ *
+ * \param ctx Context to check
+ *
+ * \return 0 if the context is ready for use,
+ * MBEDTLS_ERR_ECP_BAD_INPUT_DATA otherwise
+ */
+int mbedtls_ecjpake_check( const mbedtls_ecjpake_context *ctx );
+
/**
* \brief Generate and write the first round message
* (TLS: contents of the Client/ServerHello extension,
diff --git a/library/ecjpake.c b/library/ecjpake.c
index f5863bc..0535a57 100644
--- a/library/ecjpake.c
+++ b/library/ecjpake.c
@@ -120,6 +120,21 @@
}
/*
+ * Check if context is ready for use
+ */
+int mbedtls_ecjpake_check( const mbedtls_ecjpake_context *ctx )
+{
+ if( ctx->md_info == NULL ||
+ ctx->grp.id == MBEDTLS_ECP_DP_NONE ||
+ ctx->s.p == NULL )
+ {
+ return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA );
+ }
+
+ return( 0 );
+}
+
+/*
* Write a point plus its length to a buffer
*/
static int ecjpake_write_len_point( unsigned char **p,