From f472b8fc61accbbaa6a36af9d2d20b0fde37a1a2 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Fri, 26 Jun 2015 20:20:32 +0200 Subject: Make Botan compile when only some modules are enabled Fixes #146. --- src/tests/test_ecc_pointmul.cpp | 75 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/tests/test_ecc_pointmul.cpp (limited to 'src/tests/test_ecc_pointmul.cpp') diff --git a/src/tests/test_ecc_pointmul.cpp b/src/tests/test_ecc_pointmul.cpp new file mode 100644 index 000000000..220a3eecf --- /dev/null +++ b/src/tests/test_ecc_pointmul.cpp @@ -0,0 +1,75 @@ +/* +* (C) 2014,2015 Jack Lloyd +* +* Botan is released under the Simplified BSD License (see license.txt) +*/ + +#include "tests.h" + +#if defined(BOTAN_HAS_ECC_GROUP) + +#include "test_pubkey.h" + +#include +#include +#include +#include +#include +#include + +using namespace Botan; + +namespace { + +size_t ecc_point_mul(const std::string& group_id, + const std::string& m_s, + const std::string& X_s, + const std::string& Y_s) + { + EC_Group group(OIDS::lookup(group_id)); + + const BigInt m(m_s); + const BigInt X(X_s); + const BigInt Y(Y_s); + + PointGFp p = group.get_base_point() * m; + + size_t fails = 0; + + if(p.get_affine_x() != X) + { + std::cout << p.get_affine_x() << " != " << X << std::endl; + ++fails; + } + + if(p.get_affine_y() != Y) + { + std::cout << p.get_affine_y() << " != " << Y << std::endl; + ++fails; + } + + return fails; + } + +} + +size_t test_ecc_pointmul() + { + size_t fails = 0; + + std::ifstream ecc_mul(PK_TEST_DATA_DIR "/ecc.vec"); + + fails += run_tests_bb(ecc_mul, "ECC Point Mult", "Y", false, + [](std::map m) -> size_t + { + return ecc_point_mul(m["Group"], m["m"], m["X"], m["Y"]); + }); + + return fails; + } + +#else + +SKIP_TEST(ecc_pointmul); + +#endif // BOTAN_HAS_ECC_GROUP -- cgit v1.2.3