44from hypothesis import given , settings , note
55import pytest
66from .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