Skip to content

Commit da6b9f6

Browse files
committed
test_ecdsa: parametrize point validity test
1 parent 1fc153d commit da6b9f6

File tree

1 file changed

+72
-83
lines changed

1 file changed

+72
-83
lines changed

src/ecdsa/test_ecdsa.py

Lines changed: 72 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from hypothesis import given, settings, note
55
import pytest
66
from .ecdsa import Private_key, Public_key, Signature, \
7-
curve_192, generator_192, digest_integer, ellipticcurve, point_is_valid, \
7+
generator_192, digest_integer, ellipticcurve, point_is_valid, \
88
generator_224, generator_256, generator_384, generator_521, \
99
generator_secp256k1
1010

@@ -20,15 +20,6 @@ def test_ecdsa():
2020
class TestFailure(Exception):
2121
pass
2222

23-
def test_point_validity(generator, x, y, expected):
24-
"""generator defines the curve; is (x,y) a point on
25-
this curve? "expected" is True if the right answer is Yes."""
26-
if point_is_valid(generator, x, y) == expected:
27-
print("Point validity tested as expected.")
28-
else:
29-
raise TestFailure("*** Point validity test gave wrong result.")
30-
31-
3223
print("NIST Curve P-192:")
3324

3425
p192 = generator_192
@@ -82,79 +73,77 @@ def test_point_validity(generator, x, y, expected):
8273
else:
8374
raise TestFailure("*** Forgery was erroneously accepted.")
8475

