Skip to content

Commit 7426df8

Browse files
committed
better test coverage for ellipticcurve
1 parent 3d00b32 commit 7426df8

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

src/ecdsa/test_ellipticcurve.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ def test_inequality_curves(self):
8383
c192 = CurveFp(p, -3, b)
8484
self.assertNotEqual(self.c_23, c192)
8585

86+
def test_inequality_curves_by_b_only(self):
87+
a = CurveFp(23, 1, 0)
88+
b = CurveFp(23, 1, 1)
89+
self.assertNotEqual(a, b)
90+
8691
def test_usability_in_a_hashed_collection_curves(self):
8792
{self.c_23: None}
8893

src/ecdsa/test_pyecdsa.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,22 @@ def test_hybrid_decoding_with_blocked_format(self):
856856

857857
self.assertIn("Invalid X9.62 encoding", str(exp.exception))
858858

859+
def test_hybrid_decoding_with_inconsistent_encoding_and_no_validation(self):
860+
sk = SigningKey.from_secret_exponent(123456789)
861+
vk = sk.verifying_key
862+
863+
enc = vk.to_string("hybrid")
864+
self.assertEqual(enc[:1], b'\x06')
865+
enc = b'\x07' + enc[1:]
866+
867+
b = VerifyingKey.from_string(
868+
enc,
869+
valid_encodings=("hybrid",),
870+
validate_point=False
871+
)
872+
873+
self.assertEqual(vk, b)
874+
859875
def test_compressed_decoding_with_blocked_format(self):
860876
enc = (
861877
b"\x02"
@@ -898,6 +914,17 @@ def test_decoding_with_inconsistent_hybrid(self):
898914
with self.assertRaises(MalformedPointError):
899915
VerifyingKey.from_string(b"\x07" + enc)
900916

917+
def test_decoding_with_inconsistent_hybrid_odd_point(self):
918+
sk = SigningKey.from_secret_exponent(123456791)
919+
vk = sk.verifying_key
920+
921+
enc = vk.to_string("hybrid")
922+
self.assertEqual(enc[:1], b'\x07')
923+
enc = b'\x06' + enc[1:]
924+
925+
with self.assertRaises(MalformedPointError):
926+
b = VerifyingKey.from_string(enc, valid_encodings=("hybrid",))
927+
901928
def test_decoding_with_point_not_on_curve(self):
902929
enc = (
903930
b"\x0c\xe0\x1d\xe0d\x1c\x8eS\x8a\xc0\x9eK\xa8x !\xd5\xc2\xc3"

0 commit comments

Comments
 (0)