Unify loading of test vectors in tests
diff --git a/library/ecjpake.c b/library/ecjpake.c
index 031ec34..0795c1d 100644
--- a/library/ecjpake.c
+++ b/library/ecjpake.c
@@ -966,6 +966,24 @@
     0xb4, 0x38, 0xf7, 0x19, 0xd3, 0xc4, 0xf3, 0x51
 };
 
+/* Load my private keys and generate the correponding public keys */
+static int ecjpake_test_load( mbedtls_ecjpake_context *ctx,
+                              const unsigned char *xm1, size_t len1,
+                              const unsigned char *xm2, size_t len2 )
+{
+    int ret;
+
+    MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &ctx->xm1, xm1, len1 ) );
+    MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &ctx->xm2, xm2, len2 ) );
+    MBEDTLS_MPI_CHK( mbedtls_ecp_mul( &ctx->grp, &ctx->Xm1, &ctx->xm1,
+                                      &ctx->grp.G, NULL, NULL ) );
+    MBEDTLS_MPI_CHK( mbedtls_ecp_mul( &ctx->grp, &ctx->Xm2, &ctx->xm2,
+                                      &ctx->grp.G, NULL, NULL ) );
+
+cleanup:
+    return( ret );
+}
+
 /* For tests we don't need a secure RNG;
  * use the LGC from Numerical Recipes for simplicity */
 static int ecjpake_lgc( void *p, unsigned char *out, size_t len )
@@ -1065,14 +1083,9 @@
         mbedtls_printf( "  ECJPAKE test #2 (reference handshake): " );
 
     /* Simulate key generation on client, skip writing client_ext */
-    MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &cli.xm1,
-                ecjpake_test_x1, sizeof( ecjpake_test_x1 ) ) );
-    MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &cli.xm2,
+    MBEDTLS_MPI_CHK( ecjpake_test_load( &cli,
+                ecjpake_test_x1, sizeof( ecjpake_test_x1 ),
                 ecjpake_test_x2, sizeof( ecjpake_test_x2 ) ) );
-    MBEDTLS_MPI_CHK( mbedtls_ecp_mul( &cli.grp, &cli.Xm1, &cli.xm1,
-                                      &cli.grp.G, NULL, NULL ) );
-    MBEDTLS_MPI_CHK( mbedtls_ecp_mul( &cli.grp, &cli.Xm2, &cli.xm2,
-                                      &cli.grp.G, NULL, NULL ) );
 
     /* Server reads client ext */
     TEST_ASSERT( mbedtls_ecjpake_tls_read_client_ext( &srv,
@@ -1080,14 +1093,9 @@
                             sizeof( ecjpake_test_cli_ext ) ) == 0 );
 
     /* Simulate key generation on server, skip writing server_ext */
-    MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &srv.xm1,
-                ecjpake_test_x3, sizeof( ecjpake_test_x3 ) ) );
-    MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( &srv.xm2,
+    MBEDTLS_MPI_CHK( ecjpake_test_load( &srv,
+                ecjpake_test_x3, sizeof( ecjpake_test_x3 ),
                 ecjpake_test_x4, sizeof( ecjpake_test_x4 ) ) );
-    MBEDTLS_MPI_CHK( mbedtls_ecp_mul( &srv.grp, &srv.Xm1, &srv.xm1,
-                                      &srv.grp.G, NULL, NULL ) );
-    MBEDTLS_MPI_CHK( mbedtls_ecp_mul( &srv.grp, &srv.Xm2, &srv.xm2,
-                                      &srv.grp.G, NULL, NULL ) );
 
     /* Client reads server ext and key exchange */
     TEST_ASSERT( mbedtls_ecjpake_tls_read_server_ext( &cli,