diff options
author | Jack Lloyd <[email protected]> | 2018-08-02 17:33:55 -0400 |
---|---|---|
committer | Jack Lloyd <[email protected]> | 2018-08-02 17:33:55 -0400 |
commit | 5ed67bfbf96a80af77807443177b4925e0a94797 (patch) | |
tree | 11194ab8d279f2f4da59828eccfd6136b171d2da | |
parent | 408512a65b169786777846a825b5b010bdb73aaa (diff) |
Misc EC_Group tests
-rw-r--r-- | src/tests/unit_ecc.cpp | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/tests/unit_ecc.cpp b/src/tests/unit_ecc.cpp index 5802a4d66..b60845212 100644 --- a/src/tests/unit_ecc.cpp +++ b/src/tests/unit_ecc.cpp @@ -119,7 +119,7 @@ std::vector<Test::Result> ECC_Randomized_Tests::run() Botan::EC_Group group(group_name); - const Botan::PointGFp& pt = create_random_point(Test::rng(), group); + const Botan::PointGFp pt = create_random_point(Test::rng(), group); const Botan::BigInt& group_order = group.get_order(); std::vector<Botan::BigInt> blind_ws; @@ -292,6 +292,14 @@ class EC_Group_Tests : public Test result.test_eq("EC_Group has correct bit size", group.get_p().bits(), group.get_p_bits()); result.test_eq("EC_Group has byte size", group.get_p().bytes(), group.get_p_bytes()); + result.confirm("Same group is same", group == group); + + const Botan::EC_Group copy(group.get_p(), group.get_a(), group.get_b(), + group.get_g_x(), group.get_g_y(), + group.get_order(), group.get_cofactor()); + + result.confirm("Same group is same even with copy", group == copy); + const auto pt_mult_by_order = group.get_base_point() * group.get_order(); result.confirm("Multiplying point by the order results in zero point", pt_mult_by_order.is_zero()); @@ -379,7 +387,13 @@ class EC_Group_Tests : public Test void test_zeropoint(Test::Result& result, const Botan::EC_Group& group) { - const Botan::PointGFp zero = group.zero_point(); + Botan::PointGFp zero = group.zero_point(); + + result.test_throws("Zero point throws", "Cannot convert zero point to affine", + [&]() { zero.get_affine_x(); }); + result.test_throws("Zero point throws", "Cannot convert zero point to affine", + [&]() { zero.get_affine_y(); }); + const Botan::PointGFp p1 = group.get_base_point() * 2; result.confirm("point is on the curve", p1.on_the_curve()); @@ -558,10 +572,7 @@ Test::Result test_basic_operations() result.test_eq("point addition", simplePlus, exp_simplePlus); const Botan::PointGFp simpleMinus = p1 - p0; - const Botan::PointGFp exp_simpleMinus= secp160r1.point(Botan::BigInt("425826231723888350446541592701409065913635568770"), - Botan::BigInt("203520114162904107873991457957346892027982641970")); - - result.test_eq("point subtraction", simpleMinus, exp_simpleMinus); + result.test_eq("point subtraction", simpleMinus, p_G); const Botan::PointGFp simpleMult = p1 * 123456789; @@ -579,12 +590,9 @@ Test::Result test_enc_dec_compressed_160() // Test for compressed conversion (02/03) 160bit Botan::EC_Group secp160r1("secp160r1"); - const std::vector<uint8_t> G_comp = Botan::hex_decode("024A96B5688EF573284664698968C38BB913CBFC82"); - const Botan::PointGFp p = secp160r1.OS2ECP(G_comp); - - std::vector<uint8_t> sv_result = p.encode(Botan::PointGFp::COMPRESSED); + const std::vector<uint8_t> sv_result = p.encode(Botan::PointGFp::COMPRESSED); result.test_eq("result", sv_result, G_comp); return result; |