85-
print("Testing point validity, as per ECDSAVS.pdf B.2.2:")
86-
87-
test_point_validity( \
88-
p192, \
89-
0xcd6d0f029a023e9aaca429615b8f577abee685d8257cc83a, \
90-
0x00019c410987680e9fb6c0b6ecc01d9a2647c8bae27721bacdfc, \
91-
False)
92-
93-
test_point_validity(
94-
p192, \
95-
0x00017f2fce203639e9eaf9fb50b81fc32776b30e3b02af16c73b, \
96-
0x95da95c5e72dd48e229d4748d4eee658a9a54111b23b2adb, \
97-
False)
98-
99-
test_point_validity(
100-
p192, \
101-
0x4f77f8bc7fccbadd5760f4938746d5f253ee2168c1cf2792, \
102-
0x000147156ff824d131629739817edb197717c41aab5c2a70f0f6, \
103-
False)
104-
105-
test_point_validity(
106-
p192, \
107-
0xc58d61f88d905293bcd4cd0080bcb1b7f811f2ffa41979f6, \
108-
0x8804dc7a7c4c7f8b5d437f5156f3312ca7d6de8a0e11867f, \
109-
True)
110-
111-
test_point_validity(
112-
p192, \
113-
0xcdf56c1aa3d8afc53c521adf3ffb96734a6a630a4a5b5a70, \
114-
0x97c1c44a5fb229007b5ec5d25f7413d170068ffd023caa4e, \
115-
True)
116-
117-
test_point_validity(
118-
p192, \
119-
0x89009c0dc361c81e99280c8e91df578df88cdf4b0cdedced, \
120-
0x27be44a529b7513e727251f128b34262a0fd4d8ec82377b9, \
121-
True)
122-
123-
test_point_validity(
124-
p192, \
125-
0x6a223d00bd22c52833409a163e057e5b5da1def2a197dd15, \
126-
0x7b482604199367f1f303f9ef627f922f97023e90eae08abf, \
127-
True)
128-
129-
test_point_validity(
130-
p192, \
131-
0x6dccbde75c0948c98dab32ea0bc59fe125cf0fb1a3798eda, \
132-
0x0001171a3e0fa60cf3096f4e116b556198de430e1fbd330c8835, \
133-
False)
134-
135-
test_point_validity(
136-
p192, \
137-
0xd266b39e1f491fc4acbbbc7d098430931cfa66d55015af12, \
138-
0x193782eb909e391a3148b7764e6b234aa94e48d30a16dbb2, \
139-
False)
140-
141-
test_point_validity(
142-
p192, \
143-
0x9d6ddbcd439baa0c6b80a654091680e462a7d1d3f1ffeb43, \
144-
0x6ad8efc4d133ccf167c44eb4691c80abffb9f82b932b8caa, \
145-
False)
146-
147-
test_point_validity(
148-
p192, \
149-
0x146479d944e6bda87e5b35818aa666a4c998a71f4e95edbc, \
150-
0xa86d6fe62bc8fbd88139693f842635f687f132255858e7f6, \
151-
False)
152-
153-
test_point_validity(
154-
p192, \
155-
0xe594d4a598046f3598243f50fd2c7bd7d380edb055802253, \
156-
0x509014c0c4d6b536e3ca750ec09066af39b4c8616a53a923, \
157-
False)
76+
77+
# Testing point validity, as per ECDSAVS.pdf B.2.2:
78+
P192_POINTS = [
79+
(generator_192,
80+
0xcd6d0f029a023e9aaca429615b8f577abee685d8257cc83a,
81+
0x00019c410987680e9fb6c0b6ecc01d9a2647c8bae27721bacdfc,
82+
False),
83+
84+
(generator_192,
85+
0x00017f2fce203639e9eaf9fb50b81fc32776b30e3b02af16c73b,
86+
0x95da95c5e72dd48e229d4748d4eee658a9a54111b23b2adb,
87+
False),
88+
89+
(generator_192,
90+
0x4f77f8bc7fccbadd5760f4938746d5f253ee2168c1cf2792,
91+
0x000147156ff824d131629739817edb197717c41aab5c2a70f0f6,
92+
False),
93+
94+
(generator_192,
95+
0xc58d61f88d905293bcd4cd0080bcb1b7f811f2ffa41979f6,
96+
0x8804dc7a7c4c7f8b5d437f5156f3312ca7d6de8a0e11867f,
97+
True),
98+
99+
(generator_192,
100+
0xcdf56c1aa3d8afc53c521adf3ffb96734a6a630a4a5b5a70,
101+
0x97c1c44a5fb229007b5ec5d25f7413d170068ffd023caa4e,
102+
True),
103+
104+
(generator_192,
105+
0x89009c0dc361c81e99280c8e91df578df88cdf4b0cdedced,
106+
0x27be44a529b7513e727251f128b34262a0fd4d8ec82377b9,
107+
True),
108+
109+
(generator_192,
110+
0x6a223d00bd22c52833409a163e057e5b5da1def2a197dd15,
111+
0x7b482604199367f1f303f9ef627f922f97023e90eae08abf,
112+
True),
113+
114+
(generator_192,
115+
0x6dccbde75c0948c98dab32ea0bc59fe125cf0fb1a3798eda,
116+
0x0001171a3e0fa60cf3096f4e116b556198de430e1fbd330c8835,
117+
False),
118+
119+
(generator_192,
120+
0xd266b39e1f491fc4acbbbc7d098430931cfa66d55015af12,
121+
0x193782eb909e391a3148b7764e6b234aa94e48d30a16dbb2,
122+
False),
123+
124+
(generator_192,
125+
0x9d6ddbcd439baa0c6b80a654091680e462a7d1d3f1ffeb43,
126+
0x6ad8efc4d133ccf167c44eb4691c80abffb9f82b932b8caa,
127+
False),
128+
129+
(generator_192,
130+
0x146479d944e6bda87e5b35818aa666a4c998a71f4e95edbc,
131+
0xa86d6fe62bc8fbd88139693f842635f687f132255858e7f6,
132+
False),
133+
134+
(generator_192,
135+
0xe594d4a598046f3598243f50fd2c7bd7d380edb055802253,
136+
0x509014c0c4d6b536e3ca750ec09066af39b4c8616a53a923,
137+
False)]
138+
139+
140+
@pytest.mark.parametrize("generator,x,y,expected", P192_POINTS)
141+
def test_point_validity(generator, x, y, expected):
142+
"""
143+
`generator` defines the curve; is `(x, y)` a point on
144+
this curve? `expected` is True if the right answer is Yes.
145+
"""
146+
assert point_is_valid(generator, x, y) == expected
158147

159148

160149
# Trying signature-verification tests from ECDSAVS.pdf B.2.4:

0 commit comments

Comments
 (0)