aboutsummaryrefslogtreecommitdiffstats
path: root/src/tests/test_ecc_pointmul.cpp
diff options
context:
space:
mode:
authorSimon Warta <[email protected]>2015-06-26 20:20:32 +0200
committerSimon Warta <[email protected]>2015-07-03 10:33:45 +0200
commitf472b8fc61accbbaa6a36af9d2d20b0fde37a1a2 (patch)
tree8e71c24da6f7f5b037024741105ca392369e590a /src/tests/test_ecc_pointmul.cpp
parentcd9037e29f32197b9c37ef7bec955ac2372b543b (diff)
Make Botan compile when only some modules are enabled
Fixes #146.
Diffstat (limited to 'src/tests/test_ecc_pointmul.cpp')
-rw-r--r--src/tests/test_ecc_pointmul.cpp75
1 files changed, 75 insertions, 0 deletions
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 <botan/pubkey.h>
+#include <botan/ecdsa.h>
+#include <botan/oids.h>
+#include <botan/hex.h>
+#include <iostream>
+#include <fstream>
+
+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<std::string, std::string> 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