Add check for the ecp module variants
Signed-off-by: Gabor Mezei <gabor.mezei@arm.com>
diff --git a/library/ecp.c b/library/ecp.c
index 1d690d1..6087256 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -3639,6 +3639,16 @@
#endif /* MBEDTLS_SELF_TEST */
+#if defined(MBEDTLS_TEST_HOOKS)
+
+MBEDTLS_STATIC_TESTABLE
+mbedtls_ecp_variant mbedtls_ecp_get_variant()
+{
+ return MBEDTLS_ECP_VARIANT_WITH_MPI_STRUCT;
+}
+
+#endif /* MBEDTLS_TEST_HOOKS */
+
#endif /* !MBEDTLS_ECP_ALT */
#endif /* MBEDTLS_ECP_LIGHT */
diff --git a/library/ecp_invasive.h b/library/ecp_invasive.h
index 0ea02e2..0a0d361 100644
--- a/library/ecp_invasive.h
+++ b/library/ecp_invasive.h
@@ -48,8 +48,21 @@
#define MBEDTLS_ECP_WITH_MPI_STRUCT
#endif
+typedef enum {
+ MBEDTLS_ECP_VARIANT_NONE = 0,
+ MBEDTLS_ECP_VARIANT_WITH_MPI_STRUCT = 1,
+ MBEDTLS_ECP_VARIANT_WITH_MPI_UINT = 2
+} mbedtls_ecp_variant;
+
#if defined(MBEDTLS_TEST_HOOKS) && defined(MBEDTLS_ECP_LIGHT)
+/** Queries the ecp variant.
+ *
+ * \return The id of the ecp variant.
+ */
+MBEDTLS_STATIC_TESTABLE
+mbedtls_ecp_variant mbedtls_ecp_get_variant(void);
+
#if defined(MBEDTLS_ECP_MONTGOMERY_ENABLED)
/** Generate a private key on a Montgomery curve (Curve25519 or Curve448).
*
diff --git a/library/ecp_new.c b/library/ecp_new.c
index c212f63..3df6f9f 100644
--- a/library/ecp_new.c
+++ b/library/ecp_new.c
@@ -3639,12 +3639,16 @@
#endif /* MBEDTLS_SELF_TEST */
+#if defined(MBEDTLS_TEST_HOOKS)
+
MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_variant mbedtls_ecp_get_variant()
{
return MBEDTLS_ECP_VARIANT_WITH_MPI_UINT;
}
+#endif /* MBEDTLS_TEST_HOOKS */
+
#endif /* !MBEDTLS_ECP_ALT */
#endif /* MBEDTLS_ECP_LIGHT */
diff --git a/tests/suites/test_suite_ecp.data b/tests/suites/test_suite_ecp.data
index 1560c54..f10e572 100644
--- a/tests/suites/test_suite_ecp.data
+++ b/tests/suites/test_suite_ecp.data
@@ -1953,3 +1953,6 @@
ecp_random #25 MBEDTLS_ECP_MOD_COORDINATE(MBEDTLS_ECP_DP_CURVE448)
depends_on:MBEDTLS_ECP_DP_CURVE448_ENABLED
ecp_mod_random:MBEDTLS_ECP_DP_CURVE448:MBEDTLS_ECP_MOD_COORDINATE
+
+ecp variant check
+check_variant:
diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function
index 2658a43..03bbab6 100644
--- a/tests/suites/test_suite_ecp.function
+++ b/tests/suites/test_suite_ecp.function
@@ -1630,3 +1630,18 @@
mbedtls_free(rX_raw);
}
/* END_CASE */
+
+/* BEGIN_CASE depends_on:MBEDTLS_TEST_HOOKS */
+void check_variant()
+{
+ mbedtls_ecp_variant variant = mbedtls_ecp_get_variant();
+
+#if defined(MBEDTLS_ECP_WITH_MPI_STRUCT)
+ TEST_EQUAL(variant, MBEDTLS_ECP_VARIANT_WITH_MPI_STRUCT);
+#elif defined(MBEDTLS_ECP_WITH_MPI_UINT)
+ TEST_EQUAL(variant, MBEDTLS_ECP_VARIANT_WITH_MPI_UINT);
+#else
+ #error "No ecp variant detected."
+#endif
+}
+/* END_CASE */