blob: 8bb8422ca3c83645ee597cf67a467b1f909cd2fd [file] [log] [blame]
Alex Gaynorf312a5c2013-08-10 15:23:38 -04001# Licensed under the Apache License, Version 2.0 (the "License");
2# you may not use this file except in compliance with the License.
3# You may obtain a copy of the License at
4#
5# http://www.apache.org/licenses/LICENSE-2.0
6#
7# Unless required by applicable law or agreed to in writing, software
8# distributed under the License is distributed on an "AS IS" BASIS,
9# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
10# implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
Alex Gaynorc37feed2014-03-08 08:32:56 -080014from __future__ import absolute_import, division, print_function
15
Alex Stapletonfb812d62014-04-15 16:07:25 +010016import binascii
Alex Gaynorab53bc52013-11-12 09:37:59 -080017import os
Donald Stufft9e1a48b2013-08-09 00:32:30 -040018import textwrap
19
Alex Gaynor2b3f9422013-12-24 21:55:24 -080020import pretend
21
Paul Kehrer79c16e92013-10-18 17:44:36 -050022import pytest
23
Alex Stapletona39a3192014-03-14 20:03:12 +000024import cryptography
Alex Stapleton112963e2014-03-26 17:39:29 +000025from cryptography.exceptions import UnsupportedAlgorithm, _Reasons
26
Alex Stapletona39a3192014-03-14 20:03:12 +000027import cryptography_vectors
28
Alex Gaynorafdddca2013-10-21 21:00:20 -070029from .utils import (
Alex Gaynor7aab8b42014-10-23 11:01:25 -070030 check_backend_support, der_encode_dsa_signature, load_cryptrec_vectors,
31 load_fips_dsa_key_pair_vectors, load_fips_dsa_sig_vectors,
32 load_fips_ecdsa_key_pair_vectors, load_fips_ecdsa_signing_vectors,
33 load_hash_vectors, load_kasvs_dh_vectors, load_nist_vectors,
34 load_pkcs1_vectors, load_rsa_nist_vectors, load_vectors_from_file,
Paul Kehrer902d8cf2014-10-25 12:22:10 -070035 raises_unsupported_algorithm, select_backends, skip_if_empty
Alex Gaynorafdddca2013-10-21 21:00:20 -070036)
Donald Stufft9e1a48b2013-08-09 00:32:30 -040037
38
Alex Gaynor2b3f9422013-12-24 21:55:24 -080039class FakeInterface(object):
40 pass
41
42
Paul Kehrerc421e632014-01-18 09:22:21 -060043def test_select_one_backend():
Paul Kehrer34c075e2014-01-13 21:52:08 -050044 b1 = pretend.stub(name="b1")
45 b2 = pretend.stub(name="b2")
46 b3 = pretend.stub(name="b3")
47 backends = [b1, b2, b3]
48 name = "b2"
Paul Kehreraed9e172014-01-19 12:09:27 -060049 selected_backends = select_backends(name, backends)
50 assert len(selected_backends) == 1
51 assert selected_backends[0] == b2
Paul Kehrer34c075e2014-01-13 21:52:08 -050052
53
Paul Kehrerc421e632014-01-18 09:22:21 -060054def test_select_no_backend():
Paul Kehrer34c075e2014-01-13 21:52:08 -050055 b1 = pretend.stub(name="b1")
56 b2 = pretend.stub(name="b2")
57 b3 = pretend.stub(name="b3")
58 backends = [b1, b2, b3]
59 name = "back!"
60 with pytest.raises(ValueError):
Paul Kehrerc421e632014-01-18 09:22:21 -060061 select_backends(name, backends)
62
63
64def test_select_backends_none():
65 b1 = pretend.stub(name="b1")
66 b2 = pretend.stub(name="b2")
67 b3 = pretend.stub(name="b3")
68 backends = [b1, b2, b3]
69 name = None
Paul Kehreraed9e172014-01-19 12:09:27 -060070 selected_backends = select_backends(name, backends)
71 assert len(selected_backends) == 3
Paul Kehrerc421e632014-01-18 09:22:21 -060072
73
74def test_select_two_backends():
75 b1 = pretend.stub(name="b1")
76 b2 = pretend.stub(name="b2")
77 b3 = pretend.stub(name="b3")
78 backends = [b1, b2, b3]
79 name = "b2 ,b1 "
Paul Kehreraed9e172014-01-19 12:09:27 -060080 selected_backends = select_backends(name, backends)
81 assert len(selected_backends) == 2
82 assert selected_backends == [b1, b2]
Paul Kehrer34c075e2014-01-13 21:52:08 -050083
84
Paul Kehrer902d8cf2014-10-25 12:22:10 -070085def test_skip_if_empty():
86 with pytest.raises(pytest.skip.Exception):
87 skip_if_empty([], [FakeInterface])
88
89 skip_if_empty(["notempty"], [FakeInterface])
90
91
Paul Kehrer60fc8da2013-12-26 20:19:34 -060092def test_check_backend_support_skip():
Paul Kehrer5a8fdf82013-12-26 20:13:45 -060093 supported = pretend.stub(
94 kwargs={"only_if": lambda backend: False, "skip_message": "Nope"}
95 )
96 item = pretend.stub(keywords={"supported": supported},
97 funcargs={"backend": True})
98 with pytest.raises(pytest.skip.Exception) as exc_info:
Paul Kehrer60fc8da2013-12-26 20:19:34 -060099 check_backend_support(item)
Paul Kehrerf03334e2014-01-02 23:16:14 -0600100 assert exc_info.value.args[0] == "Nope (True)"
Paul Kehrer5a8fdf82013-12-26 20:13:45 -0600101
102
Paul Kehrer60fc8da2013-12-26 20:19:34 -0600103def test_check_backend_support_no_skip():
Paul Kehrer5a8fdf82013-12-26 20:13:45 -0600104 supported = pretend.stub(
105 kwargs={"only_if": lambda backend: True, "skip_message": "Nope"}
106 )
107 item = pretend.stub(keywords={"supported": supported},
108 funcargs={"backend": True})
Paul Kehrer60fc8da2013-12-26 20:19:34 -0600109 assert check_backend_support(item) is None
Paul Kehrer5a8fdf82013-12-26 20:13:45 -0600110
111
Paul Kehrer60fc8da2013-12-26 20:19:34 -0600112def test_check_backend_support_no_backend():
Paul Kehrer5a8fdf82013-12-26 20:13:45 -0600113 supported = pretend.stub(
114 kwargs={"only_if": "notalambda", "skip_message": "Nope"}
115 )
116 item = pretend.stub(keywords={"supported": supported},
117 funcargs={})
Paul Kehrerec495502013-12-27 15:51:40 -0600118 with pytest.raises(ValueError):
Paul Kehrer60fc8da2013-12-26 20:19:34 -0600119 check_backend_support(item)
Paul Kehrer5a8fdf82013-12-26 20:13:45 -0600120
121
Paul Kehrer14951f42014-04-30 12:14:48 -0500122def test_der_encode_dsa_signature_values():
123 sig = der_encode_dsa_signature(1, 1)
Paul Kehrer3fc686e2014-04-30 09:07:27 -0500124 assert sig == b"0\x06\x02\x01\x01\x02\x01\x01"
125
Paul Kehrer14951f42014-04-30 12:14:48 -0500126 sig2 = der_encode_dsa_signature(
127 1037234182290683143945502320610861668562885151617,
128 559776156650501990899426031439030258256861634312
129 )
Paul Kehrer3fc686e2014-04-30 09:07:27 -0500130 assert sig2 == (
131 b'0-\x02\x15\x00\xb5\xaf0xg\xfb\x8bT9\x00\x13\xccg\x02\r\xdf\x1f,\x0b'
132 b'\x81\x02\x14b\r;"\xabP1D\x0c>5\xea\xb6\xf4\x81)\x8f\x9e\x9f\x08'
133 )
134
Paul Kehrer14951f42014-04-30 12:14:48 -0500135 sig3 = der_encode_dsa_signature(0, 0)
Paul Kehrer3fc686e2014-04-30 09:07:27 -0500136 assert sig3 == b"0\x06\x02\x01\x00\x02\x01\x00"
137
Paul Kehrerbe8ce552014-04-30 14:12:26 -0500138 sig4 = der_encode_dsa_signature(-1, 0)
139 assert sig4 == b"0\x06\x02\x01\xFF\x02\x01\x00"
140
Paul Kehrer3fc686e2014-04-30 09:07:27 -0500141
Alex Gaynorcf5fb332013-11-11 15:39:52 -0800142def test_load_nist_vectors():
Donald Stufft9e1a48b2013-08-09 00:32:30 -0400143 vector_data = textwrap.dedent("""
144 # CAVS 11.1
145 # Config info for aes_values
146 # AESVS GFSbox test data for CBC
147 # State : Encrypt and Decrypt
148 # Key Length : 128
149 # Generated on Fri Apr 22 15:11:33 2011
150
151 [ENCRYPT]
152
153 COUNT = 0
154 KEY = 00000000000000000000000000000000
155 IV = 00000000000000000000000000000000
156 PLAINTEXT = f34481ec3cc627bacd5dc3fb08f273e6
157 CIPHERTEXT = 0336763e966d92595a567cc9ce537f5e
158
159 COUNT = 1
160 KEY = 00000000000000000000000000000000
161 IV = 00000000000000000000000000000000
162 PLAINTEXT = 9798c4640bad75c7c3227db910174e72
163 CIPHERTEXT = a9a1631bf4996954ebc093957b234589
164
165 [DECRYPT]
166
167 COUNT = 0
168 KEY = 00000000000000000000000000000000
169 IV = 00000000000000000000000000000000
170 CIPHERTEXT = 0336763e966d92595a567cc9ce537f5e
171 PLAINTEXT = f34481ec3cc627bacd5dc3fb08f273e6
172
173 COUNT = 1
174 KEY = 00000000000000000000000000000000
175 IV = 00000000000000000000000000000000
176 CIPHERTEXT = a9a1631bf4996954ebc093957b234589
177 PLAINTEXT = 9798c4640bad75c7c3227db910174e72
178 """).splitlines()
179
Alex Gaynord3ce7032013-11-11 14:46:20 -0800180 assert load_nist_vectors(vector_data) == [
181 {
182 "key": b"00000000000000000000000000000000",
183 "iv": b"00000000000000000000000000000000",
184 "plaintext": b"f34481ec3cc627bacd5dc3fb08f273e6",
185 "ciphertext": b"0336763e966d92595a567cc9ce537f5e",
186 },
187 {
188 "key": b"00000000000000000000000000000000",
189 "iv": b"00000000000000000000000000000000",
190 "plaintext": b"9798c4640bad75c7c3227db910174e72",
191 "ciphertext": b"a9a1631bf4996954ebc093957b234589",
192 },
Alex Gaynor1fe70b12013-10-16 11:59:17 -0700193 {
194 "key": b"00000000000000000000000000000000",
195 "iv": b"00000000000000000000000000000000",
196 "plaintext": b"f34481ec3cc627bacd5dc3fb08f273e6",
197 "ciphertext": b"0336763e966d92595a567cc9ce537f5e",
198 },
199 {
200 "key": b"00000000000000000000000000000000",
201 "iv": b"00000000000000000000000000000000",
202 "plaintext": b"9798c4640bad75c7c3227db910174e72",
203 "ciphertext": b"a9a1631bf4996954ebc093957b234589",
204 },
Donald Stufft9e1a48b2013-08-09 00:32:30 -0400205 ]
206
207
Paul Kehrer6fb1a5a2014-01-29 13:44:07 -0600208def test_load_nist_vectors_with_null_chars():
209 vector_data = textwrap.dedent("""
210 COUNT = 0
211 KEY = thing\\0withnulls
212
213 COUNT = 1
214 KEY = 00000000000000000000000000000000
215 """).splitlines()
216
217 assert load_nist_vectors(vector_data) == [
218 {
219 "key": b"thing\x00withnulls",
220 },
221 {
222 "key": b"00000000000000000000000000000000",
223 },
224 ]
225
226
Paul Kehrer1951bf62013-09-15 12:05:43 -0500227def test_load_cryptrec_vectors():
228 vector_data = textwrap.dedent("""
229 # Vectors taken from http://info.isl.ntt.co.jp/crypt/eng/camellia/
230 # Download is t_camelia.txt
231
232 # Camellia with 128-bit key
233
234 K No.001 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
235
236 P No.001 : 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
237 C No.001 : 07 92 3A 39 EB 0A 81 7D 1C 4D 87 BD B8 2D 1F 1C
238
239 P No.002 : 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
240 C No.002 : 48 CD 64 19 80 96 72 D2 34 92 60 D8 9A 08 D3 D3
241
242 K No.002 : 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
243
244 P No.001 : 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
245 C No.001 : 07 92 3A 39 EB 0A 81 7D 1C 4D 87 BD B8 2D 1F 1C
246 """).splitlines()
247
248 assert load_cryptrec_vectors(vector_data) == [
Alex Gaynor1fe70b12013-10-16 11:59:17 -0700249 {
250 "key": b"00000000000000000000000000000000",
251 "plaintext": b"80000000000000000000000000000000",
252 "ciphertext": b"07923A39EB0A817D1C4D87BDB82D1F1C",
253 },
254 {
255 "key": b"00000000000000000000000000000000",
256 "plaintext": b"40000000000000000000000000000000",
257 "ciphertext": b"48CD6419809672D2349260D89A08D3D3",
258 },
259 {
260 "key": b"10000000000000000000000000000000",
261 "plaintext": b"80000000000000000000000000000000",
262 "ciphertext": b"07923A39EB0A817D1C4D87BDB82D1F1C",
263 },
Paul Kehrer1951bf62013-09-15 12:05:43 -0500264 ]
265
266
Donald Stufft3359d7e2013-10-19 19:33:06 -0400267def test_load_cryptrec_vectors_invalid():
268 vector_data = textwrap.dedent("""
269 # Vectors taken from http://info.isl.ntt.co.jp/crypt/eng/camellia/
270 # Download is t_camelia.txt
271
272 # Camellia with 128-bit key
273
274 E No.001 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
275 """).splitlines()
276
277 with pytest.raises(ValueError):
278 load_cryptrec_vectors(vector_data)
279
280
Paul Kehrer69e06522013-10-18 17:28:39 -0500281def test_load_hash_vectors():
282 vector_data = textwrap.dedent("""
283
284 # http://tools.ietf.org/html/rfc1321
Paul Kehrer87cd0db2013-10-18 18:01:26 -0500285 [irrelevant]
Paul Kehrer69e06522013-10-18 17:28:39 -0500286
287 Len = 0
288 Msg = 00
289 MD = d41d8cd98f00b204e9800998ecf8427e
290
291 Len = 8
292 Msg = 61
293 MD = 0cc175b9c0f1b6a831c399e269772661
294
295 Len = 24
296 Msg = 616263
297 MD = 900150983cd24fb0d6963f7d28e17f72
298
299 Len = 112
300 Msg = 6d65737361676520646967657374
301 MD = f96b697d7cb7938d525a2f31aaf161d0
302 """).splitlines()
303 assert load_hash_vectors(vector_data) == [
Paul Kehrer79c16e92013-10-18 17:44:36 -0500304 (b"", "d41d8cd98f00b204e9800998ecf8427e"),
305 (b"61", "0cc175b9c0f1b6a831c399e269772661"),
306 (b"616263", "900150983cd24fb0d6963f7d28e17f72"),
307 (b"6d65737361676520646967657374", "f96b697d7cb7938d525a2f31aaf161d0"),
Paul Kehrer69e06522013-10-18 17:28:39 -0500308 ]
309
310
Paul Kehrer0317b042013-10-28 17:34:27 -0500311def test_load_hmac_vectors():
312 vector_data = textwrap.dedent("""
313Len = 224
314# "Jefe"
315Key = 4a656665
316# "what do ya want for nothing?"
317Msg = 7768617420646f2079612077616e7420666f72206e6f7468696e673f
318MD = 750c783e6ab0b503eaa86e310a5db738
319 """).splitlines()
320 assert load_hash_vectors(vector_data) == [
321 (b"7768617420646f2079612077616e7420666f72206e6f7468696e673f",
322 "750c783e6ab0b503eaa86e310a5db738",
323 b"4a656665"),
324 ]
325
326
Paul Kehrer69e06522013-10-18 17:28:39 -0500327def test_load_hash_vectors_bad_data():
328 vector_data = textwrap.dedent("""
329 # http://tools.ietf.org/html/rfc1321
330
331 Len = 0
332 Msg = 00
333 UNKNOWN=Hello World
334 """).splitlines()
335 with pytest.raises(ValueError):
336 load_hash_vectors(vector_data)
337
Alex Gaynor41172ab2013-11-12 10:00:42 -0800338
Alex Gaynorab53bc52013-11-12 09:37:59 -0800339def test_load_vectors_from_file():
340 vectors = load_vectors_from_file(
341 os.path.join("ciphers", "Blowfish", "bf-cfb.txt"),
342 load_nist_vectors,
Paul Kehrer2b758672013-10-30 09:01:38 -0500343 )
Alex Gaynorab53bc52013-11-12 09:37:59 -0800344 assert vectors == [
345 {
Alex Gaynorc2f45d52013-11-12 09:50:25 -0800346 "key": b"0123456789ABCDEFF0E1D2C3B4A59687",
347 "iv": b"FEDCBA9876543210",
Alex Gaynorab53bc52013-11-12 09:37:59 -0800348 "plaintext": (
Alex Gaynorc2f45d52013-11-12 09:50:25 -0800349 b"37363534333231204E6F77206973207468652074696D6520666F722000"
Alex Gaynorab53bc52013-11-12 09:37:59 -0800350 ),
351 "ciphertext": (
Alex Gaynorc2f45d52013-11-12 09:50:25 -0800352 b"E73214A2822139CAF26ECF6D2EB9E76E3DA3DE04D1517200519D57A6C3"
Alex Gaynorab53bc52013-11-12 09:37:59 -0800353 ),
354 }
355 ]
Paul Kehrera43b6692013-11-12 15:35:49 -0600356
357
358def test_load_nist_gcm_vectors():
359 vector_data = textwrap.dedent("""
360 [Keylen = 128]
361 [IVlen = 96]
362 [PTlen = 0]
363 [AADlen = 0]
364 [Taglen = 128]
365
366 Count = 0
367 Key = 11754cd72aec309bf52f7687212e8957
368 IV = 3c819d9a9bed087615030b65
369 PT =
370 AAD =
371 CT =
372 Tag = 250327c674aaf477aef2675748cf6971
373
374 Count = 1
375 Key = 272f16edb81a7abbea887357a58c1917
376 IV = 794ec588176c703d3d2a7a07
377 PT =
378 AAD =
379 CT =
380 Tag = b6e6f197168f5049aeda32dafbdaeb
381
382 Count = 2
383 Key = a49a5e26a2f8cb63d05546c2a62f5343
384 IV = 907763b19b9b4ab6bd4f0281
385 CT =
386 AAD =
387 Tag = a2be08210d8c470a8df6e8fbd79ec5cf
388 FAIL
389
390 Count = 3
391 Key = 5c1155084cc0ede76b3bc22e9f7574ef
392 IV = 9549e4ba69a61cad7856efc1
393 PT = d1448fa852b84408e2dad8381f363de7
394 AAD = e98e9d9c618e46fef32660976f854ee3
395 CT = f78b60ca125218493bea1c50a2e12ef4
396 Tag = d72da7f5c6cf0bca7242c71835809449
397
398 [Keylen = 128]
399 [IVlen = 96]
400 [PTlen = 0]
401 [AADlen = 0]
402 [Taglen = 120]
403
404 Count = 0
405 Key = eac258e99c55e6ae8ef1da26640613d7
406 IV = 4e8df20faaf2c8eebe922902
407 CT =
408 AAD =
409 Tag = e39aeaebe86aa309a4d062d6274339
410 PT =
411
412 Count = 1
413 Key = 3726cf02fcc6b8639a5497652c94350d
414 IV = 55fef82cde693ce76efcc193
415 CT =
416 AAD =
417 Tag = 3d68111a81ed22d2ef5bccac4fc27f
418 FAIL
419
420 Count = 2
421 Key = f202299d5fd74f03b12d2119a6c4c038
422 IV = eec51e7958c3f20a1bb71815
423 CT =
424 AAD =
425 Tag = a81886b3fb26e51fca87b267e1e157
426 FAIL
427
428 Count = 3
429 Key = fd52925f39546b4c55ffb6b20c59898c
430 IV = f5cf3227444afd905a5f6dba
431 CT =
432 AAD =
433 Tag = 1665b0f1a0b456e1664cfd3de08ccd
434 PT =
Paul Kehrerc985dbb2013-11-18 14:11:55 -0600435
436 [Keylen = 128]
437 [IVlen = 8]
438 [PTlen = 104]
439 [AADlen = 0]
440 [Taglen = 128]
441
442 Count = 0
443 Key = 58fab7632bcf10d2bcee58520bf37414
444 IV = 3c
445 CT = 15c4db4cbb451211179d57017f
446 AAD =
447 Tag = eae841d4355feeb3f786bc86625f1e5b
448 FAIL
Paul Kehrera43b6692013-11-12 15:35:49 -0600449 """).splitlines()
450 assert load_nist_vectors(vector_data) == [
451 {'aad': b'',
Paul Kehrer749ac5b2013-11-18 18:12:41 -0600452 'pt': b'',
453 'iv': b'3c819d9a9bed087615030b65',
454 'tag': b'250327c674aaf477aef2675748cf6971',
455 'key': b'11754cd72aec309bf52f7687212e8957',
456 'ct': b''},
457 {'aad': b'',
458 'pt': b'',
459 'iv': b'794ec588176c703d3d2a7a07',
460 'tag': b'b6e6f197168f5049aeda32dafbdaeb',
461 'key': b'272f16edb81a7abbea887357a58c1917',
462 'ct': b''},
463 {'aad': b'',
464 'iv': b'907763b19b9b4ab6bd4f0281',
465 'tag': b'a2be08210d8c470a8df6e8fbd79ec5cf',
466 'key': b'a49a5e26a2f8cb63d05546c2a62f5343',
467 'ct': b'',
Paul Kehrerc985dbb2013-11-18 14:11:55 -0600468 'fail': True},
Paul Kehrer749ac5b2013-11-18 18:12:41 -0600469 {'aad': b'e98e9d9c618e46fef32660976f854ee3',
470 'pt': b'd1448fa852b84408e2dad8381f363de7',
471 'iv': b'9549e4ba69a61cad7856efc1',
472 'tag': b'd72da7f5c6cf0bca7242c71835809449',
473 'key': b'5c1155084cc0ede76b3bc22e9f7574ef',
474 'ct': b'f78b60ca125218493bea1c50a2e12ef4'},
Paul Kehrerc985dbb2013-11-18 14:11:55 -0600475 {'aad': b'',
Paul Kehrera43b6692013-11-12 15:35:49 -0600476 'pt': b'',
477 'iv': b'4e8df20faaf2c8eebe922902',
478 'tag': b'e39aeaebe86aa309a4d062d6274339',
479 'key': b'eac258e99c55e6ae8ef1da26640613d7',
480 'ct': b''},
481 {'aad': b'',
482 'iv': b'55fef82cde693ce76efcc193',
483 'tag': b'3d68111a81ed22d2ef5bccac4fc27f',
484 'key': b'3726cf02fcc6b8639a5497652c94350d',
485 'ct': b'',
486 'fail': True},
487 {'aad': b'',
488 'iv': b'eec51e7958c3f20a1bb71815',
489 'tag': b'a81886b3fb26e51fca87b267e1e157',
490 'key': b'f202299d5fd74f03b12d2119a6c4c038',
491 'ct': b'',
492 'fail': True},
493 {'aad': b'',
494 'pt': b'',
495 'iv': b'f5cf3227444afd905a5f6dba',
496 'tag': b'1665b0f1a0b456e1664cfd3de08ccd',
497 'key': b'fd52925f39546b4c55ffb6b20c59898c',
498 'ct': b''},
499 {'aad': b'',
Paul Kehrer749ac5b2013-11-18 18:12:41 -0600500 'iv': b'3c',
501 'tag': b'eae841d4355feeb3f786bc86625f1e5b',
502 'key': b'58fab7632bcf10d2bcee58520bf37414',
503 'ct': b'15c4db4cbb451211179d57017f',
Paul Kehrera43b6692013-11-12 15:35:49 -0600504 'fail': True},
Paul Kehrera43b6692013-11-12 15:35:49 -0600505 ]
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000506
507
508def test_load_pkcs1_vectors():
509 vector_data = textwrap.dedent("""
510 Test vectors for RSA-PSS
511 ========================
512
513 This file contains an extract of the original pss-vect.txt
514
515 Key lengths:
516
517 Key 8: 1031 bits
518 Key 9: 1536 bits
519 ===========================================================================
520
521 <snip>
522
523 # Example 8: A 1031-bit RSA key pair
524 # -----------------------------------
525
526
527 # Public key
528 # ----------
529
530 # Modulus:
531 49 53 70 a1 fb 18 54 3c 16 d3 63 1e 31 63 25 5d
532 f6 2b e6 ee e8 90 d5 f2 55 09 e4 f7 78 a8 ea 6f
533 bb bc df 85 df f6 4e 0d 97 20 03 ab 36 81 fb ba
534 6d d4 1f d5 41 82 9b 2e 58 2d e9 f2 a4 a4 e0 a2
535 d0 90 0b ef 47 53 db 3c ee 0e e0 6c 7d fa e8 b1
536 d5 3b 59 53 21 8f 9c ce ea 69 5b 08 66 8e de aa
537 dc ed 94 63 b1 d7 90 d5 eb f2 7e 91 15 b4 6c ad
538 4d 9a 2b 8e fa b0 56 1b 08 10 34 47 39 ad a0 73
539 3f
540
541 # Exponent:
542 01 00 01
543
544 # Private key
545 # -----------
546
547 # Modulus:
548 49 53 70 a1 fb 18 54 3c 16 d3 63 1e 31 63 25 5d
549 f6 2b e6 ee e8 90 d5 f2 55 09 e4 f7 78 a8 ea 6f
550 bb bc df 85 df f6 4e 0d 97 20 03 ab 36 81 fb ba
551 6d d4 1f d5 41 82 9b 2e 58 2d e9 f2 a4 a4 e0 a2
552 d0 90 0b ef 47 53 db 3c ee 0e e0 6c 7d fa e8 b1
553 d5 3b 59 53 21 8f 9c ce ea 69 5b 08 66 8e de aa
554 dc ed 94 63 b1 d7 90 d5 eb f2 7e 91 15 b4 6c ad
555 4d 9a 2b 8e fa b0 56 1b 08 10 34 47 39 ad a0 73
556 3f
557
558 # Public exponent:
559 01 00 01
560
561 # Exponent:
562 6c 66 ff e9 89 80 c3 8f cd ea b5 15 98 98 83 61
563 65 f4 b4 b8 17 c4 f6 a8 d4 86 ee 4e a9 13 0f e9
564 b9 09 2b d1 36 d1 84 f9 5f 50 4a 60 7e ac 56 58
565 46 d2 fd d6 59 7a 89 67 c7 39 6e f9 5a 6e ee bb
566 45 78 a6 43 96 6d ca 4d 8e e3 de 84 2d e6 32 79
567 c6 18 15 9c 1a b5 4a 89 43 7b 6a 61 20 e4 93 0a
568 fb 52 a4 ba 6c ed 8a 49 47 ac 64 b3 0a 34 97 cb
569 e7 01 c2 d6 26 6d 51 72 19 ad 0e c6 d3 47 db e9
570
571 # Prime 1:
572 08 da d7 f1 13 63 fa a6 23 d5 d6 d5 e8 a3 19 32
573 8d 82 19 0d 71 27 d2 84 6c 43 9b 0a b7 26 19 b0
574 a4 3a 95 32 0e 4e c3 4f c3 a9 ce a8 76 42 23 05
575 bd 76 c5 ba 7b e9 e2 f4 10 c8 06 06 45 a1 d2 9e
576 db
577
578 # Prime 2:
579 08 47 e7 32 37 6f c7 90 0f 89 8e a8 2e b2 b0 fc
580 41 85 65 fd ae 62 f7 d9 ec 4c e2 21 7b 97 99 0d
581 d2 72 db 15 7f 99 f6 3c 0d cb b9 fb ac db d4 c4
582 da db 6d f6 77 56 35 8c a4 17 48 25 b4 8f 49 70
583 6d
584
585 # Prime exponent 1:
586 05 c2 a8 3c 12 4b 36 21 a2 aa 57 ea 2c 3e fe 03
587 5e ff 45 60 f3 3d de bb 7a da b8 1f ce 69 a0 c8
588 c2 ed c1 65 20 dd a8 3d 59 a2 3b e8 67 96 3a c6
589 5f 2c c7 10 bb cf b9 6e e1 03 de b7 71 d1 05 fd
590 85
591
592 # Prime exponent 2:
593 04 ca e8 aa 0d 9f aa 16 5c 87 b6 82 ec 14 0b 8e
594 d3 b5 0b 24 59 4b 7a 3b 2c 22 0b 36 69 bb 81 9f
595 98 4f 55 31 0a 1a e7 82 36 51 d4 a0 2e 99 44 79
596 72 59 51 39 36 34 34 e5 e3 0a 7e 7d 24 15 51 e1
597 b9
598
599 # Coefficient:
600 07 d3 e4 7b f6 86 60 0b 11 ac 28 3c e8 8d bb 3f
601 60 51 e8 ef d0 46 80 e4 4c 17 1e f5 31 b8 0b 2b
602 7c 39 fc 76 63 20 e2 cf 15 d8 d9 98 20 e9 6f f3
603 0d c6 96 91 83 9c 4b 40 d7 b0 6e 45 30 7d c9 1f
604 3f
605
606 # RSA-PSS signing of 6 random messages with random salts
607 # -------------------------------------------------------
Paul Kehrerefca2802014-02-17 20:55:13 -0600608 # PSS Example 8.1
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000609
Paul Kehrerefca2802014-02-17 20:55:13 -0600610 # -----------------
611
612 # Message to be signed:
613 81 33 2f 4b e6 29 48 41 5e a1 d8 99 79 2e ea cf
614 6c 6e 1d b1 da 8b e1 3b 5c ea 41 db 2f ed 46 70
615 92 e1 ff 39 89 14 c7 14 25 97 75 f5 95 f8 54 7f
616 73 56 92 a5 75 e6 92 3a f7 8f 22 c6 99 7d db 90
617 fb 6f 72 d7 bb 0d d5 74 4a 31 de cd 3d c3 68 58
618 49 83 6e d3 4a ec 59 63 04 ad 11 84 3c 4f 88 48
619 9f 20 97 35 f5 fb 7f da f7 ce c8 ad dc 58 18 16
620 8f 88 0a cb f4 90 d5 10 05 b7 a8 e8 4e 43 e5 42
621 87 97 75 71 dd 99 ee a4 b1 61 eb 2d f1 f5 10 8f
622 12 a4 14 2a 83 32 2e db 05 a7 54 87 a3 43 5c 9a
623 78 ce 53 ed 93 bc 55 08 57 d7 a9 fb
624
625 # Salt:
626 1d 65 49 1d 79 c8 64 b3 73 00 9b e6 f6 f2 46 7b
627 ac 4c 78 fa
628
629 # Signature:
630 02 62 ac 25 4b fa 77 f3 c1 ac a2 2c 51 79 f8 f0
631 40 42 2b 3c 5b af d4 0a 8f 21 cf 0f a5 a6 67 cc
632 d5 99 3d 42 db af b4 09 c5 20 e2 5f ce 2b 1e e1
633 e7 16 57 7f 1e fa 17 f3 da 28 05 2f 40 f0 41 9b
634 23 10 6d 78 45 aa f0 11 25 b6 98 e7 a4 df e9 2d
635 39 67 bb 00 c4 d0 d3 5b a3 55 2a b9 a8 b3 ee f0
636 7c 7f ec db c5 42 4a c4 db 1e 20 cb 37 d0 b2 74
637 47 69 94 0e a9 07 e1 7f bb ca 67 3b 20 52 23 80
638 c5
639
640 # PSS Example 8.2
641
642 # -----------------
643
644 # Message to be signed:
645 e2 f9 6e af 0e 05 e7 ba 32 6e cc a0 ba 7f d2 f7
646 c0 23 56 f3 ce de 9d 0f aa bf 4f cc 8e 60 a9 73
647 e5 59 5f d9 ea 08
648
649 # Salt:
650 43 5c 09 8a a9 90 9e b2 37 7f 12 48 b0 91 b6 89
651 87 ff 18 38
652
653 # Signature:
654 27 07 b9 ad 51 15 c5 8c 94 e9 32 e8 ec 0a 28 0f
655 56 33 9e 44 a1 b5 8d 4d dc ff 2f 31 2e 5f 34 dc
656 fe 39 e8 9c 6a 94 dc ee 86 db bd ae 5b 79 ba 4e
657 08 19 a9 e7 bf d9 d9 82 e7 ee 6c 86 ee 68 39 6e
658 8b 3a 14 c9 c8 f3 4b 17 8e b7 41 f9 d3 f1 21 10
659 9b f5 c8 17 2f ad a2 e7 68 f9 ea 14 33 03 2c 00
660 4a 8a a0 7e b9 90 00 0a 48 dc 94 c8 ba c8 aa be
661 2b 09 b1 aa 46 c0 a2 aa 0e 12 f6 3f bb a7 75 ba
662 7e
663
664 # <snip>
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000665
666 # =============================================
667
668 # Example 9: A 1536-bit RSA key pair
669 # -----------------------------------
670
671
672 # Public key
673 # ----------
674
675 # Modulus:
676 e6 bd 69 2a c9 66 45 79 04 03 fd d0 f5 be b8 b9
677 bf 92 ed 10 00 7f c3 65 04 64 19 dd 06 c0 5c 5b
678 5b 2f 48 ec f9 89 e4 ce 26 91 09 97 9c bb 40 b4
679 a0 ad 24 d2 24 83 d1 ee 31 5a d4 cc b1 53 42 68
680 35 26 91 c5 24 f6 dd 8e 6c 29 d2 24 cf 24 69 73
681 ae c8 6c 5b f6 b1 40 1a 85 0d 1b 9a d1 bb 8c bc
682 ec 47 b0 6f 0f 8c 7f 45 d3 fc 8f 31 92 99 c5 43
683 3d db c2 b3 05 3b 47 de d2 ec d4 a4 ca ef d6 14
684 83 3d c8 bb 62 2f 31 7e d0 76 b8 05 7f e8 de 3f
685 84 48 0a d5 e8 3e 4a 61 90 4a 4f 24 8f b3 97 02
686 73 57 e1 d3 0e 46 31 39 81 5c 6f d4 fd 5a c5 b8
687 17 2a 45 23 0e cb 63 18 a0 4f 14 55 d8 4e 5a 8b
688
689 # Exponent:
690 01 00 01
691
692 # Private key
693 # -----------
694
695 # Modulus:
696 e6 bd 69 2a c9 66 45 79 04 03 fd d0 f5 be b8 b9
697 bf 92 ed 10 00 7f c3 65 04 64 19 dd 06 c0 5c 5b
698 5b 2f 48 ec f9 89 e4 ce 26 91 09 97 9c bb 40 b4
699 a0 ad 24 d2 24 83 d1 ee 31 5a d4 cc b1 53 42 68
700 35 26 91 c5 24 f6 dd 8e 6c 29 d2 24 cf 24 69 73
701 ae c8 6c 5b f6 b1 40 1a 85 0d 1b 9a d1 bb 8c bc
702 ec 47 b0 6f 0f 8c 7f 45 d3 fc 8f 31 92 99 c5 43
703 3d db c2 b3 05 3b 47 de d2 ec d4 a4 ca ef d6 14
704 83 3d c8 bb 62 2f 31 7e d0 76 b8 05 7f e8 de 3f
705 84 48 0a d5 e8 3e 4a 61 90 4a 4f 24 8f b3 97 02
706 73 57 e1 d3 0e 46 31 39 81 5c 6f d4 fd 5a c5 b8
707 17 2a 45 23 0e cb 63 18 a0 4f 14 55 d8 4e 5a 8b
708
709 # Public exponent:
710 01 00 01
711
712 # Exponent:
713 6a 7f d8 4f b8 5f ad 07 3b 34 40 6d b7 4f 8d 61
714 a6 ab c1 21 96 a9 61 dd 79 56 5e 9d a6 e5 18 7b
715 ce 2d 98 02 50 f7 35 95 75 35 92 70 d9 15 90 bb
716 0e 42 7c 71 46 0b 55 d5 14 10 b1 91 bc f3 09 fe
717 a1 31 a9 2c 8e 70 27 38 fa 71 9f 1e 00 41 f5 2e
718 40 e9 1f 22 9f 4d 96 a1 e6 f1 72 e1 55 96 b4 51
719 0a 6d ae c2 61 05 f2 be bc 53 31 6b 87 bd f2 13
720 11 66 60 70 e8 df ee 69 d5 2c 71 a9 76 ca ae 79
721 c7 2b 68 d2 85 80 dc 68 6d 9f 51 29 d2 25 f8 2b
722 3d 61 55 13 a8 82 b3 db 91 41 6b 48 ce 08 88 82
723 13 e3 7e eb 9a f8 00 d8 1c ab 32 8c e4 20 68 99
724 03 c0 0c 7b 5f d3 1b 75 50 3a 6d 41 96 84 d6 29
725
726 # Prime 1:
727 f8 eb 97 e9 8d f1 26 64 ee fd b7 61 59 6a 69 dd
728 cd 0e 76 da ec e6 ed 4b f5 a1 b5 0a c0 86 f7 92
729 8a 4d 2f 87 26 a7 7e 51 5b 74 da 41 98 8f 22 0b
730 1c c8 7a a1 fc 81 0c e9 9a 82 f2 d1 ce 82 1e dc
731 ed 79 4c 69 41 f4 2c 7a 1a 0b 8c 4d 28 c7 5e c6
732 0b 65 22 79 f6 15 4a 76 2a ed 16 5d 47 de e3 67
733
734 # Prime 2:
735 ed 4d 71 d0 a6 e2 4b 93 c2 e5 f6 b4 bb e0 5f 5f
736 b0 af a0 42 d2 04 fe 33 78 d3 65 c2 f2 88 b6 a8
737 da d7 ef e4 5d 15 3e ef 40 ca cc 7b 81 ff 93 40
738 02 d1 08 99 4b 94 a5 e4 72 8c d9 c9 63 37 5a e4
739 99 65 bd a5 5c bf 0e fe d8 d6 55 3b 40 27 f2 d8
740 62 08 a6 e6 b4 89 c1 76 12 80 92 d6 29 e4 9d 3d
741
742 # Prime exponent 1:
743 2b b6 8b dd fb 0c 4f 56 c8 55 8b ff af 89 2d 80
744 43 03 78 41 e7 fa 81 cf a6 1a 38 c5 e3 9b 90 1c
745 8e e7 11 22 a5 da 22 27 bd 6c de eb 48 14 52 c1
746 2a d3 d6 1d 5e 4f 77 6a 0a b5 56 59 1b ef e3 e5
747 9e 5a 7f dd b8 34 5e 1f 2f 35 b9 f4 ce e5 7c 32
748 41 4c 08 6a ec 99 3e 93 53 e4 80 d9 ee c6 28 9f
749
750 # Prime exponent 2:
751 4f f8 97 70 9f ad 07 97 46 49 45 78 e7 0f d8 54
752 61 30 ee ab 56 27 c4 9b 08 0f 05 ee 4a d9 f3 e4
753 b7 cb a9 d6 a5 df f1 13 a4 1c 34 09 33 68 33 f1
754 90 81 6d 8a 6b c4 2e 9b ec 56 b7 56 7d 0f 3c 9c
755 69 6d b6 19 b2 45 d9 01 dd 85 6d b7 c8 09 2e 77
756 e9 a1 cc cd 56 ee 4d ba 42 c5 fd b6 1a ec 26 69
757
758 # Coefficient:
759 77 b9 d1 13 7b 50 40 4a 98 27 29 31 6e fa fc 7d
760 fe 66 d3 4e 5a 18 26 00 d5 f3 0a 0a 85 12 05 1c
761 56 0d 08 1d 4d 0a 18 35 ec 3d 25 a6 0f 4e 4d 6a
762 a9 48 b2 bf 3d bb 5b 12 4c bb c3 48 92 55 a3 a9
763 48 37 2f 69 78 49 67 45 f9 43 e1 db 4f 18 38 2c
764 ea a5 05 df c6 57 57 bb 3f 85 7a 58 dc e5 21 56
765
Paul Kehrerefca2802014-02-17 20:55:13 -0600766 # PKCS#1 v1.5 Signature Example 2.17
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000767
Paul Kehrerefca2802014-02-17 20:55:13 -0600768 # -----------------
769
770 # Message to be signed:
771 06 ad d7 5a b6 89 de 06 77 44 e6 9a 2e bd 4b 90
772 fa 93 83 00 3c d0 5f f5 36 cb f2 94 cd 21 5f 09
773 23 b7 fc 90 04 f0 aa 18 52 71 a1 d0 06 1f d0 e9
774 77 7a d1 ec 0c 71 59 1f 57 8b f7 b8 e5 a1
775
776 # Signature:
777 45 14 21 0e 54 1d 5b ad 7d d6 0a e5 49 b9 43 ac
778 c4 4f 21 39 0d f5 b6 13 18 45 5a 17 61 0d f5 b7
779 4d 84 ae d2 32 f1 7e 59 d9 1d d2 65 99 22 f8 12
780 db d4 96 81 69 03 84 b9 54 e9 ad fb 9b 1a 96 8c
781 0c bf f7 63 ec ee d6 27 50 c5 91 64 b5 e0 80 a8
782 fe f3 d5 5b fe 2a cf ad 27 52 a6 a8 45 9f a1 fa
783 b4 9a d3 78 c6 96 4b 23 ee 97 fd 10 34 61 0c 5c
784 c1 4c 61 e0 eb fb 17 11 f8 ad e9 6f e6 55 7b 38
785
786 # <snip>
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000787
788 # =============================================
789
Paul Kehrerefca2802014-02-17 20:55:13 -0600790 # <snip>
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000791 """).splitlines()
792
793 vectors = tuple(load_pkcs1_vectors(vector_data))
794 expected = (
795 (
796 {
797 'modulus': int(
798 '495370a1fb18543c16d3631e3163255df62be6eee890d5f25509e4f77'
799 '8a8ea6fbbbcdf85dff64e0d972003ab3681fbba6dd41fd541829b2e58'
800 '2de9f2a4a4e0a2d0900bef4753db3cee0ee06c7dfae8b1d53b5953218'
801 'f9cceea695b08668edeaadced9463b1d790d5ebf27e9115b46cad4d9a'
802 '2b8efab0561b0810344739ada0733f', 16),
803 'public_exponent': int('10001', 16),
804 'private_exponent': int(
805 '6c66ffe98980c38fcdeab5159898836165f4b4b817c4f6a8d486ee4ea'
806 '9130fe9b9092bd136d184f95f504a607eac565846d2fdd6597a8967c7'
807 '396ef95a6eeebb4578a643966dca4d8ee3de842de63279c618159c1ab'
808 '54a89437b6a6120e4930afb52a4ba6ced8a4947ac64b30a3497cbe701'
809 'c2d6266d517219ad0ec6d347dbe9', 16),
810 'p': int(
811 '8dad7f11363faa623d5d6d5e8a319328d82190d7127d2846c439b0ab7'
812 '2619b0a43a95320e4ec34fc3a9cea876422305bd76c5ba7be9e2f410c'
813 '8060645a1d29edb', 16),
814 'q': int(
815 '847e732376fc7900f898ea82eb2b0fc418565fdae62f7d9ec4ce2217b'
816 '97990dd272db157f99f63c0dcbb9fbacdbd4c4dadb6df67756358ca41'
Paul Kehrer09328bb2014-02-12 23:57:27 -0600817 '74825b48f49706d', 16),
818 'dmp1': int(
819 '05c2a83c124b3621a2aa57ea2c3efe035eff4560f33ddebb7adab81fc'
820 'e69a0c8c2edc16520dda83d59a23be867963ac65f2cc710bbcfb96ee1'
821 '03deb771d105fd85', 16),
822 'dmq1': int(
823 '04cae8aa0d9faa165c87b682ec140b8ed3b50b24594b7a3b2c220b366'
824 '9bb819f984f55310a1ae7823651d4a02e99447972595139363434e5e3'
825 '0a7e7d241551e1b9', 16),
826 'iqmp': int(
827 '07d3e47bf686600b11ac283ce88dbb3f6051e8efd04680e44c171ef53'
828 '1b80b2b7c39fc766320e2cf15d8d99820e96ff30dc69691839c4b40d7'
Paul Kehrerefca2802014-02-17 20:55:13 -0600829 'b06e45307dc91f3f', 16),
830 'examples': [
831 {
Paul Kehrer26811802014-02-19 16:32:11 -0600832 'message': b'81332f4be62948415ea1d899792eeacf6c6e1db1d'
833 b'a8be13b5cea41db2fed467092e1ff398914c71425'
834 b'9775f595f8547f735692a575e6923af78f22c6997'
835 b'ddb90fb6f72d7bb0dd5744a31decd3dc368584983'
836 b'6ed34aec596304ad11843c4f88489f209735f5fb7'
837 b'fdaf7cec8addc5818168f880acbf490d51005b7a8'
838 b'e84e43e54287977571dd99eea4b161eb2df1f5108'
839 b'f12a4142a83322edb05a75487a3435c9a78ce53ed'
840 b'93bc550857d7a9fb',
841 'salt': b'1d65491d79c864b373009be6f6f2467bac4c78fa',
842 'signature': b'0262ac254bfa77f3c1aca22c5179f8f040422b3'
843 b'c5bafd40a8f21cf0fa5a667ccd5993d42dbafb4'
844 b'09c520e25fce2b1ee1e716577f1efa17f3da280'
845 b'52f40f0419b23106d7845aaf01125b698e7a4df'
846 b'e92d3967bb00c4d0d35ba3552ab9a8b3eef07c7'
847 b'fecdbc5424ac4db1e20cb37d0b2744769940ea9'
848 b'07e17fbbca673b20522380c5'
Paul Kehrerefca2802014-02-17 20:55:13 -0600849 }, {
Paul Kehrer26811802014-02-19 16:32:11 -0600850 'message': b'e2f96eaf0e05e7ba326ecca0ba7fd2f7c02356f3c'
851 b'ede9d0faabf4fcc8e60a973e5595fd9ea08',
852 'salt': b'435c098aa9909eb2377f1248b091b68987ff1838',
853 'signature': b'2707b9ad5115c58c94e932e8ec0a280f56339e4'
854 b'4a1b58d4ddcff2f312e5f34dcfe39e89c6a94dc'
855 b'ee86dbbdae5b79ba4e0819a9e7bfd9d982e7ee6'
856 b'c86ee68396e8b3a14c9c8f34b178eb741f9d3f1'
857 b'21109bf5c8172fada2e768f9ea1433032c004a8'
858 b'aa07eb990000a48dc94c8bac8aabe2b09b1aa46'
859 b'c0a2aa0e12f63fbba775ba7e'
Paul Kehrerefca2802014-02-17 20:55:13 -0600860 }
861 ]
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000862 },
863
864 {
865 'modulus': int(
866 '495370a1fb18543c16d3631e3163255df62be6eee890d5f25509e4f77'
867 '8a8ea6fbbbcdf85dff64e0d972003ab3681fbba6dd41fd541829b2e58'
868 '2de9f2a4a4e0a2d0900bef4753db3cee0ee06c7dfae8b1d53b5953218'
869 'f9cceea695b08668edeaadced9463b1d790d5ebf27e9115b46cad4d9a'
870 '2b8efab0561b0810344739ada0733f', 16),
871 'public_exponent': int('10001', 16)
872 }
873 ),
874 (
875 {
876 'modulus': int(
877 'e6bd692ac96645790403fdd0f5beb8b9bf92ed10007fc365046419dd0'
878 '6c05c5b5b2f48ecf989e4ce269109979cbb40b4a0ad24d22483d1ee31'
879 '5ad4ccb1534268352691c524f6dd8e6c29d224cf246973aec86c5bf6b'
880 '1401a850d1b9ad1bb8cbcec47b06f0f8c7f45d3fc8f319299c5433ddb'
881 'c2b3053b47ded2ecd4a4caefd614833dc8bb622f317ed076b8057fe8d'
882 'e3f84480ad5e83e4a61904a4f248fb397027357e1d30e463139815c6f'
883 'd4fd5ac5b8172a45230ecb6318a04f1455d84e5a8b', 16),
884 'public_exponent': int('10001', 16),
885 'private_exponent': int(
886 '6a7fd84fb85fad073b34406db74f8d61a6abc12196a961dd79565e9da'
887 '6e5187bce2d980250f7359575359270d91590bb0e427c71460b55d514'
888 '10b191bcf309fea131a92c8e702738fa719f1e0041f52e40e91f229f4'
889 'd96a1e6f172e15596b4510a6daec26105f2bebc53316b87bdf2131166'
890 '6070e8dfee69d52c71a976caae79c72b68d28580dc686d9f5129d225f'
891 '82b3d615513a882b3db91416b48ce08888213e37eeb9af800d81cab32'
892 '8ce420689903c00c7b5fd31b75503a6d419684d629', 16),
893 'p': int(
894 'f8eb97e98df12664eefdb761596a69ddcd0e76daece6ed4bf5a1b50ac'
895 '086f7928a4d2f8726a77e515b74da41988f220b1cc87aa1fc810ce99a'
896 '82f2d1ce821edced794c6941f42c7a1a0b8c4d28c75ec60b652279f61'
897 '54a762aed165d47dee367', 16),
898 'q': int(
899 'ed4d71d0a6e24b93c2e5f6b4bbe05f5fb0afa042d204fe3378d365c2f'
900 '288b6a8dad7efe45d153eef40cacc7b81ff934002d108994b94a5e472'
901 '8cd9c963375ae49965bda55cbf0efed8d6553b4027f2d86208a6e6b48'
Paul Kehrer09328bb2014-02-12 23:57:27 -0600902 '9c176128092d629e49d3d', 16),
903 'dmp1': int(
904 '2bb68bddfb0c4f56c8558bffaf892d8043037841e7fa81cfa61a38c5e'
905 '39b901c8ee71122a5da2227bd6cdeeb481452c12ad3d61d5e4f776a0a'
906 'b556591befe3e59e5a7fddb8345e1f2f35b9f4cee57c32414c086aec9'
907 '93e9353e480d9eec6289f', 16),
908 'dmq1': int(
909 '4ff897709fad079746494578e70fd8546130eeab5627c49b080f05ee4'
910 'ad9f3e4b7cba9d6a5dff113a41c3409336833f190816d8a6bc42e9bec'
911 '56b7567d0f3c9c696db619b245d901dd856db7c8092e77e9a1cccd56e'
912 'e4dba42c5fdb61aec2669', 16),
913 'iqmp': int(
914 '77b9d1137b50404a982729316efafc7dfe66d34e5a182600d5f30a0a8'
915 '512051c560d081d4d0a1835ec3d25a60f4e4d6aa948b2bf3dbb5b124c'
916 'bbc3489255a3a948372f6978496745f943e1db4f18382ceaa505dfc65'
Paul Kehrerefca2802014-02-17 20:55:13 -0600917 '757bb3f857a58dce52156', 16),
918 'examples': [
919 {
Paul Kehrer26811802014-02-19 16:32:11 -0600920 'message': b'06add75ab689de067744e69a2ebd4b90fa9383003'
921 b'cd05ff536cbf294cd215f0923b7fc9004f0aa1852'
922 b'71a1d0061fd0e9777ad1ec0c71591f578bf7b8e5a'
923 b'1',
924 'signature': b'4514210e541d5bad7dd60ae549b943acc44f213'
925 b'90df5b61318455a17610df5b74d84aed232f17e'
926 b'59d91dd2659922f812dbd49681690384b954e9a'
927 b'dfb9b1a968c0cbff763eceed62750c59164b5e0'
928 b'80a8fef3d55bfe2acfad2752a6a8459fa1fab49'
929 b'ad378c6964b23ee97fd1034610c5cc14c61e0eb'
930 b'fb1711f8ade96fe6557b38'
Paul Kehrerefca2802014-02-17 20:55:13 -0600931 }
932 ]
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000933 },
934
935 {
936 'modulus': int(
937 'e6bd692ac96645790403fdd0f5beb8b9bf92ed10007fc365046419dd0'
938 '6c05c5b5b2f48ecf989e4ce269109979cbb40b4a0ad24d22483d1ee31'
939 '5ad4ccb1534268352691c524f6dd8e6c29d224cf246973aec86c5bf6b'
940 '1401a850d1b9ad1bb8cbcec47b06f0f8c7f45d3fc8f319299c5433ddb'
941 'c2b3053b47ded2ecd4a4caefd614833dc8bb622f317ed076b8057fe8d'
942 'e3f84480ad5e83e4a61904a4f248fb397027357e1d30e463139815c6f'
943 'd4fd5ac5b8172a45230ecb6318a04f1455d84e5a8b', 16),
944 'public_exponent': int('10001', 16)
945 }
946 )
947 )
948 assert vectors == expected
Ayrx4300f6c2014-02-09 15:15:13 +0800949
950
Paul Kehrer3fe91502014-03-29 12:08:39 -0500951def test_load_pkcs1_oaep_vectors():
952 vector_data = textwrap.dedent("""
953 Test vectors for RSA-OAEP
954 =========================
955
956 This file contains test vectors for the RSA-OAEP encryption
957
958 Key lengths:
959
960 Key 1: 1024 bits
961 # <snip>
962 ===========================================================================
963 # Example 1: A 1024-bit RSA key pair
964 # -----------------------------------
965
966
967 # Public key
968 # ----------
969
970 # Modulus:
971 a8 b3 b2 84 af 8e b5 0b 38 70 34 a8 60 f1 46 c4
972 91 9f 31 87 63 cd 6c 55 98 c8 ae 48 11 a1 e0 ab
973 c4 c7 e0 b0 82 d6 93 a5 e7 fc ed 67 5c f4 66 85
974 12 77 2c 0c bc 64 a7 42 c6 c6 30 f5 33 c8 cc 72
975 f6 2a e8 33 c4 0b f2 58 42 e9 84 bb 78 bd bf 97
976 c0 10 7d 55 bd b6 62 f5 c4 e0 fa b9 84 5c b5 14
977 8e f7 39 2d d3 aa ff 93 ae 1e 6b 66 7b b3 d4 24
978 76 16 d4 f5 ba 10 d4 cf d2 26 de 88 d3 9f 16 fb
979
980 # Exponent:
981 01 00 01
982
983 # Private key
984 # -----------
985
986 # Modulus:
987 a8 b3 b2 84 af 8e b5 0b 38 70 34 a8 60 f1 46 c4
988 91 9f 31 87 63 cd 6c 55 98 c8 ae 48 11 a1 e0 ab
989 c4 c7 e0 b0 82 d6 93 a5 e7 fc ed 67 5c f4 66 85
990 12 77 2c 0c bc 64 a7 42 c6 c6 30 f5 33 c8 cc 72
991 f6 2a e8 33 c4 0b f2 58 42 e9 84 bb 78 bd bf 97
992 c0 10 7d 55 bd b6 62 f5 c4 e0 fa b9 84 5c b5 14
993 8e f7 39 2d d3 aa ff 93 ae 1e 6b 66 7b b3 d4 24
994 76 16 d4 f5 ba 10 d4 cf d2 26 de 88 d3 9f 16 fb
995
996 # Public exponent:
997 01 00 01
998
999 # Exponent:
1000 53 33 9c fd b7 9f c8 46 6a 65 5c 73 16 ac a8 5c
1001 55 fd 8f 6d d8 98 fd af 11 95 17 ef 4f 52 e8 fd
1002 8e 25 8d f9 3f ee 18 0f a0 e4 ab 29 69 3c d8 3b
1003 15 2a 55 3d 4a c4 d1 81 2b 8b 9f a5 af 0e 7f 55
1004 fe 73 04 df 41 57 09 26 f3 31 1f 15 c4 d6 5a 73
1005 2c 48 31 16 ee 3d 3d 2d 0a f3 54 9a d9 bf 7c bf
1006 b7 8a d8 84 f8 4d 5b eb 04 72 4d c7 36 9b 31 de
1007 f3 7d 0c f5 39 e9 cf cd d3 de 65 37 29 ea d5 d1
1008
1009 # Prime 1:
1010 d3 27 37 e7 26 7f fe 13 41 b2 d5 c0 d1 50 a8 1b
1011 58 6f b3 13 2b ed 2f 8d 52 62 86 4a 9c b9 f3 0a
1012 f3 8b e4 48 59 8d 41 3a 17 2e fb 80 2c 21 ac f1
1013 c1 1c 52 0c 2f 26 a4 71 dc ad 21 2e ac 7c a3 9d
1014
1015 # Prime 2:
1016 cc 88 53 d1 d5 4d a6 30 fa c0 04 f4 71 f2 81 c7
1017 b8 98 2d 82 24 a4 90 ed be b3 3d 3e 3d 5c c9 3c
1018 47 65 70 3d 1d d7 91 64 2f 1f 11 6a 0d d8 52 be
1019 24 19 b2 af 72 bf e9 a0 30 e8 60 b0 28 8b 5d 77
1020
1021 # Prime exponent 1:
1022 0e 12 bf 17 18 e9 ce f5 59 9b a1 c3 88 2f e8 04
1023 6a 90 87 4e ef ce 8f 2c cc 20 e4 f2 74 1f b0 a3
1024 3a 38 48 ae c9 c9 30 5f be cb d2 d7 68 19 96 7d
1025 46 71 ac c6 43 1e 40 37 96 8d b3 78 78 e6 95 c1
1026
1027 # Prime exponent 2:
1028 95 29 7b 0f 95 a2 fa 67 d0 07 07 d6 09 df d4 fc
1029 05 c8 9d af c2 ef 6d 6e a5 5b ec 77 1e a3 33 73
1030 4d 92 51 e7 90 82 ec da 86 6e fe f1 3c 45 9e 1a
1031 63 13 86 b7 e3 54 c8 99 f5 f1 12 ca 85 d7 15 83
1032
1033 # Coefficient:
1034 4f 45 6c 50 24 93 bd c0 ed 2a b7 56 a3 a6 ed 4d
1035 67 35 2a 69 7d 42 16 e9 32 12 b1 27 a6 3d 54 11
1036 ce 6f a9 8d 5d be fd 73 26 3e 37 28 14 27 43 81
1037 81 66 ed 7d d6 36 87 dd 2a 8c a1 d2 f4 fb d8 e1
1038
1039 # RSA-OAEP encryption of 6 random messages with random seeds
1040 # -----------------------------------------------------------
1041
1042 # OAEP Example 1.1
1043 # ------------------
1044
1045 # Message:
1046 66 28 19 4e 12 07 3d b0 3b a9 4c da 9e f9 53 23
1047 97 d5 0d ba 79 b9 87 00 4a fe fe 34
1048
1049 # Seed:
1050 18 b7 76 ea 21 06 9d 69 77 6a 33 e9 6b ad 48 e1
1051 dd a0 a5 ef
1052
1053 # Encryption:
1054 35 4f e6 7b 4a 12 6d 5d 35 fe 36 c7 77 79 1a 3f
1055 7b a1 3d ef 48 4e 2d 39 08 af f7 22 fa d4 68 fb
1056 21 69 6d e9 5d 0b e9 11 c2 d3 17 4f 8a fc c2 01
1057 03 5f 7b 6d 8e 69 40 2d e5 45 16 18 c2 1a 53 5f
1058 a9 d7 bf c5 b8 dd 9f c2 43 f8 cf 92 7d b3 13 22
1059 d6 e8 81 ea a9 1a 99 61 70 e6 57 a0 5a 26 64 26
1060 d9 8c 88 00 3f 84 77 c1 22 70 94 a0 d9 fa 1e 8c
1061 40 24 30 9c e1 ec cc b5 21 00 35 d4 7a c7 2e 8a
1062
1063 # OAEP Example 1.2
1064 # ------------------
1065
1066 # Message:
1067 75 0c 40 47 f5 47 e8 e4 14 11 85 65 23 29 8a c9
1068 ba e2 45 ef af 13 97 fb e5 6f 9d d5
1069
1070 # Seed:
1071 0c c7 42 ce 4a 9b 7f 32 f9 51 bc b2 51 ef d9 25
1072 fe 4f e3 5f
1073
1074 # Encryption:
1075 64 0d b1 ac c5 8e 05 68 fe 54 07 e5 f9 b7 01 df
1076 f8 c3 c9 1e 71 6c 53 6f c7 fc ec 6c b5 b7 1c 11
1077 65 98 8d 4a 27 9e 15 77 d7 30 fc 7a 29 93 2e 3f
1078 00 c8 15 15 23 6d 8d 8e 31 01 7a 7a 09 df 43 52
1079 d9 04 cd eb 79 aa 58 3a dc c3 1e a6 98 a4 c0 52
1080 83 da ba 90 89 be 54 91 f6 7c 1a 4e e4 8d c7 4b
1081 bb e6 64 3a ef 84 66 79 b4 cb 39 5a 35 2d 5e d1
1082 15 91 2d f6 96 ff e0 70 29 32 94 6d 71 49 2b 44
1083
1084 # =============================================
1085 """).splitlines()
1086
1087 vectors = load_pkcs1_vectors(vector_data)
1088 expected = [
1089 (
1090 {
1091 'modulus': int(
1092 'a8b3b284af8eb50b387034a860f146c4919f318763cd6c5598c8ae481'
1093 '1a1e0abc4c7e0b082d693a5e7fced675cf4668512772c0cbc64a742c6'
1094 'c630f533c8cc72f62ae833c40bf25842e984bb78bdbf97c0107d55bdb'
1095 '662f5c4e0fab9845cb5148ef7392dd3aaff93ae1e6b667bb3d4247616'
1096 'd4f5ba10d4cfd226de88d39f16fb', 16),
1097 'public_exponent': int('10001', 16),
1098 'private_exponent': int(
1099 '53339cfdb79fc8466a655c7316aca85c55fd8f6dd898fdaf119517ef4'
1100 'f52e8fd8e258df93fee180fa0e4ab29693cd83b152a553d4ac4d1812b'
1101 '8b9fa5af0e7f55fe7304df41570926f3311f15c4d65a732c483116ee3'
1102 'd3d2d0af3549ad9bf7cbfb78ad884f84d5beb04724dc7369b31def37d'
1103 '0cf539e9cfcdd3de653729ead5d1', 16),
1104 'p': int(
1105 'd32737e7267ffe1341b2d5c0d150a81b586fb3132bed2f8d5262864a9'
1106 'cb9f30af38be448598d413a172efb802c21acf1c11c520c2f26a471dc'
1107 'ad212eac7ca39d', 16),
1108 'q': int(
1109 'cc8853d1d54da630fac004f471f281c7b8982d8224a490edbeb33d3e3'
1110 'd5cc93c4765703d1dd791642f1f116a0dd852be2419b2af72bfe9a030'
1111 'e860b0288b5d77', 16),
1112 'dmp1': int(
1113 '0e12bf1718e9cef5599ba1c3882fe8046a90874eefce8f2ccc20e4f27'
1114 '41fb0a33a3848aec9c9305fbecbd2d76819967d4671acc6431e403796'
1115 '8db37878e695c1', 16),
1116 'dmq1': int(
1117 '95297b0f95a2fa67d00707d609dfd4fc05c89dafc2ef6d6ea55bec771'
1118 'ea333734d9251e79082ecda866efef13c459e1a631386b7e354c899f5'
1119 'f112ca85d71583', 16),
1120 'iqmp': int(
1121 '4f456c502493bdc0ed2ab756a3a6ed4d67352a697d4216e93212b127a'
1122 '63d5411ce6fa98d5dbefd73263e3728142743818166ed7dd63687dd2a'
1123 '8ca1d2f4fbd8e1', 16),
1124 'examples': [
1125 {
1126 'message': b'6628194e12073db03ba94cda9ef9532397d50dba7'
1127 b'9b987004afefe34',
1128 'seed': b'18b776ea21069d69776a33e96bad48e1dda0a5ef',
1129 'encryption': b'354fe67b4a126d5d35fe36c777791a3f7ba13d'
1130 b'ef484e2d3908aff722fad468fb21696de95d0b'
1131 b'e911c2d3174f8afcc201035f7b6d8e69402de5'
1132 b'451618c21a535fa9d7bfc5b8dd9fc243f8cf92'
1133 b'7db31322d6e881eaa91a996170e657a05a2664'
1134 b'26d98c88003f8477c1227094a0d9fa1e8c4024'
1135 b'309ce1ecccb5210035d47ac72e8a'
1136 }, {
1137 'message': b'750c4047f547e8e41411856523298ac9bae245efa'
1138 b'f1397fbe56f9dd5',
1139 'seed': b'0cc742ce4a9b7f32f951bcb251efd925fe4fe35f',
1140 'encryption': b'640db1acc58e0568fe5407e5f9b701dff8c3c9'
1141 b'1e716c536fc7fcec6cb5b71c1165988d4a279e'
1142 b'1577d730fc7a29932e3f00c81515236d8d8e31'
1143 b'017a7a09df4352d904cdeb79aa583adcc31ea6'
1144 b'98a4c05283daba9089be5491f67c1a4ee48dc7'
1145 b'4bbbe6643aef846679b4cb395a352d5ed11591'
1146 b'2df696ffe0702932946d71492b44'
1147 }
1148 ]
1149 },
1150
1151 {
1152 'modulus': int(
1153 'a8b3b284af8eb50b387034a860f146c4919f318763cd6c5598c8ae481'
1154 '1a1e0abc4c7e0b082d693a5e7fced675cf4668512772c0cbc64a742c6'
1155 'c630f533c8cc72f62ae833c40bf25842e984bb78bdbf97c0107d55bdb'
1156 '662f5c4e0fab9845cb5148ef7392dd3aaff93ae1e6b667bb3d4247616'
1157 'd4f5ba10d4cfd226de88d39f16fb', 16),
1158 'public_exponent': int('10001', 16),
1159 }
1160 )
1161 ]
1162 assert vectors == expected
1163
1164
Ayrx4300f6c2014-02-09 15:15:13 +08001165def test_load_hotp_vectors():
1166 vector_data = textwrap.dedent("""
1167 # HOTP Test Vectors
1168 # RFC 4226 Appendix D
1169
1170 COUNT = 0
1171 COUNTER = 0
1172 INTERMEDIATE = cc93cf18508d94934c64b65d8ba7667fb7cde4b0
1173 TRUNCATED = 4c93cf18
1174 HOTP = 755224
Ayrxefc68382014-02-10 00:01:05 +08001175 SECRET = 12345678901234567890
Ayrx4300f6c2014-02-09 15:15:13 +08001176
1177 COUNT = 1
1178 COUNTER = 1
1179 INTERMEDIATE = 75a48a19d4cbe100644e8ac1397eea747a2d33ab
1180 TRUNCATED = 41397eea
1181 HOTP = 287082
Ayrxefc68382014-02-10 00:01:05 +08001182 SECRET = 12345678901234567890
1183
Ayrx4300f6c2014-02-09 15:15:13 +08001184
1185 COUNT = 2
1186 COUNTER = 2
1187 INTERMEDIATE = 0bacb7fa082fef30782211938bc1c5e70416ff44
1188 TRUNCATED = 82fef30
1189 HOTP = 359152
Ayrxefc68382014-02-10 00:01:05 +08001190 SECRET = 12345678901234567890
1191
Ayrx4300f6c2014-02-09 15:15:13 +08001192
1193 COUNT = 3
1194 COUNTER = 3
1195 INTERMEDIATE = 66c28227d03a2d5529262ff016a1e6ef76557ece
1196 TRUNCATED = 66ef7655
1197 HOTP = 969429
Ayrxefc68382014-02-10 00:01:05 +08001198 SECRET = 12345678901234567890
Ayrx4300f6c2014-02-09 15:15:13 +08001199 """).splitlines()
1200
1201 assert load_nist_vectors(vector_data) == [
1202 {
1203 "counter": b"0",
1204 "intermediate": b"cc93cf18508d94934c64b65d8ba7667fb7cde4b0",
1205 "truncated": b"4c93cf18",
1206 "hotp": b"755224",
Ayrxefc68382014-02-10 00:01:05 +08001207 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +08001208 },
1209 {
1210 "counter": b"1",
1211 "intermediate": b"75a48a19d4cbe100644e8ac1397eea747a2d33ab",
1212 "truncated": b"41397eea",
1213 "hotp": b"287082",
Ayrxefc68382014-02-10 00:01:05 +08001214 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +08001215 },
1216 {
1217 "counter": b"2",
1218 "intermediate": b"0bacb7fa082fef30782211938bc1c5e70416ff44",
1219 "truncated": b"82fef30",
1220 "hotp": b"359152",
Ayrxefc68382014-02-10 00:01:05 +08001221 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +08001222 },
1223 {
1224 "counter": b"3",
1225 "intermediate": b"66c28227d03a2d5529262ff016a1e6ef76557ece",
1226 "truncated": b"66ef7655",
1227 "hotp": b"969429",
Ayrxefc68382014-02-10 00:01:05 +08001228 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +08001229 },
1230 ]
1231
1232
1233def test_load_totp_vectors():
1234 vector_data = textwrap.dedent("""
1235 # TOTP Test Vectors
1236 # RFC 6238 Appendix B
1237
1238 COUNT = 0
1239 TIME = 59
1240 TOTP = 94287082
1241 MODE = SHA1
Ayrxefc68382014-02-10 00:01:05 +08001242 SECRET = 12345678901234567890
Ayrx4300f6c2014-02-09 15:15:13 +08001243
1244 COUNT = 1
1245 TIME = 59
1246 TOTP = 46119246
1247 MODE = SHA256
Ayrxefc68382014-02-10 00:01:05 +08001248 SECRET = 12345678901234567890
Ayrx4300f6c2014-02-09 15:15:13 +08001249
1250 COUNT = 2
1251 TIME = 59
1252 TOTP = 90693936
1253 MODE = SHA512
Ayrxefc68382014-02-10 00:01:05 +08001254 SECRET = 12345678901234567890
Ayrx4300f6c2014-02-09 15:15:13 +08001255 """).splitlines()
1256
1257 assert load_nist_vectors(vector_data) == [
1258 {
1259 "time": b"59",
1260 "totp": b"94287082",
1261 "mode": b"SHA1",
Ayrxefc68382014-02-10 00:01:05 +08001262 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +08001263 },
1264 {
1265 "time": b"59",
1266 "totp": b"46119246",
1267 "mode": b"SHA256",
Ayrxefc68382014-02-10 00:01:05 +08001268 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +08001269 },
1270 {
1271 "time": b"59",
1272 "totp": b"90693936",
1273 "mode": b"SHA512",
Ayrxefc68382014-02-10 00:01:05 +08001274 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +08001275 },
1276 ]
Paul Kehrer2f2a2062014-03-10 23:30:28 -04001277
1278
1279def test_load_rsa_nist_vectors():
1280 vector_data = textwrap.dedent("""
Paul Kehrer61666eb2014-03-18 07:53:04 -04001281 # CAVS 11.4
1282 # "SigGen PKCS#1 RSASSA-PSS" information
1283 # Mod sizes selected: 1024 1536 2048 3072 4096
Paul Kehrer2f2a2062014-03-10 23:30:28 -04001284 # SHA Algorithm selected:SHA1 SHA224 SHA256 SHA384 SHA512
1285 # Salt len: 20
1286
1287 [mod = 1024]
1288
1289 n = bcb47b2e0dafcba81ff2a2b5cb115ca7e757184c9d72bcdcda707a146b3b4e29989d
1290
1291 e = 00000000000000000000000000000000000000000000000000000000000000000010001
1292 SHAAlg = SHA1
1293 Msg = 1248f62a4389f42f7b4bb131053d6c88a994db2075b912ccbe3ea7dc611714f14e
1294 S = 682cf53c1145d22a50caa9eb1a9ba70670c5915e0fdfde6457a765de2a8fe12de97
1295
1296 SHAAlg = SHA384
1297 Msg = e511903c2f1bfba245467295ac95413ac4746c984c3750a728c388aa628b0ebf
1298 S = 9c748702bbcc1f9468864cd360c8c39d007b2d8aaee833606c70f7593cf0d1519
1299
1300 [mod = 1024]
1301
1302 n = 1234567890
1303
1304 e = 0010001
1305
1306 SHAAlg = SHA512
1307 Msg = 3456781293fab829
1308 S = deadbeef0000
1309 """).splitlines()
1310
1311 vectors = load_rsa_nist_vectors(vector_data)
1312 assert vectors == [
1313 {
1314 "modulus": int("bcb47b2e0dafcba81ff2a2b5cb115ca7e757184c9d72bcdcda"
1315 "707a146b3b4e29989d", 16),
1316 "public_exponent": 65537,
Paul Kehrerdde59332014-03-16 17:57:20 -04001317 "algorithm": "SHA1",
Paul Kehrer2f2a2062014-03-10 23:30:28 -04001318 "salt_length": 20,
1319 "msg": b"1248f62a4389f42f7b4bb131053d6c88a994db2075b912ccbe3ea7dc6"
1320 b"11714f14e",
1321 "s": b"682cf53c1145d22a50caa9eb1a9ba70670c5915e0fdfde6457a765de2a8"
Paul Kehrer62707f12014-03-18 07:19:14 -04001322 b"fe12de97",
1323 "fail": False
Paul Kehrer2f2a2062014-03-10 23:30:28 -04001324 },
1325 {
1326 "modulus": int("bcb47b2e0dafcba81ff2a2b5cb115ca7e757184c9d72bcdcda"
1327 "707a146b3b4e29989d", 16),
1328 "public_exponent": 65537,
Paul Kehrerdde59332014-03-16 17:57:20 -04001329 "algorithm": "SHA384",
Paul Kehrer2f2a2062014-03-10 23:30:28 -04001330 "salt_length": 20,
1331 "msg": b"e511903c2f1bfba245467295ac95413ac4746c984c3750a728c388aa6"
1332 b"28b0ebf",
1333 "s": b"9c748702bbcc1f9468864cd360c8c39d007b2d8aaee833606c70f7593cf"
Paul Kehrer62707f12014-03-18 07:19:14 -04001334 b"0d1519",
1335 "fail": False
Paul Kehrer2f2a2062014-03-10 23:30:28 -04001336 },
1337 {
1338 "modulus": 78187493520,
1339 "public_exponent": 65537,
Paul Kehrerdde59332014-03-16 17:57:20 -04001340 "algorithm": "SHA512",
Paul Kehrer2f2a2062014-03-10 23:30:28 -04001341 "salt_length": 20,
1342 "msg": b"3456781293fab829",
Paul Kehrer62707f12014-03-18 07:19:14 -04001343 "s": b"deadbeef0000",
1344 "fail": False
1345 },
1346 ]
1347
1348
Paul Kehrerafc25182014-03-18 07:51:56 -04001349def test_load_rsa_nist_pkcs1v15_verification_vectors():
Paul Kehrer62707f12014-03-18 07:19:14 -04001350 vector_data = textwrap.dedent("""
Paul Kehrer61666eb2014-03-18 07:53:04 -04001351 # CAVS 11.0
1352 # "SigVer PKCS#1 Ver 1.5" information
1353 # Mod sizes selected: 1024 1536 2048 3072 4096
1354 # SHA Algorithm selected:SHA1 SHA224 SHA256 SHA384 SHA512
1355 # Generated on Wed Mar 02 00:13:02 2011
Paul Kehrer62707f12014-03-18 07:19:14 -04001356
1357 [mod = 1024]
1358
1359 n = be499b5e7f06c83fa0293e31465c8eb6b58af920bae52a7b5b9bfeb7aa72db126411
1360
1361 p = e7a80c5d211c06acb900939495f26d365fc2b4825b75e356f89003eaa5931e6be5c3
1362 q = d248aa248000f720258742da67b711940c8f76e1ecd52b67a6ffe1e49354d66ff84f
1363
1364 SHAAlg = SHA1
1365 e = 00000000000000000000000000000000000000000000000000000000000000000011
1366 d = 0d0f17362bdad181db4e1fe03e8de1a3208989914e14bf269558826bfa20faf4b68d
1367 Msg = 6b9cfac0ba1c7890b13e381ce752195cc1375237db2afcf6a9dcd1f95ec733a80c
1368 S = 562d87b5781c01d166fef3972669a0495c145b898a17df4743fbefb0a1582bd6ba9d
1369 SaltVal = 11223344555432167890
1370 Result = F (3 - Signature changed )
1371
1372 SHAAlg = SHA1
1373 e = 0000000000003
1374 d = bfa20faf4b68d
1375 Msg = 2a67c70ff14f9b34ddb42e6f89d5971057a0da980fc9ae70c81a84da0c0ac42737
1376 S = 2b91c6ae2b3c46ff18d5b7abe239634cb752d0acb53eea0ccd8ea8483036a50e8faf
1377 SaltVal = 11223344555432167890
1378 Result = P
1379 """).splitlines()
1380
1381 vectors = load_rsa_nist_vectors(vector_data)
1382 assert vectors == [
1383 {
1384 "modulus": int("be499b5e7f06c83fa0293e31465c8eb6b58af920bae52a7b5b"
1385 "9bfeb7aa72db126411", 16),
1386 "p": int("e7a80c5d211c06acb900939495f26d365fc2b4825b75e356f89003ea"
1387 "a5931e6be5c3", 16),
1388 "q": int("d248aa248000f720258742da67b711940c8f76e1ecd52b67a6ffe1e4"
1389 "9354d66ff84f", 16),
1390 "public_exponent": 17,
1391 "algorithm": "SHA1",
1392 "private_exponent": int("0d0f17362bdad181db4e1fe03e8de1a3208989914"
1393 "e14bf269558826bfa20faf4b68d", 16),
1394 "msg": b"6b9cfac0ba1c7890b13e381ce752195cc1375237db2afcf6a9dcd1f95"
1395 b"ec733a80c",
1396 "s": b"562d87b5781c01d166fef3972669a0495c145b898a17df4743fbefb0a15"
1397 b"82bd6ba9d",
1398 "saltval": b"11223344555432167890",
1399 "fail": True
1400 },
1401 {
1402 "modulus": int("be499b5e7f06c83fa0293e31465c8eb6b58af920bae52a7b5b"
1403 "9bfeb7aa72db126411", 16),
1404 "p": int("e7a80c5d211c06acb900939495f26d365fc2b4825b75e356f89003ea"
1405 "a5931e6be5c3", 16),
1406 "q": int("d248aa248000f720258742da67b711940c8f76e1ecd52b67a6ffe1e4"
1407 "9354d66ff84f", 16),
1408 "public_exponent": 3,
1409 "algorithm": "SHA1",
1410 "private_exponent": int("bfa20faf4b68d", 16),
1411 "msg": b"2a67c70ff14f9b34ddb42e6f89d5971057a0da980fc9ae70c81a84da0"
1412 b"c0ac42737",
1413 "s": b"2b91c6ae2b3c46ff18d5b7abe239634cb752d0acb53eea0ccd8ea848303"
1414 b"6a50e8faf",
1415 "saltval": b"11223344555432167890",
1416 "fail": False
Paul Kehrer2f2a2062014-03-10 23:30:28 -04001417 },
1418 ]
Mohammed Attia987cc702014-03-12 16:07:21 +02001419
1420
Paul Kehrerafc25182014-03-18 07:51:56 -04001421def test_load_rsa_nist_pss_verification_vectors():
1422 vector_data = textwrap.dedent("""
Paul Kehrer61666eb2014-03-18 07:53:04 -04001423 # CAVS 11.0
1424 # "SigVer PKCS#1 RSASSA-PSS" information
1425 # Mod sizes selected: 1024 1536 2048 3072 4096
Paul Kehrerafc25182014-03-18 07:51:56 -04001426 # SHA Algorithm selected:SHA1 SHA224 SHA256 SHA384 SHA512
1427 # Salt len: 10
1428 # Generated on Wed Mar 02 00:25:22 2011
1429
1430 [mod = 1024]
1431
1432 n = be499b5e7f06c83fa0293e31465c8eb6b5
1433
1434 p = e7a80c5d211c06acb900939495f26d365f
1435 q = d248aa248000f720258742da67b711940c
1436
1437 SHAAlg = SHA1
1438 e = 00000000000000011
1439 d = c8e26a88239672cf49b3422a07c4d834ba
1440 Msg = 6b9cfac0ba1c7890b13e381ce752195c
1441 S = 562d87b5781c01d166fef3972669a0495c
1442 SaltVal = 11223344555432167890
1443 Result = F (3 - Signature changed )
1444
1445 SHAAlg = SHA384
1446 e = 000003
1447 d = 0d0f17362bdad181db4e1fe03e8de1a320
1448 Msg = 2a67c70ff14f9b34ddb42e6f89d59710
1449 S = 2b91c6ae2b3c46ff18d5b7abe239634cb7
1450 SaltVal = 11223344555432167890
1451 Result = P
1452 """).splitlines()
1453
1454 vectors = load_rsa_nist_vectors(vector_data)
1455 assert vectors == [
1456 {
1457 "modulus": int("be499b5e7f06c83fa0293e31465c8eb6b5", 16),
1458 "p": int("e7a80c5d211c06acb900939495f26d365f", 16),
1459 "q": int("d248aa248000f720258742da67b711940c", 16),
1460 "public_exponent": 17,
1461 "algorithm": "SHA1",
1462 "private_exponent": int("c8e26a88239672cf49b3422a07c4d834ba", 16),
1463 "msg": b"6b9cfac0ba1c7890b13e381ce752195c",
1464 "s": b"562d87b5781c01d166fef3972669a0495c",
1465 "saltval": b"11223344555432167890",
1466 "salt_length": 10,
1467 "fail": True
1468 },
1469 {
1470 "modulus": int("be499b5e7f06c83fa0293e31465c8eb6b5", 16),
1471 "p": int("e7a80c5d211c06acb900939495f26d365f", 16),
1472 "q": int("d248aa248000f720258742da67b711940c", 16),
1473 "public_exponent": 3,
1474 "algorithm": "SHA384",
1475 "private_exponent": int("0d0f17362bdad181db4e1fe03e8de1a320", 16),
1476 "msg": b"2a67c70ff14f9b34ddb42e6f89d59710",
1477 "s": b"2b91c6ae2b3c46ff18d5b7abe239634cb7",
1478 "saltval": b"11223344555432167890",
1479 "salt_length": 10,
1480 "fail": False
1481 },
1482 ]
1483
1484
Mohammed Attia987cc702014-03-12 16:07:21 +02001485def test_load_fips_dsa_key_pair_vectors():
1486 vector_data = textwrap.dedent("""
1487 # CAVS 11.1
1488 # "KeyPair" information
1489 # Mod sizes selected: L=1024, N=160:: L=2048, N=224 :: L=2048, N=256 :: L
1490=3072, N=256
1491 # Generated on Wed May 04 08:50:52 2011
1492
1493
1494 [mod = L=1024, N=160]
1495
1496 P = d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b725ef341eabb47cf8a7a\
14978a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b502e59050b5b21ce263dddb2044b65223\
14986f4d42ab4b5d6aa73189cef1ace778d7845a5c1c1c7147123188f8dc551054ee162b634d60f097\
1499f719076640e20980a0093113a8bd73
1500 Q = 96c5390a8b612c0e422bb2b0ea194a3ec935a281
1501 G = 06b7861abbd35cc89e79c52f68d20875389b127361ca66822138ce4991d2b862259d6b\
15024548a6495b195aa0e0b6137ca37eb23b94074d3c3d300042bdf15762812b6333ef7b07ceba7860\
15037610fcc9ee68491dbc1e34cd12615474e52b18bc934fb00c61d39e7da8902291c4434a4e2224c3\
1504f4fd9f93cd6f4f17fc076341a7e7d9
1505
1506 X = 8185fee9cc7c0e91fd85503274f1cd5a3fd15a49
1507 Y = 6f26d98d41de7d871b6381851c9d91fa03942092ab6097e76422070edb71db44ff5682\
150880fdb1709f8fc3feab39f1f824adaeb2a298088156ac31af1aa04bf54f475bdcfdcf2f8a2dd973\
1509e922d83e76f016558617603129b21c70bf7d0e5dc9e68fe332e295b65876eb9a12fe6fca9f1a1c\
1510e80204646bf99b5771d249a6fea627
1511
1512 X = 85322d6ea73083064376099ca2f65f56e8522d9b
1513 Y = 21f8690f717c9f4dcb8f4b6971de2f15b9231fcf41b7eeb997d781f240bfdddfd2090d\
151422083c26cca39bf37c9caf1ec89518ea64845a50d747b49131ffff6a2fd11ea7bacbb93c7d0513\
15157383a06365af82225dd3713ca5a45006316f53bd12b0e260d5f79795e5a4c9f353f12867a1d320\
15162394673ada8563b71555e53f415254
1517
Mohammed Attia987cc702014-03-12 16:07:21 +02001518 [mod = L=2048, N=224]
1519
1520 P = 904ef8e31e14721910fa0969e77c99b79f190071a86026e37a887a6053960dbfb74390\
1521a6641319fe0af32c4e982934b0f1f4c5bc57534e8e56d77c36f0a99080c0d5bc9022fa34f58922\
152281d7b1009571cb5b35699303f912b276d86b1b0722fc0b1500f0ffb2e4d90867a3bdca181a9734\
1523617a8a9f991aa7c14dec1cf45ceba00600f8425440ed0c3b52c82e3aa831932a98b477da220867\
1524eb2d5e0ca34580b33b1b65e558411ed09c369f4717bf03b551787e13d9e47c267c91c697225265\
1525da157945cd8b32e84fc45b80533265239aa00a2dd3d05f5cb231b7daf724b7ecdce170360a8397\
15262e5be94626273d449f441be300a7345db387bebadad67d8060a7
1527 Q = d7d0a83e84d13032b830ed74a6a88592ec9a4cf42bf37080c6600aad
1528 G = 2050b18d3c9f39fac396c009310d6616f9309b67b59aef9aee813d6b4f12ee29ba8a6b\
1529350b11d4336d44b4641230002d870f1e6b1d8728bdd40262df0d2440999185ae077f7034c61679\
1530f4360fbb5d181569e7cb8acb04371c11ba55f1bbd777b74304b99b66d4405303e7120dc8bc4785\
1531f56e9533e65b63a0c77cce7bba0d5d6069df5edffa927c5a255a09405a008258ed93506a843366\
15322154f6f67e922d7c9788f04d4ec09581063950d9cde8e373ea59a58b2a6df6ba8663345574fabb\
1533a9ca981696d83aeac1f34f14f1a813ba900b3f0341dea23f7d3297f919a97e1ae00ac0728c93fe\
15340a88b66591baf4eb0bc6900f39ba5feb41cbbeea7eb7919aa4d3
1535
1536 X = 3f19424da3b4f0cafca3fc5019fcd225dd7e496ffdf6b77e364f45be
1537 Y = 7681ed0ac257ab7ff17c52de4638c0614749792707a0c0d23883697e34963df15c806f\
1538a6206f7fafb3269018e7703bd1e6f518d13544331a017713dbbe0cee8da6c095271fbf24edb74a\
153944e18b1d3b835622f68d31921c67c83e8479d1972ed0cb106c68188fe22c044254251ebf880b90\
154049dc3b7958ef61e1e67d2f677d2a7d2ab6b7c42b70cc5dedc3e5de7459a2dbc70c69008553d7ff\
1541b6bf81c012c8bd67bdddeaab9a4a4373027912a7c7d9cd9cfc6c81dffe0cc7a6d40c3b2065aee7\
1542be80e3c35497d64c8045bc511edaf7314c84c56bd9f0fecf62262ea5b45b49a0cffb223713bdbd\
15433ad03a25a0bb2211eba41ffcd08ab0e1ad485c29a3fc25ee8359
1544
1545 X = 241396352dd26efe0e2e184da52fe2b61d9d51b91b5009674c447854
1546 Y = 2f07a3aa9884c65288e5fef56c7b7f4445632273290bae6fcaab87c90058b2bef81ad3\
154734958657cf649ffb976d618b34ce69ef6d68c0d8bfe275cf097a301e8dd5595958e0c668c15f67\
1548b5c0b0d01983057ce61593635aab5e0564ed720b0336f055a86755c76be22df3b8487f16e2ba0b\
15495136fd30d7e3b1d30c3bd298d3acc0a1988a11756c94e9a53184d0d3edfbb649caf03eace3083d\
1550e9933921e627f4b2e011d1c79e45d8ea1eb7e4e59a1cbd8382b3238474eb949749c985200fbb25\
155141e2dce080aa881945d4d935076e48a0846dc5513bb4da8563b946af54f546455931e79c065ce7\
1552ca223a98f8fde40091d38eb2c3eb8e3b81d88374f3146b0afc42
1553
Mohammed Attia2da00132014-03-13 15:07:20 +02001554 [mod = L=2048, N=256]
Mohammed Attia987cc702014-03-12 16:07:21 +02001555
1556 P = ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace5e9c41434c9cf0a8e9\
1557498acb0f4663c08b4484eace845f6fb17dac62c98e706af0fc74e4da1c6c2b3fbf5a1d58ff82fc\
15581a66f3e8b12252c40278fff9dd7f102eed2cb5b7323ebf1908c234d935414dded7f8d244e54561\
1559b0dca39b301de8c49da9fb23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cb\
1560b9ac247baba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6ecabf2\
15611bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6db2df0a908c36e95e60\
1562bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa66ef7
1563 Q = 8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b18f507192c19d
1564 G = e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6ccb6b1913413d344d1d\
15658d84a333839d88eee431521f6e357c16e6a93be111a98076739cd401bab3b9d565bf4fb99e9d18\
15665b1e14d61c93700133f908bae03e28764d107dcd2ea7674217622074bb19efff482f5f5c1a86d5\
1567551b2fc68d1c6e9d8011958ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b\
15684f197c322b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd74f13\
1569b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b629ddfa971f2ed273b14\
15706ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e558302
1571
1572 X = 405772da6e90d809e77d5de796562a2dd4dfd10ef00a83a3aba6bd818a0348a1
1573 Y = 6b32e31ab9031dc4dd0b5039a78d07826687ab087ae6de4736f5b0434e1253092e8a0b\
1574231f9c87f3fc8a4cb5634eb194bf1b638b7a7889620ce6711567e36aa36cda4604cfaa601a4591\
15758371d4ccf68d8b10a50a0460eb1dc0fff62ef5e6ee4d473e18ea4a66c196fb7e677a49b48241a0\
1576b4a97128eff30fa437050501a584f8771e7280d26d5af30784039159c11ebfea10b692fd0a5821\
15775eeb18bff117e13f08db792ed4151a218e4bed8dddfb0793225bd1e9773505166f4bd8cedbb286\
1578ea28232972da7bae836ba97329ba6b0a36508e50a52a7675e476d4d4137eae13f22a9d2fefde70\
15798ba8f34bf336c6e76331761e4b0617633fe7ec3f23672fb19d27
1580
1581 X = 0e0b95e31fda3f888059c46c3002ef8f2d6be112d0209aeb9e9545da67aeea80
1582 Y = 778082b77ddba6f56597cc74c3a612abf2ddbd85cc81430c99ab843c1f630b9db01399\
158365f563978164f9bf3a8397256be714625cd41cd7fa0067d94ea66d7e073f7125af692ad01371d4\
1584a17f4550590378f2b074030c20e36911598a1018772f61be3b24de4be5a388ccc09e15a92819c3\
15851dec50de9fde105b49eaa097b9d13d9219eeb33b628facfd1c78a7159c8430d0647c506e7e3de7\
15864763cb351eada72c00bef3c9641881e6254870c1e6599f8ca2f1bbb74f39a905e3a34e4544168e\
15876e50c9e3305fd09cab6ed4aff6fda6e0d5bf375c81ac9054406d9193b003c89272f1bd83d48250\
1588134b65c77c2b6332d38d34d9016f0e8975536ad6c348a1faedb0
1589
Mohammed Attia2da00132014-03-13 15:07:20 +02001590 [mod = L=3072, N=256]
1591
1592 P = f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e7d5828c352f593a9a7\
159387760ce34b789879941f2f01f02319f6ae0b756f1a842ba54c85612ed632ee2d79ef17f06b77c6\
159441b7b080aff52a03fc2462e80abc64d223723c236deeb7d201078ec01ca1fbc1763139e25099a8\
15954ec389159c409792080736bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554d\
1596b2561d706a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5df831d\
159736f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284f5b71282045aba9844\
1598d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb50c6bf1d54f90cce1a491a9c74fea88f\
15997e7230b047d16b5a6027881d6f154818f06e513faf40c8814630e4e254f17a47bfe9cb519b9828\
16009935bf17673ae4c8033504a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaab\
1601b7338b854e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b692229957
1602 Q = d3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210f6169041653b
1603 G = ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978db2104d7394b493c183\
160432c64cec906a71c3778bd93341165dee8e6cd4ca6f13afff531191194ada55ecf01ff94d6cf7c4\
1605768b82dd29cd131aaf202aefd40e564375285c01f3220af4d70b96f1395420d778228f1461f5d0\
1606b8e47357e87b1fe3286223b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce7782\
16070d88cdf50a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9fb23c1\
1608d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37daddade2d823a4d8e3\
160962721082e279d003b575ee59fd050d105dfd71cd63154efe431a0869178d9811f4f231dc5dcf3b\
16100ec0f2b0f9896c32ec6c7ee7d60aa97109e09224907328d4e6acd10117e45774406c4c947da802\
16110649c3168f690e0bd6e91ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb07\
16123cecfe83fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775ae
1613
1614 X = b2764c46113983777d3e7e97589f1303806d14ad9f2f1ef033097de954b17706
1615 Y = 814824e435e1e6f38daa239aad6dad21033afce6a3ebd35c1359348a0f2418871968c2\
1616babfc2baf47742148828f8612183178f126504da73566b6bab33ba1f124c15aa461555c2451d86\
1617c94ee21c3e3fc24c55527e01b1f03adcdd8ec5cb08082803a7b6a829c3e99eeb332a2cf5c035b0\
1618ce0078d3d414d31fa47e9726be2989b8d06da2e6cd363f5a7d1515e3f4925e0b32adeae3025cc5\
1619a996f6fd27494ea408763de48f3bb39f6a06514b019899b312ec570851637b8865cff3a52bf5d5\
16204ad5a19e6e400a2d33251055d0a440b50d53f4791391dc754ad02b9eab74c46b4903f9d76f8243\
162139914db108057af7cde657d41766a99991ac8787694f4185d6f91d7627048f827b405ec67bf2fe\
162256141c4c581d8c317333624e073e5879a82437cb0c7b435c0ce434e15965db1315d64895991e6b\
1623be7dac040c42052408bbc53423fd31098248a58f8a67da3a39895cd0cc927515d044c1e3cb6a32\
162459c3d0da354cce89ea3552c59609db10ee989986527436af21d9485ddf25f90f7dff6d2bae
1625
1626 X = 52e3e040efb30e1befd909a0bdbcfd140d005b1bff094af97186080262f1904d
1627 Y = a5ae6e8f9b7a68ab0516dad4d7b7d002126f811d5a52e3d35c6d387fcb43fd19bf7792\
1628362f9c98f8348aa058bb62376685f3d0c366c520d697fcd8416947151d4bbb6f32b53528a01647\
16299e99d2cd48d1fc679027c15f0042f207984efe05c1796bca8eba678dfdd00b80418e3ea840557e\
163073b09e003882f9a68edba3431d351d1ca07a8150b018fdbdf6c2f1ab475792a3ccaa6594472a45\
1631f8dc777b60bf67de3e0f65c20d11b7d59faedf83fbce52617f500d9e514947c455274c6e900464\
1632767fb56599b81344cf6d12c25cb2b7d038d7b166b6cf30534811c15d0e8ab880a2ac06786ae2dd\
1633de61329a78d526f65245380ce877e979c5b50de66c9c30d66382c8f254653d25a1eb1d3a4897d7\
1634623399b473ce712a2184cf2da1861706c41466806aefe41b497db82aca6c31c8f4aa68c17d1d9e\
1635380b57998917655783ec96e5234a131f7299398d36f1f5f84297a55ff292f1f060958c358fed34\
16366db2de45127ca728a9417b2c54203e33e53b9a061d924395b09afab8daf3e8dd7eedcec3ac
Mohammed Attia987cc702014-03-12 16:07:21 +02001637 """).splitlines()
1638
Mohammed Attia2da00132014-03-13 15:07:20 +02001639 expected = [
1640 {'g': int('06b7861abbd35cc89e79c52f68d20875389b127361ca66822138ce499'
1641 '1d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d3000'
1642 '42bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12'
1643 '615474e52b18bc934fb00c61d39e7da8902291c4434a4e2224c3f'
1644 '4fd9f93cd6f4f17fc076341a7e7d9', 16),
1645 'p': int('d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b725e'
1646 'f341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae791210'
1647 '2b6b502e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189c'
1648 'ef1ace778d7845a5c1c1c7147123188f8dc551054ee162b634d60f097f7'
1649 '19076640e20980a0093113a8bd73', 16),
1650 'q': int('96c5390a8b612c0e422bb2b0ea194a3ec935a281', 16),
1651 'x': int('8185fee9cc7c0e91fd85503274f1cd5a3fd15a49', 16),
1652 'y': int('6f26d98d41de7d871b6381851c9d91fa03942092ab6097e76422'
1653 '070edb71db44ff568280fdb1709f8fc3feab39f1f824adaeb2a29808815'
1654 '6ac31af1aa04bf54f475bdcfdcf2f8a2dd973e922d83e76f01655861760'
1655 '3129b21c70bf7d0e5dc9e68fe332e295b65876eb9a12fe6fca9f1a1ce80'
1656 '204646bf99b5771d249a6fea627', 16)},
1657 {'g': int('06b7861abbd35cc89e79c52f68d20875389b127361ca66822138ce4991d'
1658 '2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004'
1659 '2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd126'
1660 '15474e52b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9'
1661 'f93cd6f4f17fc076341a7e7d9', 16),
1662 'p': int('d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b725ef341e'
1663 'abb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50'
1664 '2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1a'
1665 'ce778d7845a5c1c1c7147123188f8dc551054ee162b634d6'
1666 '0f097f719076640e20980a0093113a8bd73', 16),
1667 'q': int('96c5390a8b612c0e422bb2b0ea194a3ec935a281', 16),
1668 'x': int('85322d6ea73083064376099ca2f65f56e8522d9b', 16),
1669 'y': int('21f8690f717c9f4dcb8f4b6971de2f15b9231fcf41b7eeb997d781f240'
1670 'bfdddfd2090d22083c26cca39bf37c9caf1ec89518ea64845a50d747b49'
1671 '131ffff6a2fd11ea7bacbb93c7d05137383a06365af82225dd3713c'
1672 'a5a45006316f53bd12b0e260d5f79795e5a4c9f353f12867a1d3'
1673 '202394673ada8563b71555e53f415254', 16)},
Mohammed Attia987cc702014-03-12 16:07:21 +02001674
Mohammed Attia2da00132014-03-13 15:07:20 +02001675 {'g': int('e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6ccb6b191'
1676 '3413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807'
1677 '6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae0'
1678 '3e28764d107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2'
1679 'fc68d1c6e9d8011958ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78'
1680 'd0706b10a26f23b4f197c322b825002284a0aca91807bba98ece912'
1681 'b80e10cdf180cf99a35f210c1655fbfdd74f13b1b5046591f8403873d'
1682 '12239834dd6c4eceb42bf7482e1794a1601357b629ddfa971f2ed273b1'
1683 '46ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e558302', 16),
1684 'p': int('ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace'
1685 '5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17d'
1686 'ac62c98e706af0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b122'
1687 '52c40278fff9dd7f102eed2cb5b7323ebf1908c234d935414dded7f8d2'
1688 '44e54561b0dca39b301de8c49da9fb23df33c6182e3f983208c560fb5'
1689 '119fbf78ebe3e6564ee235c6a15cbb9ac247baba5a423bc6582a1a9d8a'
1690 '2b4f0e9e3d9dbac122f750dd754325135257488b1f6ecabf21bff2947'
1691 'fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6db2df0a'
1692 '908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac'
1693 '5aa66ef7', 16),
1694 'q': int('8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1'
1695 '8f507192c19d', 16),
1696 'x': int('405772da6e90d809e77d5de796562a2dd4dfd10ef00a83a3aba6'
1697 'bd818a0348a1', 16),
1698 'y': int('6b32e31ab9031dc4dd0b5039a78d07826687ab087ae6de4736f5'
1699 'b0434e1253092e8a0b231f9c87f3fc8a4cb5634eb194bf1b638'
1700 'b7a7889620ce6711567e36aa36cda4604cfaa601a45918371d'
1701 '4ccf68d8b10a50a0460eb1dc0fff62ef5e6ee4d473e18ea4a6'
1702 '6c196fb7e677a49b48241a0b4a97128eff30fa437050501a584'
1703 'f8771e7280d26d5af30784039159c11ebfea10b692fd0a58215ee'
1704 'b18bff117e13f08db792ed4151a218e4bed8dddfb0793225bd1e97'
1705 '73505166f4bd8cedbb286ea28232972da7bae836ba97329ba6b0a36508'
1706 'e50a52a7675e476d4d4137eae13f22a9d2fefde708ba8f34bf336c6e7'
1707 '6331761e4b0617633fe7ec3f23672fb19d27', 16)},
1708 {'g': int('e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6ccb6b191'
1709 '3413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807'
1710 '6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae0'
1711 '3e28764d107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2'
1712 'fc68d1c6e9d8011958ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78'
1713 'd0706b10a26f23b4f197c322b825002284a0aca91807bba98ece912'
1714 'b80e10cdf180cf99a35f210c1655fbfdd74f13b1b5046591f8403873d'
1715 '12239834dd6c4eceb42bf7482e1794a1601357b629ddfa971f2ed273b1'
1716 '46ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e558302', 16),
1717 'p': int('ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace'
1718 '5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17d'
1719 'ac62c98e706af0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b122'
1720 '52c40278fff9dd7f102eed2cb5b7323ebf1908c234d935414dded7f8d2'
1721 '44e54561b0dca39b301de8c49da9fb23df33c6182e3f983208c560fb5'
1722 '119fbf78ebe3e6564ee235c6a15cbb9ac247baba5a423bc6582a1a9d8a'
1723 '2b4f0e9e3d9dbac122f750dd754325135257488b1f6ecabf21bff2947'
1724 'fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6db2df0a'
1725 '908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac'
1726 '5aa66ef7', 16),
1727 'q': int('8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1'
1728 '8f507192c19d', 16),
1729 'x': int('0e0b95e31fda3f888059c46c3002ef8f2d6be112d0209aeb9e95'
1730 '45da67aeea80', 16),
1731 'y': int('778082b77ddba6f56597cc74c3a612abf2ddbd85cc81430c99ab'
1732 '843c1f630b9db0139965f563978164f9bf3a8397256be714625'
1733 'cd41cd7fa0067d94ea66d7e073f7125af692ad01371d4a17f45'
1734 '50590378f2b074030c20e36911598a1018772f61be3b24de4be'
1735 '5a388ccc09e15a92819c31dec50de9fde105b49eaa097b9d13d'
1736 '9219eeb33b628facfd1c78a7159c8430d0647c506e7e3de74763c'
1737 'b351eada72c00bef3c9641881e6254870c1e6599f8ca2f1bbb74f'
1738 '39a905e3a34e4544168e6e50c9e3305fd09cab6ed4aff6fda6e0d'
1739 '5bf375c81ac9054406d9193b003c89272f1bd83d48250134b65c77'
1740 'c2b6332d38d34d9016f0e8975536ad6c348a1faedb0', 16)},
1741
1742 {'g': int('ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d'
1743 'b2104d7394b493c18332c64cec906a71c3778bd93341165dee8'
1744 'e6cd4ca6f13afff531191194ada55ecf01ff94d6cf7c4768b82'
1745 'dd29cd131aaf202aefd40e564375285c01f3220af4d70b96f1'
1746 '395420d778228f1461f5d0b8e47357e87b1fe3286223b553e3'
1747 'fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf'
1748 '50a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721f'
1749 'f141f93a9fb23c1d1f7654c07c46e58836d1652828f71057b8aff0b077'
1750 '8ef2ca934ea9d0f37daddade2d823a4d8e362721082e279d003b575ee'
1751 '59fd050d105dfd71cd63154efe431a0869178d9811f4f231dc5dcf3b'
1752 '0ec0f2b0f9896c32ec6c7ee7d60aa97109e09224907328d4e6acd1011'
1753 '7e45774406c4c947da8020649c3168f690e0bd6e91ac67074d1d436b'
1754 '58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83fa939'
1755 '8cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d'
1756 '775ae', 16),
1757 'p': int('f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e7d5828'
1758 'c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842'
1759 'ba54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e8'
1760 '0abc64d223723c236deeb7d201078ec01ca1fbc1763139e25099a84ec'
1761 '389159c409792080736bd7caa816b92edf23f2c351f90074aa5ea2651'
1762 'b372f8b58a0a65554db2561d706a63685000ac576b7e4562e262a1428'
1763 '5a9c6370b290e4eb7757527d80b6c0fd5df831d36f3d1d35f12ab0605'
1764 '48de1605fd15f7c7aafed688b146a02c945156e284f5b71282045aba9'
1765 '844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb50c6bf1d'
1766 '54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f'
1767 '06e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673a'
1768 'e4c8033504a20a898d0032ee402b72d5986322f3bdfb27400561f7476'
1769 'cd715eaabb7338b854e51fc2fa026a5a579b6dcea1b1c0559c13d3c11'
1770 '36f303f4b4d25ad5b692229957', 16),
1771 'q': int('d3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210'
1772 'f6169041653b', 16),
1773 'x': int('b2764c46113983777d3e7e97589f1303806d14ad9f2f1ef03309'
1774 '7de954b17706', 16),
1775 'y': int('814824e435e1e6f38daa239aad6dad21033afce6a3ebd35c1359348a0f2'
1776 '418871968c2babfc2baf47742148828f8612183178f126504da73566b6'
1777 'bab33ba1f124c15aa461555c2451d86c94ee21c3e3fc24c55527e'
1778 '01b1f03adcdd8ec5cb08082803a7b6a829c3e99eeb332a2cf5c035b0c'
1779 'e0078d3d414d31fa47e9726be2989b8d06da2e6cd363f5a7d1515e3f4'
1780 '925e0b32adeae3025cc5a996f6fd27494ea408763de48f3bb39f6a06'
1781 '514b019899b312ec570851637b8865cff3a52bf5d54ad5a19e6e400'
1782 'a2d33251055d0a440b50d53f4791391dc754ad02b9eab74c46b4903'
1783 'f9d76f824339914db108057af7cde657d41766a99991ac8787694f'
1784 '4185d6f91d7627048f827b405ec67bf2fe56141c4c581d8c317333'
1785 '624e073e5879a82437cb0c7b435c0ce434e15965db1315d648959'
1786 '91e6bbe7dac040c42052408bbc53423fd31098248a58f8a67da3a'
1787 '39895cd0cc927515d044c1e3cb6a3259c3d0da354cce89ea3552c'
1788 '59609db10ee989986527436af21d9485ddf25f90f7dff6d2bae', 16)},
1789 {'g': int('ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d'
1790 'b2104d7394b493c18332c64cec906a71c3778bd93341165dee8'
1791 'e6cd4ca6f13afff531191194ada55ecf01ff94d6cf7c4768b82'
1792 'dd29cd131aaf202aefd40e564375285c01f3220af4d70b96f1'
1793 '395420d778228f1461f5d0b8e47357e87b1fe3286223b553e3'
1794 'fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf'
1795 '50a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721f'
1796 'f141f93a9fb23c1d1f7654c07c46e58836d1652828f71057b8aff0b077'
1797 '8ef2ca934ea9d0f37daddade2d823a4d8e362721082e279d003b575ee'
1798 '59fd050d105dfd71cd63154efe431a0869178d9811f4f231dc5dcf3b'
1799 '0ec0f2b0f9896c32ec6c7ee7d60aa97109e09224907328d4e6acd1011'
1800 '7e45774406c4c947da8020649c3168f690e0bd6e91ac67074d1d436b'
1801 '58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83fa939'
1802 '8cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d'
1803 '775ae', 16),
1804 'p': int('f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e7d5828'
1805 'c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842'
1806 'ba54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e8'
1807 '0abc64d223723c236deeb7d201078ec01ca1fbc1763139e25099a84ec'
1808 '389159c409792080736bd7caa816b92edf23f2c351f90074aa5ea2651'
1809 'b372f8b58a0a65554db2561d706a63685000ac576b7e4562e262a1428'
1810 '5a9c6370b290e4eb7757527d80b6c0fd5df831d36f3d1d35f12ab0605'
1811 '48de1605fd15f7c7aafed688b146a02c945156e284f5b71282045aba9'
1812 '844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb50c6bf1d'
1813 '54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f'
1814 '06e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673a'
1815 'e4c8033504a20a898d0032ee402b72d5986322f3bdfb27400561f7476'
1816 'cd715eaabb7338b854e51fc2fa026a5a579b6dcea1b1c0559c13d3c11'
1817 '36f303f4b4d25ad5b692229957', 16),
1818 'q': int('d3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210'
1819 'f6169041653b', 16),
1820 'x': int('52e3e040efb30e1befd909a0bdbcfd140d005b1bff094af97186'
1821 '080262f1904d', 16),
1822 'y': int('a5ae6e8f9b7a68ab0516dad4d7b7d002126f811d5a52e3d35c6d'
1823 '387fcb43fd19bf7792362f9c98f8348aa058bb62376685f3d0c3'
1824 '66c520d697fcd8416947151d4bbb6f32b53528a016479e99d2cd'
1825 '48d1fc679027c15f0042f207984efe05c1796bca8eba678dfdd0'
1826 '0b80418e3ea840557e73b09e003882f9a68edba3431d351d1ca0'
1827 '7a8150b018fdbdf6c2f1ab475792a3ccaa6594472a45f8dc777b'
1828 '60bf67de3e0f65c20d11b7d59faedf83fbce52617f500d9e5149'
1829 '47c455274c6e900464767fb56599b81344cf6d12c25cb2b7d038'
1830 'd7b166b6cf30534811c15d0e8ab880a2ac06786ae2ddde61329a'
1831 '78d526f65245380ce877e979c5b50de66c9c30d66382c8f25465'
1832 '3d25a1eb1d3a4897d7623399b473ce712a2184cf2da1861706c4'
1833 '1466806aefe41b497db82aca6c31c8f4aa68c17d1d9e380b5799'
1834 '8917655783ec96e5234a131f7299398d36f1f5f84297a55ff292'
1835 'f1f060958c358fed346db2de45127ca728a9417b2c54203e33e5'
1836 '3b9a061d924395b09afab8daf3e8dd7eedcec3ac', 16)}
1837 ]
Mohammed Attia987cc702014-03-12 16:07:21 +02001838
1839 assert expected == load_fips_dsa_key_pair_vectors(vector_data)
Alex Stapletona39a3192014-03-14 20:03:12 +00001840
1841
Mohammed Attia0fb5d852014-04-21 10:31:15 +02001842def test_load_fips_dsa_sig_ver_vectors():
1843 vector_data = textwrap.dedent("""
1844 # CAVS 11.0
1845 # "SigVer" information
1846 # Mod sizes selected: SHA-1 L=1024, N=160,SHA-384 L=2048, N=256
1847 # Generated on Fri Apr 01 08:37:15 2011
Alex Stapleton112963e2014-03-26 17:39:29 +00001848
Mohammed Attia0fb5d852014-04-21 10:31:15 +02001849 [mod = L=1024, N=160, SHA-1]
Alex Stapleton112963e2014-03-26 17:39:29 +00001850
Mohammed Attia0fb5d852014-04-21 10:31:15 +02001851 P = dc5bf3a88b2d99e4c95cdd7a0501cc38630d425cf5c390af3429cff1f35147b795cae\
1852a923f0d3577158f8a0c89dabd1962c2c453306b5d70cacfb01430aceb54e5a5fa6f93\
185340d3bd2da612fceeb76b0ec1ebfae635a56ab141b108e00dc76eefe2edd0c514c21c4\
185457457c39065dba9d0ecb7569c247172d8438ad2827b60435b
1855 Q = e956602b83d195dbe945b3ac702fc61f81571f1d
1856 G = d7eb9ca20a3c7a079606bafc4c9261ccaba303a5dc9fe9953f197dfe548c234895baa\
185777f441ee6a2d97b909cbbd26ff7b869d24cae51b5c6edb127a4b5d75cd8b46608bfa1\
185848249dffdb59807c5d7dde3fe3080ca3a2d28312142becb1fa8e24003e21c72871081\
185974b95d5bc711e1c8d9b1076784f5dc37a964a5e51390da713
Alex Stapleton112963e2014-03-26 17:39:29 +00001860
Mohammed Attia0fb5d852014-04-21 10:31:15 +02001861 Msg = 0fe1bfee500bdb76026099b1d37553f6bdfe48c82094ef98cb309dd777330bedfaa\
18622f94c823ef74ef4074b50d8706041ac0e371c7c22dcf70263b8d60e17a86c7c379c\
1863fda8f22469e0df9d49d59439fc99891873628fff25dda5fac5ac794e948babdde96\
18648143ba05f1128f34fdad5875edc4cd71c6c24ba2060ffbd439ce2b3
1865 X = 1d93010c29ecfc432188942f46f19f44f0e1bb5d
1866 Y = 6240ea0647117c38fe705106d56db578f3e10130928452d4f3587881b8a2bc6873a8b\
1867efc3237f20914e2a91c7f07a928ee22adeed23d74ab7f82ea11f70497e578f7a9b4cb\
1868d6f10226222b0b4da2ea1e49813d6bb9882fbf675c0846bb80cc891857b89b0ef1beb\
18696cce3378a9aab5d66ad4cb9277cf447dfe1e64434749432fb
1870 R = b5af307867fb8b54390013cc67020ddf1f2c0b81
1871 S = 620d3b22ab5031440c3e35eab6f481298f9e9f08
1872 Result = P
Alex Stapleton5e4c8c32014-03-27 16:38:00 +00001873
Mohammed Attia0fb5d852014-04-21 10:31:15 +02001874 Msg = 97d50898025d2f9ba633866e968ca75e969d394edba6517204cb3dd537c2ba38778\
1875a2dc9dbc685a915e5676fcd43bc3726bc59ce3d7a9fae35565082a069c139fa37c9\
18760d922b126933db3fa6c5ef6b1edf00d174a51887bb76909c6a94fe994ecc7b7fc8f\
187726113b17f30f9d01693df99a125b4f17e184331c6b6e8ca00f54f3a
1878 X = 350e13534692a7e0c4b7d58836046c436fbb2322
1879 Y = 69974de550fe6bd3099150faea1623ad3fb6d9bf23a07215093f319725ad0877accff\
1880d291b6da18eb0cbe51676ceb0977504eb97c27c0b191883f72fb2710a9fbd8bcf13be\
18810bf854410b32f42b33ec89d3cc1cf892bcd536c4195ca9ada302ad600c3408739935d\
188277dc247529ca47f844cc86f5016a2fe962c6e20ca7c4d4e8f
1883 R = b5d05faa7005764e8dae0327c5bf1972ff7681b9
1884 S = 18ea15bd9f00475b25204cbc23f8c23e01588015
1885 Result = F (3 - R changed )
Alex Stapleton5e4c8c32014-03-27 16:38:00 +00001886
Paul Kehrer7ef2f8f2014-04-22 08:37:58 -05001887 [mod = L=2048, N=224, SHA-1]
1888
1889 # unsupported so we ignore this
1890
1891 Msg = f9d01693df99a125b4f17e184331c6b6e8ca00f54f3a
1892 X = e0c4b7d58836046c436fbb2322
1893 Y = fb6d9bf23a07215093f319725ad0877accff
1894 R = 5764e8dae0327c5bf1972ff7681b9
1895 S = 475b25204cbc23f8c23e01588015
1896 Result = F (3 - R changed )
1897
Mohammed Attia0fb5d852014-04-21 10:31:15 +02001898 [mod = L=2048, N=256, SHA-384]
Alex Stapleton5e4c8c32014-03-27 16:38:00 +00001899
Mohammed Attia0fb5d852014-04-21 10:31:15 +02001900 P = e7c1c86125db9ef417da1ced7ea0861bdad629216a3f3c745df42a46b989e59f4d984\
190125ee3c932fa3c2b6f637bdb6545bec526faa037e11f5578a4363b9fca5eba60d6a9cb\
1902aa2befd04141d989c7356285132c2eaf74f2d868521cdc0a17ae9a2546ef863027d3f\
19038cc7949631fd0e2971417a912c8b8c5c989730db6ea6e8baee0e667850429038093c8\
190451ccb6fb173bb081e0efe0bd7450e0946888f89f75e443ab93ef2da293a01622cf43c\
19056dd79625d41ba8f9ef7e3086ab39134283d8e96c89249488120fd061e4a87d34af410\
190669c0b4fd3934c31b589cbe85b68b912718d5dab859fda7082511fad1d152044905005\
1907546e19b14aa96585a55269bf2b831
1908 Q = 8e056ec9d4b7acb580087a6ed9ba3478711bb025d5b8d9c731ef9b38bd43db2f
1909 G = dc2bfb9776786ad310c8b0cdcbba3062402613c67e6959a8d8d1b05aab636528b7b1f\
1910e9cd33765f853d6dbe13d09f2681f8c7b1ed7886aaed70c7bd76dbe858ffb8bd86235\
1911ddf759244678f428c6519af593dc94eeadbd9852ba2b3d61664e8d58c29d2039af3c3\
1912d6d16f90988f6a8c824569f3d48050e30896a9e17cd0232ef01ab8790008f6973b84c\
1913763a72f4ae8b485abfb7e8efeb86808fa2b281d3e5d65d28f5992a34c077c5aa8026c\
1914b2fbc34a45f7e9bd216b10e6f12ecb172e9a6eb8f2e91316905b6add1fd22e83bc2f0\
191589f1d5e6a6e6707c18ff55ddcb7954e8bceaf0efc4e8314910c03b0e51175f344faaf\
1916ee476a373ac95743cec712b72cf2e
Alex Stapleton5e4c8c32014-03-27 16:38:00 +00001917
Mohammed Attia0fb5d852014-04-21 10:31:15 +02001918 Msg = 6cd6ccfd66bcd832189c5f0c77994210e3bf2c43416f0fe77c4e92f31c5369538dc\
19192c003f146c5ac79df43194ccf3c44d470d9f1083bd15b99b5bcf88c32d8a9021f09\
1920ea2288d7b3bf345a12aef3949c1e121b9fb371a67c2d1377364206ac839dd784835\
192161426bda0303f285aa12e9c45d3cdfc6beae3549703b187deeb3296
1922 X = 56c897b5938ad5b3d437d7e4826da586a6b3be15e893fa1aaa946f20a028b6b3
1923 Y = 38ad44489e1a5778b9689f4dcf40e2acf23840fb954e987d6e8cb629106328ac64e1f\
19243c3eba48b21176ad4afe3b733bead382ee1597e1b83e4b43424f2daaba04e5bd79e14\
192536693ac2bddb79a298f026e57e200a252efd1e848a4a2e90be6e78f5242b468b9c0c6\
1926d2615047a5a40b9ae7e57a519114db55bf3bed65e580f894b094630ca9c217f6accd0\
192791e72d2f22da620044ff372d7273f9445017fad492959e59600b7494dbe766a03e401\
192825d4e6747c76f68a5b0cdc0e7d7cee12d08c6fb7d0fb049e420a33405075ed4463296\
1929345ca695fb7feab7c1b5333ae519fcd4bb6a043f4555378969114743d4face96cad31\
1930c0e0089da4e3f61b6d7dabc088ab7
1931 R = 3b85b17be240ed658beb3652c9d93e8e9eea160d35ee2459614305802963374e
1932 S = 726800a5174a53b56dce86064109c0273cd11fcfa3c92c5cd6aa910260c0e3c7
1933 Result = F (1 - Message changed)
Alex Stapleton5e4c8c32014-03-27 16:38:00 +00001934
Mohammed Attia0fb5d852014-04-21 10:31:15 +02001935 Msg = 3ad6b0884f358dea09c31a9abc40c45a6000611fc2b907b30eac00413fd2819de70\
193615488a411609d46c499b8f7afa1b78b352ac7f8535bd805b8ff2a5eae557098c668\
1937f7ccd73af886d6823a6d456c29931ee864ed46d767382785728c2a83fcff5271007\
1938d2a67d06fa205fd7b9d1a42ea5d6dc76e5e18a9eb148cd1e8b262ae
1939 X = 2faf566a9f057960f1b50c69508f483d9966d6e35743591f3a677a9dc40e1555
1940 Y = 926425d617babe87c442b03903e32ba5bbf0cd9d602b59c4df791a4d64a6d4333ca0c\
19410d370552539197d327dcd1bbf8c454f24b03fc7805f862db34c7b066ddfddbb11dbd0\
194210b27123062d028fe041cb56a2e77488348ae0ab6705d87aac4d4e9e6600e9e706326\
1943d9979982cffa839beb9eacc3963bcca455a507e80c1c37ad4e765b2c9c0477a075e9b\
1944c584feacdf3a35a9391d4711f14e197c54022282bfed9a191213d64127f17a9c5affe\
1945c26e0c71f15d3a5b16098fec118c45bf8bb2f3b1560df0949254c1c0aeb0a16d5a95a\
194640fab8521fbe8ea77c51169b587cc3360e5733e6a23b9fded8c40724ea1f9e93614b3\
1947a6c9b4f8dbbe915b794497227ba62
1948 R = 343ea0a9e66277380f604d5880fca686bffab69ca97bfba015a102a7e23dce0e
1949 S = 6258488c770e0f5ad7b9da8bade5023fc0d17c6ec517bd08d53e6dc01ac5c2b3
1950 Result = P
1951 """).splitlines()
Alex Stapleton112963e2014-03-26 17:39:29 +00001952
Mohammed Attia0fb5d852014-04-21 10:31:15 +02001953 expected = [
1954 {
1955 'p': int('dc5bf3a88b2d99e4c95cdd7a0501cc38630d425cf5c390af3429cff1'
1956 'f35147b795caea923f0d3577158f8a0c89dabd1962c2c453306b5d70'
1957 'cacfb01430aceb54e5a5fa6f9340d3bd2da612fceeb76b0ec1ebfae6'
1958 '35a56ab141b108e00dc76eefe2edd0c514c21c457457c39065dba9d0'
1959 'ecb7569c247172d8438ad2827b60435b', 16),
1960 'q': int('e956602b83d195dbe945b3ac702fc61f81571f1d', 16),
1961 'g': int('d7eb9ca20a3c7a079606bafc4c9261ccaba303a5dc9fe9953f197dfe'
1962 '548c234895baa77f441ee6a2d97b909cbbd26ff7b869d24cae51b5c6'
1963 'edb127a4b5d75cd8b46608bfa148249dffdb59807c5d7dde3fe3080c'
1964 'a3a2d28312142becb1fa8e24003e21c7287108174b95d5bc711e1c8d'
1965 '9b1076784f5dc37a964a5e51390da713', 16),
1966 'digest_algorithm': 'SHA-1',
1967 'msg': binascii.unhexlify(
1968 b'0fe1bfee500bdb76026099b1d37553f6bdfe48c82094ef98cb309dd77733'
1969 b'0bedfaa2f94c823ef74ef4074b50d8706041ac0e371c7c22dcf70263b8d6'
1970 b'0e17a86c7c379cfda8f22469e0df9d49d59439fc99891873628fff25dda5'
1971 b'fac5ac794e948babdde968143ba05f1128f34fdad5875edc4cd71c6c24ba'
1972 b'2060ffbd439ce2b3'),
1973 'x': int('1d93010c29ecfc432188942f46f19f44f0e1bb5d', 16),
1974 'y': int('6240ea0647117c38fe705106d56db578f3e10130928452d4f3587881'
1975 'b8a2bc6873a8befc3237f20914e2a91c7f07a928ee22adeed23d74ab'
1976 '7f82ea11f70497e578f7a9b4cbd6f10226222b0b4da2ea1e49813d6b'
1977 'b9882fbf675c0846bb80cc891857b89b0ef1beb6cce3378a9aab5d66'
1978 'ad4cb9277cf447dfe1e64434749432fb', 16),
1979 'r': int('b5af307867fb8b54390013cc67020ddf1f2c0b81', 16),
1980 's': int('620d3b22ab5031440c3e35eab6f481298f9e9f08', 16),
1981 'result': 'P'},
1982 {
1983 'p': int('dc5bf3a88b2d99e4c95cdd7a0501cc38630d425cf5c390af3429cff1'
1984 'f35147b795caea923f0d3577158f8a0c89dabd1962c2c453306b5d70'
1985 'cacfb01430aceb54e5a5fa6f9340d3bd2da612fceeb76b0ec1ebfae6'
1986 '35a56ab141b108e00dc76eefe2edd0c514c21c457457c39065dba9d0'
1987 'ecb7569c247172d8438ad2827b60435b', 16),
1988 'q': int('e956602b83d195dbe945b3ac702fc61f81571f1d', 16),
1989 'g': int('d7eb9ca20a3c7a079606bafc4c9261ccaba303a5dc9fe9953f197dfe'
1990 '548c234895baa77f441ee6a2d97b909cbbd26ff7b869d24cae51b5c6'
1991 'edb127a4b5d75cd8b46608bfa148249dffdb59807c5d7dde3fe3080c'
1992 'a3a2d28312142becb1fa8e24003e21c7287108174b95d5bc711e1c8d'
1993 '9b1076784f5dc37a964a5e51390da713', 16),
1994 'digest_algorithm': 'SHA-1',
1995 'msg': binascii.unhexlify(
1996 b'97d50898025d2f9ba633866e968ca75e969d394edba6517204cb3dd537c2'
1997 b'ba38778a2dc9dbc685a915e5676fcd43bc3726bc59ce3d7a9fae35565082'
1998 b'a069c139fa37c90d922b126933db3fa6c5ef6b1edf00d174a51887bb7690'
1999 b'9c6a94fe994ecc7b7fc8f26113b17f30f9d01693df99a125b4f17e184331'
2000 b'c6b6e8ca00f54f3a'),
2001 'x': int('350e13534692a7e0c4b7d58836046c436fbb2322', 16),
2002 'y': int('69974de550fe6bd3099150faea1623ad3fb6d9bf23a07215093f3197'
2003 '25ad0877accffd291b6da18eb0cbe51676ceb0977504eb97c27c0b19'
2004 '1883f72fb2710a9fbd8bcf13be0bf854410b32f42b33ec89d3cc1cf8'
2005 '92bcd536c4195ca9ada302ad600c3408739935d77dc247529ca47f84'
2006 '4cc86f5016a2fe962c6e20ca7c4d4e8f', 16),
2007 'r': int('b5d05faa7005764e8dae0327c5bf1972ff7681b9', 16),
2008 's': int('18ea15bd9f00475b25204cbc23f8c23e01588015', 16),
2009 'result': 'F'},
2010 {
2011 'p': int('e7c1c86125db9ef417da1ced7ea0861bdad629216a3f3c745df42a4'
2012 '6b989e59f4d98425ee3c932fa3c2b6f637bdb6545bec526faa037e1'
2013 '1f5578a4363b9fca5eba60d6a9cbaa2befd04141d989c7356285132'
2014 'c2eaf74f2d868521cdc0a17ae9a2546ef863027d3f8cc7949631fd0'
2015 'e2971417a912c8b8c5c989730db6ea6e8baee0e667850429038093c'
2016 '851ccb6fb173bb081e0efe0bd7450e0946888f89f75e443ab93ef2d'
2017 'a293a01622cf43c6dd79625d41ba8f9ef7e3086ab39134283d8e96c'
2018 '89249488120fd061e4a87d34af41069c0b4fd3934c31b589cbe85b6'
2019 '8b912718d5dab859fda7082511fad1d152044905005546e19b14aa9'
2020 '6585a55269bf2b831', 16),
2021 'q': int('8e056ec9d4b7acb580087a6ed9ba3478711bb025d5b8d9c731ef9b3'
2022 '8bd43db2f', 16),
2023 'g': int('dc2bfb9776786ad310c8b0cdcbba3062402613c67e6959a8d8d1b05'
2024 'aab636528b7b1fe9cd33765f853d6dbe13d09f2681f8c7b1ed7886a'
2025 'aed70c7bd76dbe858ffb8bd86235ddf759244678f428c6519af593d'
2026 'c94eeadbd9852ba2b3d61664e8d58c29d2039af3c3d6d16f90988f6'
2027 'a8c824569f3d48050e30896a9e17cd0232ef01ab8790008f6973b84'
2028 'c763a72f4ae8b485abfb7e8efeb86808fa2b281d3e5d65d28f5992a'
2029 '34c077c5aa8026cb2fbc34a45f7e9bd216b10e6f12ecb172e9a6eb8'
2030 'f2e91316905b6add1fd22e83bc2f089f1d5e6a6e6707c18ff55ddcb'
2031 '7954e8bceaf0efc4e8314910c03b0e51175f344faafee476a373ac9'
2032 '5743cec712b72cf2e', 16),
2033 'digest_algorithm': 'SHA-384',
2034 'msg': binascii.unhexlify(
2035 b'6cd6ccfd66bcd832189c5f0c77994210e3bf2c43416f0fe77c4e92f31c5'
2036 b'369538dc2c003f146c5ac79df43194ccf3c44d470d9f1083bd15b99b5bc'
2037 b'f88c32d8a9021f09ea2288d7b3bf345a12aef3949c1e121b9fb371a67c2'
2038 b'd1377364206ac839dd78483561426bda0303f285aa12e9c45d3cdfc6bea'
2039 b'e3549703b187deeb3296'),
2040 'x': int('56c897b5938ad5b3d437d7e4826da586a6b3be15e893fa1aaa946f2'
2041 '0a028b6b3', 16),
2042 'y': int('38ad44489e1a5778b9689f4dcf40e2acf23840fb954e987d6e8cb62'
2043 '9106328ac64e1f3c3eba48b21176ad4afe3b733bead382ee1597e1b'
2044 '83e4b43424f2daaba04e5bd79e1436693ac2bddb79a298f026e57e2'
2045 '00a252efd1e848a4a2e90be6e78f5242b468b9c0c6d2615047a5a40'
2046 'b9ae7e57a519114db55bf3bed65e580f894b094630ca9c217f6accd'
2047 '091e72d2f22da620044ff372d7273f9445017fad492959e59600b74'
2048 '94dbe766a03e40125d4e6747c76f68a5b0cdc0e7d7cee12d08c6fb7'
2049 'd0fb049e420a33405075ed4463296345ca695fb7feab7c1b5333ae5'
2050 '19fcd4bb6a043f4555378969114743d4face96cad31c0e0089da4e3'
2051 'f61b6d7dabc088ab7', 16),
2052 'r': int('3b85b17be240ed658beb3652c9d93e8e9eea160d35ee24596143058'
2053 '02963374e', 16),
2054 's': int('726800a5174a53b56dce86064109c0273cd11fcfa3c92c5cd6aa910'
2055 '260c0e3c7', 16),
2056 'result': 'F'},
2057 {
2058 'p': int('e7c1c86125db9ef417da1ced7ea0861bdad629216a3f3c745df42a4'
2059 '6b989e59f4d98425ee3c932fa3c2b6f637bdb6545bec526faa037e1'
2060 '1f5578a4363b9fca5eba60d6a9cbaa2befd04141d989c7356285132'
2061 'c2eaf74f2d868521cdc0a17ae9a2546ef863027d3f8cc7949631fd0'
2062 'e2971417a912c8b8c5c989730db6ea6e8baee0e667850429038093c'
2063 '851ccb6fb173bb081e0efe0bd7450e0946888f89f75e443ab93ef2d'
2064 'a293a01622cf43c6dd79625d41ba8f9ef7e3086ab39134283d8e96c'
2065 '89249488120fd061e4a87d34af41069c0b4fd3934c31b589cbe85b6'
2066 '8b912718d5dab859fda7082511fad1d152044905005546e19b14aa9'
2067 '6585a55269bf2b831', 16),
2068 'q': int('8e056ec9d4b7acb580087a6ed9ba3478711bb025d5b8d9c731ef9b3'
2069 '8bd43db2f', 16),
2070 'g': int('dc2bfb9776786ad310c8b0cdcbba3062402613c67e6959a8d8d1b05'
2071 'aab636528b7b1fe9cd33765f853d6dbe13d09f2681f8c7b1ed7886a'
2072 'aed70c7bd76dbe858ffb8bd86235ddf759244678f428c6519af593d'
2073 'c94eeadbd9852ba2b3d61664e8d58c29d2039af3c3d6d16f90988f6'
2074 'a8c824569f3d48050e30896a9e17cd0232ef01ab8790008f6973b84'
2075 'c763a72f4ae8b485abfb7e8efeb86808fa2b281d3e5d65d28f5992a'
2076 '34c077c5aa8026cb2fbc34a45f7e9bd216b10e6f12ecb172e9a6eb8'
2077 'f2e91316905b6add1fd22e83bc2f089f1d5e6a6e6707c18ff55ddcb'
2078 '7954e8bceaf0efc4e8314910c03b0e51175f344faafee476a373ac9'
2079 '5743cec712b72cf2e', 16),
2080 'digest_algorithm': 'SHA-384',
2081 'msg': binascii.unhexlify(
2082 b'3ad6b0884f358dea09c31a9abc40c45a6000611fc2b907b30eac00413fd'
2083 b'2819de7015488a411609d46c499b8f7afa1b78b352ac7f8535bd805b8ff'
2084 b'2a5eae557098c668f7ccd73af886d6823a6d456c29931ee864ed46d7673'
2085 b'82785728c2a83fcff5271007d2a67d06fa205fd7b9d1a42ea5d6dc76e5e'
2086 b'18a9eb148cd1e8b262ae'),
2087 'x': int('2faf566a9f057960f1b50c69508f483d9966d6e35743591f3a677a9'
2088 'dc40e1555', 16),
2089 'y': int('926425d617babe87c442b03903e32ba5bbf0cd9d602b59c4df791a4d'
2090 '64a6d4333ca0c0d370552539197d327dcd1bbf8c454f24b03fc7805f'
2091 '862db34c7b066ddfddbb11dbd010b27123062d028fe041cb56a2e774'
2092 '88348ae0ab6705d87aac4d4e9e6600e9e706326d9979982cffa839be'
2093 'b9eacc3963bcca455a507e80c1c37ad4e765b2c9c0477a075e9bc584'
2094 'feacdf3a35a9391d4711f14e197c54022282bfed9a191213d64127f1'
2095 '7a9c5affec26e0c71f15d3a5b16098fec118c45bf8bb2f3b1560df09'
2096 '49254c1c0aeb0a16d5a95a40fab8521fbe8ea77c51169b587cc3360e'
2097 '5733e6a23b9fded8c40724ea1f9e93614b3a6c9b4f8dbbe915b79449'
2098 '7227ba62', 16),
2099 'r': int('343ea0a9e66277380f604d5880fca686bffab69ca97bfba015a102a'
2100 '7e23dce0e', 16),
2101 's': int('6258488c770e0f5ad7b9da8bade5023fc0d17c6ec517bd08d53e6dc'
2102 '01ac5c2b3', 16),
2103 'result': 'P'}
2104 ]
2105
Mohammed Attia3c9e1582014-04-22 14:24:44 +02002106 assert expected == load_fips_dsa_sig_vectors(vector_data)
2107
2108
2109def test_load_fips_dsa_sig_gen_vectors():
2110 vector_data = textwrap.dedent("""
2111 # CAVS 11.2
2112 # "SigGen" information for "dsa2_values"
2113 # Mod sizes selected: SHA-1 L=1024, N=160, SHA-256 L=2048, N=256
2114
2115 [mod = L=1024, N=160, SHA-1]
2116
2117 P = a8f9cd201e5e35d892f85f80e4db2599a5676a3b1d4f190330ed3256b26d0e80a0e49\
2118a8fffaaad2a24f472d2573241d4d6d6c7480c80b4c67bb4479c15ada7ea8424d2502fa01472e7\
211960241713dab025ae1b02e1703a1435f62ddf4ee4c1b664066eb22f2e3bf28bb70a2a76e4fd5eb\
2120e2d1229681b5b06439ac9c7e9d8bde283
2121 Q = f85f0f83ac4df7ea0cdf8f469bfeeaea14156495
2122 G = 2b3152ff6c62f14622b8f48e59f8af46883b38e79b8c74deeae9df131f8b856e3ad6c\
21238455dab87cc0da8ac973417ce4f7878557d6cdf40b35b4a0ca3eb310c6a95d68ce284ad4e25ea\
212428591611ee08b8444bd64b25f3f7c572410ddfb39cc728b9c936f85f419129869929cdb909a6a\
21253a99bbe089216368171bd0ba81de4fe33
2126
2127 Msg = 3b46736d559bd4e0c2c1b2553a33ad3c6cf23cac998d3d0c0e8fa4b19bca06f2f38\
21286db2dcff9dca4f40ad8f561ffc308b46c5f31a7735b5fa7e0f9e6cb512e63d7eea05538d66a75\
2129cd0d4234b5ccf6c1715ccaaf9cdc0a2228135f716ee9bdee7fc13ec27a03a6d11c5c5b3685f51\
2130900b1337153bc6c4e8f52920c33fa37f4e7
2131 Y = 313fd9ebca91574e1c2eebe1517c57e0c21b0209872140c5328761bbb2450b33f1b18\
2132b409ce9ab7c4cd8fda3391e8e34868357c199e16a6b2eba06d6749def791d79e95d3a4d09b24c\
2133392ad89dbf100995ae19c01062056bb14bce005e8731efde175f95b975089bdcdaea562b32786\
2134d96f5a31aedf75364008ad4fffebb970b
2135 R = 50ed0e810e3f1c7cb6ac62332058448bd8b284c0
2136 S = c6aded17216b46b7e4b6f2a97c1ad7cc3da83fde
2137
2138 Msg = d2bcb53b044b3e2e4b61ba2f91c0995fb83a6a97525e66441a3b489d9594238bc74\
21390bdeea0f718a769c977e2de003877b5d7dc25b182ae533db33e78f2c3ff0645f2137abc137d4e\
21407d93ccf24f60b18a820bc07c7b4b5fe08b4f9e7d21b256c18f3b9d49acc4f93e2ce6f3754c780\
21417757d2e1176042612cb32fc3f4f70700e25
2142 Y = 29bdd759aaa62d4bf16b4861c81cf42eac2e1637b9ecba512bdbc13ac12a80ae8de25\
214326b899ae5e4a231aef884197c944c732693a634d7659abc6975a773f8d3cd5a361fe2492386a3\
2144c09aaef12e4a7e73ad7dfc3637f7b093f2c40d6223a195c136adf2ea3fbf8704a675aa7817aa7\
2145ec7f9adfb2854d4e05c3ce7f76560313b
2146 R = a26c00b5750a2d27fe7435b93476b35438b4d8ab
2147 S = 61c9bfcb2938755afa7dad1d1e07c6288617bf70
2148
2149 [mod = L=2048, N=256, SHA-256]
2150
2151 P = a8adb6c0b4cf9588012e5deff1a871d383e0e2a85b5e8e03d814fe13a059705e66323\
21520a377bf7323a8fa117100200bfd5adf857393b0bbd67906c081e585410e38480ead51684dac3a\
215338f7b64c9eb109f19739a4517cd7d5d6291e8af20a3fbf17336c7bf80ee718ee087e322ee4104\
21547dabefbcc34d10b66b644ddb3160a28c0639563d71993a26543eadb7718f317bf5d9577a61565\
215561b082a10029cd44012b18de6844509fe058ba87980792285f2750969fe89c2cd6498db354563\
21568d5379d125dccf64e06c1af33a6190841d223da1513333a7c9d78462abaab31b9f96d5f34445c\
2157eb6309f2f6d2c8dde06441e87980d303ef9a1ff007e8be2f0be06cc15f
2158 Q = e71f8567447f42e75f5ef85ca20fe557ab0343d37ed09edc3f6e68604d6b9dfb
2159 G = 5ba24de9607b8998e66ce6c4f812a314c6935842f7ab54cd82b19fa104abfb5d84579\
2160a623b2574b37d22ccae9b3e415e48f5c0f9bcbdff8071d63b9bb956e547af3a8df99e5d306197\
21619652ff96b765cb3ee493643544c75dbe5bb39834531952a0fb4b0378b3fcbb4c8b5800a533039\
21622a2a04e700bb6ed7e0b85795ea38b1b962741b3f33b9dde2f4ec1354f09e2eb78e95f037a5804\
2163b6171659f88715ce1a9b0cc90c27f35ef2f10ff0c7c7a2bb0154d9b8ebe76a3d764aa879af372\
2164f4240de8347937e5a90cec9f41ff2f26b8da9a94a225d1a913717d73f10397d2183f1ba3b7b45\
2165a68f1ff1893caf69a827802f7b6a48d51da6fbefb64fd9a6c5b75c4561
2166
2167 Msg = 4e3a28bcf90d1d2e75f075d9fbe55b36c5529b17bc3a9ccaba6935c9e20548255b3\
2168dfae0f91db030c12f2c344b3a29c4151c5b209f5e319fdf1c23b190f64f1fe5b330cb7c8fa952\
2169f9d90f13aff1cb11d63181da9efc6f7e15bfed4862d1a62c7dcf3ba8bf1ff304b102b1ec3f149\
21707dddf09712cf323f5610a9d10c3d9132659
2171 Y = 5a55dceddd1134ee5f11ed85deb4d634a3643f5f36dc3a70689256469a0b651ad2288\
21720f14ab85719434f9c0e407e60ea420e2a0cd29422c4899c416359dbb1e592456f2b3cce233259\
2173c117542fd05f31ea25b015d9121c890b90e0bad033be1368d229985aac7226d1c8c2eab325ef3\
2174b2cd59d3b9f7de7dbc94af1a9339eb430ca36c26c46ecfa6c5481711496f624e188ad7540ef5d\
2175f26f8efacb820bd17a1f618acb50c9bc197d4cb7ccac45d824a3bf795c234b556b06aeb929173\
2176453252084003f69fe98045fe74002ba658f93475622f76791d9b2623d1b5fff2cc16844746efd\
21772d30a6a8134bfc4c8cc80a46107901fb973c28fc553130f3286c1489da
2178 R = 633055e055f237c38999d81c397848c38cce80a55b649d9e7905c298e2a51447
2179 S = 2bbf68317660ec1e4b154915027b0bc00ee19cfc0bf75d01930504f2ce10a8b0
2180
2181 Msg = a733b3f588d5ac9b9d4fe2f804df8c256403a9f8eef6f191fc48e1267fb5b4d546b\
2182a11e77b667844e489bf0d5f72990aeb061d01ccd7949a23def74a803b7d92d51abfadeb4885ff\
2183d8ffd58ab87548a15c087a39b8993b2fa64c9d31a594eeb7512da16955834336a234435c5a9d0\
2184dd9b15a94e116154dea63fdc8dd7a512181
2185 Y = 356ed47537fbf02cb30a8cee0537f300dff1d0c467399ce70b87a8758d5ec9dd25624\
21866fccaeb9dfe109f2a984f2ddaa87aad54ce0d31f907e504521baf4207d7073b0a4a9fc67d8ddd\
2187a99f87aed6e0367cec27f9c608af743bf1ee6e11d55a182d43b024ace534029b866f6422828bb\
218881a39aae9601ee81c7f81dd358e69f4e2edfa4654d8a65bc64311dc86aac4abc1fc7a3f651596\
218961a0d8e288eb8d665cb0adf5ac3d6ba8e9453facf7542393ae24fd50451d3828086558f7ec528\
2190e284935a53f67a1aa8e25d8ad5c4ad55d83aef883a4d9eeb6297e6a53f65049ba9e2c6b7953a7\
219160bc1dc46f78ceaaa2c02f5375dd82e708744aa40b15799eb81d7e5b1a
2192 R = bcd490568c0a89ba311bef88ea4f4b03d273e793722722327095a378dd6f3522
2193 S = 74498fc43091fcdd2d1ef0775f8286945a01cd72b805256b0451f9cbd943cf82
2194 """).splitlines()
2195
2196 expected = [
2197 {
2198 'p': int('a8f9cd201e5e35d892f85f80e4db2599a5676a3b1d4f190330ed325'
2199 '6b26d0e80a0e49a8fffaaad2a24f472d2573241d4d6d6c7480c80b4'
2200 'c67bb4479c15ada7ea8424d2502fa01472e760241713dab025ae1b0'
2201 '2e1703a1435f62ddf4ee4c1b664066eb22f2e3bf28bb70a2a76e4fd'
2202 '5ebe2d1229681b5b06439ac9c7e9d8bde283', 16),
2203 'q': int('f85f0f83ac4df7ea0cdf8f469bfeeaea14156495', 16),
2204 'g': int('2b3152ff6c62f14622b8f48e59f8af46883b38e79b8c74deeae9df1'
2205 '31f8b856e3ad6c8455dab87cc0da8ac973417ce4f7878557d6cdf40'
2206 'b35b4a0ca3eb310c6a95d68ce284ad4e25ea28591611ee08b8444bd'
2207 '64b25f3f7c572410ddfb39cc728b9c936f85f419129869929cdb909'
2208 'a6a3a99bbe089216368171bd0ba81de4fe33', 16),
2209 'digest_algorithm': 'SHA-1',
2210 'msg': binascii.unhexlify(
2211 b'3b46736d559bd4e0c2c1b2553a33ad3c6cf23cac998d3d0c0e8fa4b19bc'
2212 b'a06f2f386db2dcff9dca4f40ad8f561ffc308b46c5f31a7735b5fa7e0f9'
2213 b'e6cb512e63d7eea05538d66a75cd0d4234b5ccf6c1715ccaaf9cdc0a222'
2214 b'8135f716ee9bdee7fc13ec27a03a6d11c5c5b3685f51900b1337153bc6c'
2215 b'4e8f52920c33fa37f4e7'),
2216 'y': int('313fd9ebca91574e1c2eebe1517c57e0c21b0209872140c5328761b'
2217 'bb2450b33f1b18b409ce9ab7c4cd8fda3391e8e34868357c199e16a'
2218 '6b2eba06d6749def791d79e95d3a4d09b24c392ad89dbf100995ae1'
2219 '9c01062056bb14bce005e8731efde175f95b975089bdcdaea562b32'
2220 '786d96f5a31aedf75364008ad4fffebb970b', 16),
2221 'r': int('50ed0e810e3f1c7cb6ac62332058448bd8b284c0', 16),
2222 's': int('c6aded17216b46b7e4b6f2a97c1ad7cc3da83fde', 16)},
2223 {
2224 'p': int('a8f9cd201e5e35d892f85f80e4db2599a5676a3b1d4f190330ed325'
2225 '6b26d0e80a0e49a8fffaaad2a24f472d2573241d4d6d6c7480c80b4'
2226 'c67bb4479c15ada7ea8424d2502fa01472e760241713dab025ae1b0'
2227 '2e1703a1435f62ddf4ee4c1b664066eb22f2e3bf28bb70a2a76e4fd'
2228 '5ebe2d1229681b5b06439ac9c7e9d8bde283', 16),
2229 'q': int('f85f0f83ac4df7ea0cdf8f469bfeeaea14156495', 16),
2230 'g': int('2b3152ff6c62f14622b8f48e59f8af46883b38e79b8c74deeae9df1'
2231 '31f8b856e3ad6c8455dab87cc0da8ac973417ce4f7878557d6cdf40'
2232 'b35b4a0ca3eb310c6a95d68ce284ad4e25ea28591611ee08b8444bd'
2233 '64b25f3f7c572410ddfb39cc728b9c936f85f419129869929cdb909'
2234 'a6a3a99bbe089216368171bd0ba81de4fe33', 16),
2235 'digest_algorithm': 'SHA-1',
2236 'msg': binascii.unhexlify(
2237 b'd2bcb53b044b3e2e4b61ba2f91c0995fb83a6a97525e66441a3b489d959'
2238 b'4238bc740bdeea0f718a769c977e2de003877b5d7dc25b182ae533db33e'
2239 b'78f2c3ff0645f2137abc137d4e7d93ccf24f60b18a820bc07c7b4b5fe08'
2240 b'b4f9e7d21b256c18f3b9d49acc4f93e2ce6f3754c7807757d2e11760426'
2241 b'12cb32fc3f4f70700e25'),
2242 'y': int('29bdd759aaa62d4bf16b4861c81cf42eac2e1637b9ecba512bdbc13'
2243 'ac12a80ae8de2526b899ae5e4a231aef884197c944c732693a634d7'
2244 '659abc6975a773f8d3cd5a361fe2492386a3c09aaef12e4a7e73ad7'
2245 'dfc3637f7b093f2c40d6223a195c136adf2ea3fbf8704a675aa7817'
2246 'aa7ec7f9adfb2854d4e05c3ce7f76560313b', 16),
2247 'r': int('a26c00b5750a2d27fe7435b93476b35438b4d8ab', 16),
2248 's': int('61c9bfcb2938755afa7dad1d1e07c6288617bf70', 16)},
2249 {
2250 'p': int('a8adb6c0b4cf9588012e5deff1a871d383e0e2a85b5e8e03d814fe1'
2251 '3a059705e663230a377bf7323a8fa117100200bfd5adf857393b0bb'
2252 'd67906c081e585410e38480ead51684dac3a38f7b64c9eb109f1973'
2253 '9a4517cd7d5d6291e8af20a3fbf17336c7bf80ee718ee087e322ee4'
2254 '1047dabefbcc34d10b66b644ddb3160a28c0639563d71993a26543e'
2255 'adb7718f317bf5d9577a6156561b082a10029cd44012b18de684450'
2256 '9fe058ba87980792285f2750969fe89c2cd6498db3545638d5379d1'
2257 '25dccf64e06c1af33a6190841d223da1513333a7c9d78462abaab31'
2258 'b9f96d5f34445ceb6309f2f6d2c8dde06441e87980d303ef9a1ff00'
2259 '7e8be2f0be06cc15f', 16),
2260 'q': int('e71f8567447f42e75f5ef85ca20fe557ab0343d37ed09edc3f6e686'
2261 '04d6b9dfb', 16),
2262 'g': int('5ba24de9607b8998e66ce6c4f812a314c6935842f7ab54cd82b19fa'
2263 '104abfb5d84579a623b2574b37d22ccae9b3e415e48f5c0f9bcbdff'
2264 '8071d63b9bb956e547af3a8df99e5d3061979652ff96b765cb3ee49'
2265 '3643544c75dbe5bb39834531952a0fb4b0378b3fcbb4c8b5800a533'
2266 '0392a2a04e700bb6ed7e0b85795ea38b1b962741b3f33b9dde2f4ec'
2267 '1354f09e2eb78e95f037a5804b6171659f88715ce1a9b0cc90c27f3'
2268 '5ef2f10ff0c7c7a2bb0154d9b8ebe76a3d764aa879af372f4240de8'
2269 '347937e5a90cec9f41ff2f26b8da9a94a225d1a913717d73f10397d'
2270 '2183f1ba3b7b45a68f1ff1893caf69a827802f7b6a48d51da6fbefb'
2271 '64fd9a6c5b75c4561', 16),
2272 'digest_algorithm': 'SHA-256',
2273 'msg': binascii.unhexlify(
2274 b'4e3a28bcf90d1d2e75f075d9fbe55b36c5529b17bc3a9ccaba6935c9e20'
2275 b'548255b3dfae0f91db030c12f2c344b3a29c4151c5b209f5e319fdf1c23'
2276 b'b190f64f1fe5b330cb7c8fa952f9d90f13aff1cb11d63181da9efc6f7e1'
2277 b'5bfed4862d1a62c7dcf3ba8bf1ff304b102b1ec3f1497dddf09712cf323'
2278 b'f5610a9d10c3d9132659'),
2279 'y': int('5a55dceddd1134ee5f11ed85deb4d634a3643f5f36dc3a706892564'
2280 '69a0b651ad22880f14ab85719434f9c0e407e60ea420e2a0cd29422'
2281 'c4899c416359dbb1e592456f2b3cce233259c117542fd05f31ea25b'
2282 '015d9121c890b90e0bad033be1368d229985aac7226d1c8c2eab325'
2283 'ef3b2cd59d3b9f7de7dbc94af1a9339eb430ca36c26c46ecfa6c548'
2284 '1711496f624e188ad7540ef5df26f8efacb820bd17a1f618acb50c9'
2285 'bc197d4cb7ccac45d824a3bf795c234b556b06aeb92917345325208'
2286 '4003f69fe98045fe74002ba658f93475622f76791d9b2623d1b5fff'
2287 '2cc16844746efd2d30a6a8134bfc4c8cc80a46107901fb973c28fc5'
2288 '53130f3286c1489da', 16),
2289 'r': int('633055e055f237c38999d81c397848c38cce80a55b649d9e7905c29'
2290 '8e2a51447', 16),
2291 's': int('2bbf68317660ec1e4b154915027b0bc00ee19cfc0bf75d01930504f'
2292 '2ce10a8b0', 16)},
2293 {
2294 'p': int('a8adb6c0b4cf9588012e5deff1a871d383e0e2a85b5e8e03d814fe1'
2295 '3a059705e663230a377bf7323a8fa117100200bfd5adf857393b0bb'
2296 'd67906c081e585410e38480ead51684dac3a38f7b64c9eb109f1973'
2297 '9a4517cd7d5d6291e8af20a3fbf17336c7bf80ee718ee087e322ee4'
2298 '1047dabefbcc34d10b66b644ddb3160a28c0639563d71993a26543e'
2299 'adb7718f317bf5d9577a6156561b082a10029cd44012b18de684450'
2300 '9fe058ba87980792285f2750969fe89c2cd6498db3545638d5379d1'
2301 '25dccf64e06c1af33a6190841d223da1513333a7c9d78462abaab31'
2302 'b9f96d5f34445ceb6309f2f6d2c8dde06441e87980d303ef9a1ff00'
2303 '7e8be2f0be06cc15f', 16),
2304 'q': int('e71f8567447f42e75f5ef85ca20fe557ab0343d37ed09edc3f6e686'
2305 '04d6b9dfb', 16),
2306 'g': int('5ba24de9607b8998e66ce6c4f812a314c6935842f7ab54cd82b19fa'
2307 '104abfb5d84579a623b2574b37d22ccae9b3e415e48f5c0f9bcbdff'
2308 '8071d63b9bb956e547af3a8df99e5d3061979652ff96b765cb3ee49'
2309 '3643544c75dbe5bb39834531952a0fb4b0378b3fcbb4c8b5800a533'
2310 '0392a2a04e700bb6ed7e0b85795ea38b1b962741b3f33b9dde2f4ec'
2311 '1354f09e2eb78e95f037a5804b6171659f88715ce1a9b0cc90c27f3'
2312 '5ef2f10ff0c7c7a2bb0154d9b8ebe76a3d764aa879af372f4240de8'
2313 '347937e5a90cec9f41ff2f26b8da9a94a225d1a913717d73f10397d'
2314 '2183f1ba3b7b45a68f1ff1893caf69a827802f7b6a48d51da6fbefb'
2315 '64fd9a6c5b75c4561', 16),
2316 'digest_algorithm': 'SHA-256',
2317 'msg': binascii.unhexlify(
2318 b'a733b3f588d5ac9b9d4fe2f804df8c256403a9f8eef6f191fc48e1267fb'
2319 b'5b4d546ba11e77b667844e489bf0d5f72990aeb061d01ccd7949a23def7'
2320 b'4a803b7d92d51abfadeb4885ffd8ffd58ab87548a15c087a39b8993b2fa'
2321 b'64c9d31a594eeb7512da16955834336a234435c5a9d0dd9b15a94e11615'
2322 b'4dea63fdc8dd7a512181'),
2323 'y': int('356ed47537fbf02cb30a8cee0537f300dff1d0c467399ce70b87a87'
2324 '58d5ec9dd256246fccaeb9dfe109f2a984f2ddaa87aad54ce0d31f9'
2325 '07e504521baf4207d7073b0a4a9fc67d8ddda99f87aed6e0367cec2'
2326 '7f9c608af743bf1ee6e11d55a182d43b024ace534029b866f642282'
2327 '8bb81a39aae9601ee81c7f81dd358e69f4e2edfa4654d8a65bc6431'
2328 '1dc86aac4abc1fc7a3f65159661a0d8e288eb8d665cb0adf5ac3d6b'
2329 'a8e9453facf7542393ae24fd50451d3828086558f7ec528e284935a'
2330 '53f67a1aa8e25d8ad5c4ad55d83aef883a4d9eeb6297e6a53f65049'
2331 'ba9e2c6b7953a760bc1dc46f78ceaaa2c02f5375dd82e708744aa40'
2332 'b15799eb81d7e5b1a', 16),
2333 'r': int('bcd490568c0a89ba311bef88ea4f4b03d273e793722722327095a37'
2334 '8dd6f3522', 16),
2335 's': int('74498fc43091fcdd2d1ef0775f8286945a01cd72b805256b0451f9c'
2336 'bd943cf82', 16)}
2337 ]
2338 assert expected == load_fips_dsa_sig_vectors(vector_data)
Alex Stapletoncf048602014-04-12 12:48:59 +01002339
2340
2341def test_load_fips_ecdsa_key_pair_vectors():
2342 vector_data = textwrap.dedent("""
2343 # CAVS 11.0
2344 # "Key Pair" information
2345 # Curves selected: P-192 K-233 B-571
2346 # Generated on Wed Mar 16 16:16:42 2011
2347
2348
2349 [P-192]
2350
2351 [B.4.2 Key Pair Generation by Testing Candidates]
2352 N = 2
2353
2354 d = e5ce89a34adddf25ff3bf1ffe6803f57d0220de3118798ea
2355 Qx = 8abf7b3ceb2b02438af19543d3e5b1d573fa9ac60085840f
2356 Qy = a87f80182dcd56a6a061f81f7da393e7cffd5e0738c6b245
2357
2358 d = 7d14435714ad13ff23341cb567cc91198ff8617cc39751b2
2359 Qx = 39dc723b19527daa1e80425209c56463481b9b47c51f8cbd
2360 Qy = 432a3e84f2a16418834fabaf6b7d2341669512951f1672ad
2361
2362
2363 [K-233]
2364
2365 [B.4.2 Key Pair Generation by Testing Candidates]
2366 N = 2
2367
2368 d = 01da7422b50e3ff051f2aaaed10acea6cbf6110c517da2f4eaca8b5b87
2369 Qx = 01c7475da9a161e4b3f7d6b086494063543a979e34b8d7ac44204d47bf9f
2370 Qy = 0131cbd433f112871cc175943991b6a1350bf0cdd57ed8c831a2a7710c92
2371
2372 d = 530951158f7b1586978c196603c12d25607d2cb0557efadb23cd0ce8
2373 Qx = d37500a0391d98d3070d493e2b392a2c79dc736c097ed24b7dd5ddec44
2374 Qy = 01d996cc79f37d8dba143d4a8ad9a8a60ed7ea760aae1ddba34d883f65d9
2375
2376
2377 [B-571]
2378
2379 [B.4.2 Key Pair Generation by Testing Candidates]
2380 N = 2
2381
2382 d = 01443e93c7ef6802655f641ecbe95e75f1f15b02d2e172f49a32e22047d5c00ebe1b3f\
2383f0456374461360667dbf07bc67f7d6135ee0d1d46a226a530fefe8ebf3b926e9fbad8d57a6
2384 Qx = 053e3710d8e7d4138db0a369c97e5332c1be38a20a4a84c36f5e55ea9fd6f34545b86\
23854ea64f319e74b5ee9e4e1fa1b7c5b2db0e52467518f8c45b658824871d5d4025a6320ca06f8
2386 Qy = 03a22cfd370c4a449b936ae97ab97aab11c57686cca99d14ef184f9417fad8bedae4d\
2387f8357e3710bcda1833b30e297d4bf637938b995d231e557d13f062e81e830af5ab052208ead
2388
2389 d = 03d2bd44ca9eeee8c860a4873ed55a54bdfdf5dab4060df7292877960b85d1fd496aa3\
23903c587347213d7f6bf208a6ab4b430546e7b6ffbc3135bd12f44a28517867ca3c83a821d6f8
2391 Qx = 07a7af10f6617090bade18b2e092d0dfdc87cd616db7f2db133477a82bfe3ea421ebb\
23927d6289980819292a719eb247195529ea60ad62862de0a26c72bfc49ecc81c2f9ed704e3168f
2393 Qy = 0721496cf16f988b1aabef3368450441df8439a0ca794170f270ead56203d675b57f5\
2394a4090a3a2f602a77ff3bac1417f7e25a683f667b3b91f105016a47afad46a0367b18e2bdf0c
2395 """).splitlines()
2396
2397 expected = [
2398 {
2399 "curve": "secp192r1",
2400 "d": int("e5ce89a34adddf25ff3bf1ffe6803f57d0220de3118798ea", 16),
2401 "x": int("8abf7b3ceb2b02438af19543d3e5b1d573fa9ac60085840f", 16),
2402 "y": int("a87f80182dcd56a6a061f81f7da393e7cffd5e0738c6b245", 16)
2403 },
2404
2405 {
2406 "curve": "secp192r1",
2407 "d": int("7d14435714ad13ff23341cb567cc91198ff8617cc39751b2", 16),
2408 "x": int("39dc723b19527daa1e80425209c56463481b9b47c51f8cbd", 16),
2409 "y": int("432a3e84f2a16418834fabaf6b7d2341669512951f1672ad", 16),
2410 },
2411
2412 {
2413 "curve": "sect233k1",
2414 "d": int("1da7422b50e3ff051f2aaaed10acea6cbf6110c517da2f4e"
2415 "aca8b5b87", 16),
2416 "x": int("1c7475da9a161e4b3f7d6b086494063543a979e34b8d7ac4"
2417 "4204d47bf9f", 16),
2418 "y": int("131cbd433f112871cc175943991b6a1350bf0cdd57ed8c83"
2419 "1a2a7710c92", 16),
2420 },
2421
2422 {
2423 "curve": "sect233k1",
2424 "d": int("530951158f7b1586978c196603c12d25607d2cb0557efadb"
2425 "23cd0ce8", 16),
2426 "x": int("d37500a0391d98d3070d493e2b392a2c79dc736c097ed24b"
2427 "7dd5ddec44", 16),
2428 "y": int("1d996cc79f37d8dba143d4a8ad9a8a60ed7ea760aae1ddba"
2429 "34d883f65d9", 16),
2430 },
2431
2432 {
2433 "curve": "sect571r1",
2434 "d": int("1443e93c7ef6802655f641ecbe95e75f1f15b02d2e172f49"
2435 "a32e22047d5c00ebe1b3ff0456374461360667dbf07bc67f"
2436 "7d6135ee0d1d46a226a530fefe8ebf3b926e9fbad8d57a6", 16),
2437 "x": int("53e3710d8e7d4138db0a369c97e5332c1be38a20a4a84c36"
2438 "f5e55ea9fd6f34545b864ea64f319e74b5ee9e4e1fa1b7c5"
2439 "b2db0e52467518f8c45b658824871d5d4025a6320ca06f8", 16),
2440 "y": int("3a22cfd370c4a449b936ae97ab97aab11c57686cca99d14e"
2441 "f184f9417fad8bedae4df8357e3710bcda1833b30e297d4b"
2442 "f637938b995d231e557d13f062e81e830af5ab052208ead", 16),
2443 },
2444
2445 {
2446 "curve": "sect571r1",
2447 "d": int("3d2bd44ca9eeee8c860a4873ed55a54bdfdf5dab4060df72"
2448 "92877960b85d1fd496aa33c587347213d7f6bf208a6ab4b4"
2449 "30546e7b6ffbc3135bd12f44a28517867ca3c83a821d6f8", 16),
2450 "x": int("7a7af10f6617090bade18b2e092d0dfdc87cd616db7f2db1"
2451 "33477a82bfe3ea421ebb7d6289980819292a719eb2471955"
2452 "29ea60ad62862de0a26c72bfc49ecc81c2f9ed704e3168f", 16),
2453 "y": int("721496cf16f988b1aabef3368450441df8439a0ca794170f"
2454 "270ead56203d675b57f5a4090a3a2f602a77ff3bac1417f7"
2455 "e25a683f667b3b91f105016a47afad46a0367b18e2bdf0c", 16),
2456 },
2457 ]
2458
2459 assert expected == load_fips_ecdsa_key_pair_vectors(vector_data)
Alex Stapletonc387cf72014-04-13 13:58:02 +01002460
2461
2462def test_load_fips_ecdsa_signing_vectors():
2463 vector_data = textwrap.dedent("""
2464 # CAVS 11.2
2465 # "SigVer" information for "ecdsa_values"
2466 # Curves/SHAs selected: P-192, B-571,SHA-512
2467 # Generated on Tue Aug 16 15:27:42 2011
2468
2469 [P-192,SHA-1]
2470
2471 Msg = ebf748d748ebbca7d29fb473698a6e6b4fb10c865d4af024cc39ae3df3464ba4f1d6\
2472d40f32bf9618a91bb5986fa1a2af048a0e14dc51e5267eb05e127d689d0ac6f1a7f156ce066316\
2473b971cc7a11d0fd7a2093e27cf2d08727a4e6748cc32fd59c7810c5b9019df21cdcc0bca432c0a3\
2474eed0785387508877114359cee4a071cf
2475 d = e14f37b3d1374ff8b03f41b9b3fdd2f0ebccf275d660d7f3
2476 Qx = 07008ea40b08dbe76432096e80a2494c94982d2d5bcf98e6
2477 Qy = 76fab681d00b414ea636ba215de26d98c41bd7f2e4d65477
2478 k = cb0abc7043a10783684556fb12c4154d57bc31a289685f25
2479 R = 6994d962bdd0d793ffddf855ec5bf2f91a9698b46258a63e
2480 S = 02ba6465a234903744ab02bc8521405b73cf5fc00e1a9f41
Alex Stapleton6f729492014-04-19 09:01:25 +01002481 Result = F (3 - S changed)
Alex Stapletonc387cf72014-04-13 13:58:02 +01002482
2483 Msg = 0dcb3e96d77ee64e9d0a350d31563d525755fc675f0c833504e83fc69c030181b42f\
2484e80c378e86274a93922c570d54a7a358c05755ec3ae91928e02236e81b43e596e4ccbf6a910488\
24859c388072bec4e1faeae11fe4eb24fa4f9573560dcf2e3abc703c526d46d502c7a7222583431cc8\
2486178354ae7dbb84e3479917707bce0968
2487 d = 7a0235bea3d70445f14d56f9b7fb80ec8ff4eb2f76865244
2488 Qx = 0ea3c1fa1f124f26530cbfddeb831eecc67df31e08889d1d
2489 Qy = 7215a0cce0501b47903bd8fe1179c2dfe07bd076f89f5225
2490 k = 3c646b0f03f5575e5fd463d4319817ce8bd3022eaf551cef
2491 R = a3ba51c39c43991d87dff0f34d0bec7c883299e04f60f95e
2492 S = 8a7f9c59c6d65ad390e4c19636ba92b53be5d0f848b4e1f7
2493
2494 [B-571,SHA-512]
2495
2496 Msg = 10d2e00ae57176c79cdfc746c0c887abe799ee445b151b008e3d9f81eb69be40298d\
2497df37b5c45a9b6e5ff83785d8c140cf11e6a4c3879a2845796872363da24b10f1f8d9cc48f8af20\
2498681dceb60dd62095d6d3b1779a4a805de3d74e38983b24c0748618e2f92ef7cac257ff4bd1f411\
249913f2891eb13c47930e69ddbe91f270fb
2500 d = 03e1b03ffca4399d5b439fac8f87a5cb06930f00d304193d7daf83d5947d0c1e293f74\
2501aef8e56849f16147133c37a6b3d1b1883e5d61d6b871ea036c5291d9a74541f28878cb986
2502 Qx = 3b236fc135d849d50140fdaae1045e6ae35ef61091e98f5059b30eb16acdd0deb2bc0\
2503d3544bc3a666e0014e50030134fe5466a9e4d3911ed580e28851f3747c0010888e819d3d1f
2504 Qy = 3a8b6627a587d289032bd76374d16771188d7ff281c39542c8977f6872fa932e5daa1\
25054e13792dea9ffe8e9f68d6b525ec99b81a5a60cfb0590cc6f297cfff8d7ba1a8bb81fe2e16
2506 k = 2e56a94cfbbcd293e242f0c2a2e9df289a9480e6ba52e0f00fa19bcf2a7769bd155e6b\
250779ddbd6a8646b0e69c8baea27f8034a18796e8eb4fe6e0e2358c383521d9375d2b6b437f9
2508 R = 2eb1c5c1fc93cf3c8babed12c031cf1504e094174fd335104cbe4a2abd210b5a14b1c3\
2509a455579f1ed0517c31822340e4dd3c1f967e1b4b9d071a1072afc1a199f8c548cd449a634
2510 S = 22f97bb48641235826cf4e597fa8de849402d6bd6114ad2d7fbcf53a08247e5ee921f1\
2511bd5994dffee36eedff5592bb93b8bb148214da3b7baebffbd96b4f86c55b3f6bbac142442
Alex Stapleton6f729492014-04-19 09:01:25 +01002512 Result = P (0 )
Alex Stapletonc387cf72014-04-13 13:58:02 +01002513
2514 Msg = b61a0849a28672cb536fcf61ea2eb389d02ff7a09aa391744cae6597bd56703c40c5\
25150ca2dee5f7ee796acfd47322f03d8dbe4d99dc8eec588b4e5467f123075b2d74b2a0b0bbfd3ac5\
2516487a905fad6d6ac1421c2e564c0cf15e1f0f10bc31c249b7b46edd2462a55f85560d99bde9d5b0\
25176b97817d1dbe0a67c701d6e6e7878272
2518 d = 2e09ffd8b434bb7f67d1d3ccf482164f1653c6e4ec64dec2517aa21b7a93b2b21ea1ee\
2519bb54734882f29303e489f02e3b741a87287e2dcdf3858eb6d2ec668f8b5b26f442ce513a2
2520 Qx = 36f1be8738dd7dae4486b86a08fe90424f3673e76b10e739442e15f3bfafaf841842a\
2521c98e490521b7e7bb94c127529f6ec6a42cc6f06fc80606f1210fe020ff508148f93301c9d3
2522 Qy = 4d39666ebe99fe214336ad440d776c88eb916f2f4a3433548b87d2aebed840b424d15\
2523c8341b4a0a657bf6a234d4fe78631c8e07ac1f4dc7474cd6b4545d536b7b17c160db4562d9
2524 k = 378e7801566d7b77db7a474717ab2195b02957cc264a9449d4126a7cc574728ed5a476\
25259abd5dde987ca66cfe3d45b5fc52ffd266acb8a8bb3fcb4b60f7febbf48aebe33bd3efbdd
2526 R = 3d8105f87fe3166046c08e80a28acc98a80b8b7a729623053c2a9e80afd06756edfe09\
2527bdcf3035f6829ede041b745955d219dc5d30ddd8b37f6ba0f6d2857504cdc68a1ed812a10
2528 S = 34db9998dc53527114518a7ce3783d674ca8cced823fa05e2942e7a0a20b3cc583dcd9\
252930c43f9b93079c5ee18a1f5a66e7c3527c18610f9b47a4da7e245ef803e0662e4d2ad721c
2530 """).splitlines()
2531
2532 expected = [
2533 {
2534 "curve": "secp192r1",
2535 "digest_algorithm": "SHA-1",
Alex Stapletonfb812d62014-04-15 16:07:25 +01002536 "message": binascii.unhexlify(
Alex Stapletonc387cf72014-04-13 13:58:02 +01002537 b"ebf748d748ebbca7d29fb473698a6e6b4fb10c865d4af024cc39ae3df346"
2538 b"4ba4f1d6d40f32bf9618a91bb5986fa1a2af048a0e14dc51e5267eb05e12"
2539 b"7d689d0ac6f1a7f156ce066316b971cc7a11d0fd7a2093e27cf2d08727a4"
2540 b"e6748cc32fd59c7810c5b9019df21cdcc0bca432c0a3eed0785387508877"
2541 b"114359cee4a071cf"
2542 ),
2543 "d": int("e14f37b3d1374ff8b03f41b9b3fdd2f0ebccf275d660d7f3", 16),
2544 "x": int("7008ea40b08dbe76432096e80a2494c94982d2d5bcf98e6", 16),
2545 "y": int("76fab681d00b414ea636ba215de26d98c41bd7f2e4d65477", 16),
2546 "r": int("6994d962bdd0d793ffddf855ec5bf2f91a9698b46258a63e", 16),
Alex Stapleton6f729492014-04-19 09:01:25 +01002547 "s": int("02ba6465a234903744ab02bc8521405b73cf5fc00e1a9f41", 16),
2548 "fail": True
Alex Stapletonc387cf72014-04-13 13:58:02 +01002549 },
2550 {
2551 "curve": "secp192r1",
2552 "digest_algorithm": "SHA-1",
Alex Stapletonfb812d62014-04-15 16:07:25 +01002553 "message": binascii.unhexlify(
Alex Stapletonc387cf72014-04-13 13:58:02 +01002554 b"0dcb3e96d77ee64e9d0a350d31563d525755fc675f0c833504e83fc69c03"
2555 b"0181b42fe80c378e86274a93922c570d54a7a358c05755ec3ae91928e022"
2556 b"36e81b43e596e4ccbf6a9104889c388072bec4e1faeae11fe4eb24fa4f95"
2557 b"73560dcf2e3abc703c526d46d502c7a7222583431cc8178354ae7dbb84e3"
2558 b"479917707bce0968"
2559 ),
2560 "d": int("7a0235bea3d70445f14d56f9b7fb80ec8ff4eb2f76865244", 16),
2561 "x": int("ea3c1fa1f124f26530cbfddeb831eecc67df31e08889d1d", 16),
2562 "y": int("7215a0cce0501b47903bd8fe1179c2dfe07bd076f89f5225", 16),
2563 "r": int("a3ba51c39c43991d87dff0f34d0bec7c883299e04f60f95e", 16),
Alex Stapleton6f729492014-04-19 09:01:25 +01002564 "s": int("8a7f9c59c6d65ad390e4c19636ba92b53be5d0f848b4e1f7", 16),
Alex Stapletonc387cf72014-04-13 13:58:02 +01002565 },
2566 {
2567 "curve": "sect571r1",
2568 "digest_algorithm": "SHA-512",
Alex Stapletonfb812d62014-04-15 16:07:25 +01002569 "message": binascii.unhexlify(
Alex Stapletonc387cf72014-04-13 13:58:02 +01002570 b"10d2e00ae57176c79cdfc746c0c887abe799ee445b151b008e3d9f81eb69"
2571 b"be40298ddf37b5c45a9b6e5ff83785d8c140cf11e6a4c3879a2845796872"
2572 b"363da24b10f1f8d9cc48f8af20681dceb60dd62095d6d3b1779a4a805de3"
2573 b"d74e38983b24c0748618e2f92ef7cac257ff4bd1f41113f2891eb13c4793"
2574 b"0e69ddbe91f270fb"
2575 ),
2576 "d": int("3e1b03ffca4399d5b439fac8f87a5cb06930f00d304193d7daf83d59"
2577 "47d0c1e293f74aef8e56849f16147133c37a6b3d1b1883e5d61d6b87"
2578 "1ea036c5291d9a74541f28878cb986", 16),
2579 "x": int("3b236fc135d849d50140fdaae1045e6ae35ef61091e98f5059b30eb1"
2580 "6acdd0deb2bc0d3544bc3a666e0014e50030134fe5466a9e4d3911ed"
2581 "580e28851f3747c0010888e819d3d1f", 16),
2582 "y": int("3a8b6627a587d289032bd76374d16771188d7ff281c39542c8977f68"
2583 "72fa932e5daa14e13792dea9ffe8e9f68d6b525ec99b81a5a60cfb05"
2584 "90cc6f297cfff8d7ba1a8bb81fe2e16", 16),
2585 "r": int("2eb1c5c1fc93cf3c8babed12c031cf1504e094174fd335104cbe4a2a"
2586 "bd210b5a14b1c3a455579f1ed0517c31822340e4dd3c1f967e1b4b9d"
2587 "071a1072afc1a199f8c548cd449a634", 16),
2588 "s": int("22f97bb48641235826cf4e597fa8de849402d6bd6114ad2d7fbcf53a"
2589 "08247e5ee921f1bd5994dffee36eedff5592bb93b8bb148214da3b7b"
Alex Stapleton6f729492014-04-19 09:01:25 +01002590 "aebffbd96b4f86c55b3f6bbac142442", 16),
2591 "fail": False
Alex Stapletonc387cf72014-04-13 13:58:02 +01002592 },
2593 {
2594 "curve": "sect571r1",
2595 "digest_algorithm": "SHA-512",
Alex Stapleton24a2f072014-04-16 10:00:12 +01002596 "message": binascii.unhexlify(
Alex Stapletonc387cf72014-04-13 13:58:02 +01002597 b"b61a0849a28672cb536fcf61ea2eb389d02ff7a09aa391744cae6597bd56"
2598 b"703c40c50ca2dee5f7ee796acfd47322f03d8dbe4d99dc8eec588b4e5467"
2599 b"f123075b2d74b2a0b0bbfd3ac5487a905fad6d6ac1421c2e564c0cf15e1f"
2600 b"0f10bc31c249b7b46edd2462a55f85560d99bde9d5b06b97817d1dbe0a67"
2601 b"c701d6e6e7878272"
2602 ),
2603 "d": int("2e09ffd8b434bb7f67d1d3ccf482164f1653c6e4ec64dec2517aa21b"
2604 "7a93b2b21ea1eebb54734882f29303e489f02e3b741a87287e2dcdf3"
2605 "858eb6d2ec668f8b5b26f442ce513a2", 16),
2606 "x": int("36f1be8738dd7dae4486b86a08fe90424f3673e76b10e739442e15f3"
2607 "bfafaf841842ac98e490521b7e7bb94c127529f6ec6a42cc6f06fc80"
2608 "606f1210fe020ff508148f93301c9d3", 16),
2609 "y": int("4d39666ebe99fe214336ad440d776c88eb916f2f4a3433548b87d2ae"
2610 "bed840b424d15c8341b4a0a657bf6a234d4fe78631c8e07ac1f4dc74"
2611 "74cd6b4545d536b7b17c160db4562d9", 16),
2612 "r": int("3d8105f87fe3166046c08e80a28acc98a80b8b7a729623053c2a9e80"
2613 "afd06756edfe09bdcf3035f6829ede041b745955d219dc5d30ddd8b3"
2614 "7f6ba0f6d2857504cdc68a1ed812a10", 16),
2615 "s": int("34db9998dc53527114518a7ce3783d674ca8cced823fa05e2942e7a0"
2616 "a20b3cc583dcd930c43f9b93079c5ee18a1f5a66e7c3527c18610f9b"
2617 "47a4da7e245ef803e0662e4d2ad721c", 16)
2618 }
2619 ]
Alex Stapletonc387cf72014-04-13 13:58:02 +01002620 assert expected == load_fips_ecdsa_signing_vectors(vector_data)
Mohammed Attia0fb5d852014-04-21 10:31:15 +02002621
2622
Alex Stapleton839c09d2014-08-10 12:18:02 +01002623def test_load_kasvs_dh_vectors():
2624 vector_data = textwrap.dedent("""
2625 [SHA(s) supported (Used for hashing Z): SHA256 ]
2626 # Generated on Thu Mar 17 20:44:26 2011
2627
2628
2629
2630 [FA - SHA1]
2631 P = da3a8085d372437805de95b88b675122f575df976610c6a844de99f1df82a06848bf7a\
263242f18895c97402e81118e01a00d0855d51922f434c022350861d58ddf60d65bc6941fc6064b147\
2633071a4c30426d82fc90d888f94990267c64beef8c304a4b2b26fb93724d6a9472fa16bc50c5b9b8\
2634b59afb62cfe9ea3ba042c73a6ade35
2635 Q = f2ca7621eb250aa5f22cef1907011295defc50a7
2636 G = a51883e9ac0539859df3d25c716437008bb4bd8ec4786eb4bc643299daef5e3e5af586\
26373a6ac40a597b83a27583f6a658d408825105b16d31b6ed088fc623f648fd6d95e9cefcb0745763\
2638cddf564c87bcf4ba7928e74fd6a3080481f588d535e4c026b58a21e1e5ec412ff241b436043e29\
2639173f1dc6cb943c09742de989547288
2640
2641
2642
2643 COUNT = 0
2644 XstatCAVS = 42c6ee70beb7465928a1efe692d2281b8f7b53d6
2645 YstatCAVS = 5a7890f6d20ee9c7162cd84222cb0c7cb5b4f29244a58fc95327fc41045f47\
26466fb3da42fca76a1dd59222a7a7c3872d5af7d8dc254e003eccdb38f291619c51911df2b6ed67d0\
2647b459f4bc25819c0078777b9a1a24c72e7c037a3720a1edad5863ef5ac75ce816869c820859558d\
26485721089ddbe331f55bef741396a3bbf85c6c1a
2649 XstatIUT = 54081a8fef2127a1f22ed90440b1b09c331d0614
2650 YstatIUT = 0b92af0468b841ea5de4ca91d895b5e922245421de57ed7a88d2de41610b208\
2651e8e233705f17b2e9eb91914bad2fa87f0a58519a7da2980bc06e7411c925a6050526bd86e62150\
26525e6f610b63fdcd9afcfaa96bd087afca44d9197cc35b559f731357a5b979250c0f3a254bb8165f\
26535072156e3fd6f9a6e69bcf4b4578f78b3bde7
2654 Z = 8d8f4175e16e15a42eb9099b11528af88741cc206a088971d3064bb291eda608d1600b\
2655ff829624db258fd15e95d96d3e74c6be3232afe5c855b9c59681ce13b7aea9ff2b16707e4c02f0\
2656e82bf6dadf2149ac62630f6c62dea0e505e3279404da5ffd5a088e8474ae0c8726b8189cb3d2f0\
26574baffe700be849df9f91567fc2ebb8
2658 CAVSHashZZ = eb99e77ac2272c7a2ee70c59375ac4d167312c20
2659 Result = P (0 - Correct)
2660
2661
2662
2663 COUNT = 2
2664 XstatCAVS = 32e642683d745a23dccf4f12f989d8dfd1fd9894c422930950cb4c71
2665 YstatCAVS = 8cd371363b32fcc2e936e345f2278b77001f2efdf78512c3ee75c12f88507e\
26662d5c0e5cdded3bb78435506c8028a3f4d6f028c0f49a0d61f1285795197e56deac80279e723f2b\
26673746e213ac8ec60f1cefc2308ff17a7e9e2efab537e17406d2829fd85e0c54dda2d9f0b4fcda3d\
26682776110e096a817588e19588b77be8b41bafdd41ad91b0edf629333bd6ac1e461208ead124c31b\
26698a7935c723e1c450c5798dc05f8265ad9e35095ff112af9e889f00315fa337a76a450670866eca\
267012cc6ad0778576962eb9cdc12721d3c15e4d87b67488a145d400240670eb26695a42879cd3940a\
267155087f6527667277e1212a202dbe455c45c64b9be4a38153557bbb8fd755
2672 XstatIUT = 7d8ae93df3bc09d399a4157ec562126acf51092c3269ab27f60a3a2b
2673 YstatIUT = 22127e9728e906ea4b1512c8b1e80474b58446210c23ccfc800f83c2c15da81\
267459940e494b235266f6a9d5f80529067794f1a9edd566755d23d0a3060fe074c5a10122df3e4729\
267573bba39ea3a988e8387f5f0491e590b6b5edc299b4598ab1e79b72681a0be8cd8735a5adb85fa3\
26761310f29ec407c9654f1bb83bcdf7f771b68d176817f662e8d798b53ebb4e5dd407b7b1d8fdb62e\
2677a9e1b60d6c3d75d9bcf83f4b8d1ed39408bd8d973b4ea81e8e832eac361dcd530713388a60971e\
2678a9f8b1e69c1e99df1cca12bdaf293dacfa1419c5692ceffa91988aef3321ac8cbc2efae6c4337c\
26798808310fb5a240395a98e6004fe613c39e84f4177341746d9e388dcb2e8
2680 Z = 0efeaa399a182e0a603baf0dd95aa0fae5289ebd47d5f0f60c86bc936839c31c9f7f37\
2681bf04f76ab02f4094a8ab10ed907ec7291585cc085c3e8981df2bd46a01c19ec9a2f66709df1d4f\
2682efbeb48c8263554e46890f59eb642bf95ff7f0de70138621c22c4cc32be6c3d5c82c0c9a76a9f5\
2683a65bffe0c096a350f96a9da945d7e5095b15b566ce3cb8b0377cd9375b6c046afa9ea0bc084677\
26843445f16566b2c84cae4f6d212e89ee539a1ce7ea325273fd228053efce2a585eb9e8f308b48cf4\
2685e29593b6f7a02e8625e1e8bff1ea1405f8c8c34b8339a9a99c7c9de4eb9895df7719ccda9394f5\
26863080eff1226f6b9c7ae0a38941e18b1a137aabbb62308eb35ba2
2687 CAVSHashZZ = 76dedc997d5113573bbeeaf991f62b257511b7d9aa83270dfc4fec40
2688 Result = P (10 - Z value should have leading 0 nibble )
2689
2690
2691
2692 COUNT = 3
2693 XstatCAVS = 66502429aba271e2f2ee2197a2b336e5f0467f192aa28b60dcbf1194
2694 YstatCAVS = dfb001294215423d7146a2453cdb8598ccef01e1d931a913c3e4ed4a3cf38a\
2695912066c28e4eaf77dd80ff07183a6160bd95932f513402f864dcf7a70cbedc9b60bbfbc67f72a8\
26963d5f6463a2b5a4fc906d3e921f5e1069126113265b440e15ccf2d7164bad7131f1613fec35df7f\
2697470d45888e0c91be091f3f9552d670b8b7f479853193cb3c39f35fc7bd547ccb1bc579a67302b4\
2698ba948e6db51043d351bb74a952e6a694e6e7456f714c47d7c8eeeb4fd83ad93c86b78445f9393f\
2699dfd65c7dbd7fd6eba9794ddf183901b1d213321fd0ab3f7588ab0f6b3692f365a87131eda0e062\
2700505861988f6ce63150207545ecf9678e0971330253dfb7cfd546c5346fec
2701 XstatIUT = 106b358be4f068348ac240ecbb454e5c39ca80b078cb0fafd856e9c5
2702 YstatIUT = 715d0781975b7b03162f4401c1eda343fd9bf1140006034573b31828a618c35\
27036163554cd27da956f7179a69e860fb6efeaa2e2aa9f1261506a8344c4929953621381b13d6426e\
2704152c0f2f94bfcd2b758eca24923596d427ed8f957e8bc9b1c7d21a87ef02222a1477cf3bfaadc6\
27058106456ab9706026006eccd290b21543de6bb97d5b8cf4ccee1c081a6d1dd27aaef060fa93888a\
270647a4a416ad5c5bd490ea600e04379232fb1077fbf394f4579accdbe352714e25b88916dca8d8f7\
2707e0c4ed9594f7693f656a235a2e88ebda48b0d557e32da9f12d2a4c3180f05b16b4fba9bec79278\
2708a3971b77f9223b5ab78b857e0376c5008211592c8c72d521373ee3b22b8
2709 Z = cf879ebd107bb877457809c3fc410218b7acba3c5967495a8f1c3370d57f038a48dd69\
2710f9f69b9f4dd855e7c58a1e4ec32646a978266eb314db468ea1dfcee8a85a1644a5732498c4fbcd\
2711f85098c6ed0ce12e431e99142fd2335369b3f56620ada21aa69d883e82a0b5e35484dde32d17c2\
2712dc873f2cc5518eb7fc19695dff9fc94c9d9432bb4b09d8180323cfc561ebc2d6eff8dd5f8496f2\
2713b22377700a22bbfe61a6969c198129397454843e4fc3540026986039665095490056287e4fc49e\
27146cb3181cb2bf06444fd0040150271c9ce1f61c13ecd5dd022194a2dbf3e1c7fbc6bd19497c7b88\
27158b4da613d28fa6f378a43369cb8795a1c823f7d6cf4d84bba578
2716 CAVSHashZZ = ebac4fb70699224f85d9e3c799b1f3a56dab268b882aba49525df02d
2717 Result = F (5 - Z changed )
2718
2719
2720
2721 [FB - SHA224]
2722 P = f3722b9b911c6aede9eaeeaa406283de66a097f39a7225df6c3c916e57920d356e5047\
27238d307dbfd146bfb91b6f68ecbbcf54b3d19c33a4b17293fea3e3d6bff8ac4cca93a805386f062a\
27248a27ae906ef5da94d279fd7b3d7289e00956f76bae9c0d2b8d11742ca5809630632aae58f9c6dc\
2725e00c7380581deffde2187b022f83c6ceaeaadb0844a17fcbb04039ca6843c91f0c9058b22434b2\
272663c3dfda8de8429e087c5be97fc5c9db9526031ad3a218bd9916fb4a3c27966d208b1e360014c0\
27271e95530c148fb3cd27e6a7250d3c3b81dcd220ca14548dbccf99ebb9e334db6bcd14e632c98dd3\
2728f9860af7ae450f1b7809b45f0ec10e6f27672beebc9963befc73
2729 Q = a9a17de95a29091bf8e07dab53ea1aba9403be3c61027c6c8f48bac5
2730 G = 035513ec441402b78353ab1bba550b21c76c89973885a627170262ef52497d5d137b89\
273127a212aaab2f051198c90bb81dffd9eb10b36b7ca3b63565b4c1025aea3b5e9c4a348c9cfa17f3\
2732907a1e4469701c0dedb8a4b9e96c5965b1fb8c229b0c34baac774bf9dda4fc5ee8764358b3c848\
273312878aab7464bc09e97aecab7d7e3fbb4870e2a3b89667a4158bf1ed1a90dfaf47019fbb52b1b9\
27346365bb4e1e9474993fe382fd23480dc875861be152997a621fdb7aef977ea5b4d3d74486b162dc\
273528f95a64cf65587a919a57eef92934fc9410df7f09fa82f975328ed82ff29cc3e15a971f56f4ac\
27362dcb289252575e02a6cdb7fcc6cddd7b0dca9c422e63eb2b8f05
2737
2738
2739
2740 COUNT = 0
2741 XstatCAVS = 1610eaa4e0ccc8857e2b53149e008492b1fbd9025a6e8d95aaee9c0f
2742 YstatCAVS = 51ee21cd9f97015180f258fad5c94ff5a458806b1412087236bf77fe87aae1\
2743a36735816ed6e2160a731159814b6ae1f3f52c478dd9207094adfb62f7667d5c366327e66d2309\
27446395e938504db330953a708015f861fe9d9487611093b9fe7327518a7cc15994ab573313e15411\
27457c1a3ae88b8bdd1e316748249e4a9cbd1947f159836d13613d1f9449fc3442171d1970bc28958c\
27461cafa2776a6f14ccdb29db02f64911bd83bfdcdfc843dd14a4cab9acb0bda8b293d2f5f7050768\
2747e57533cbc415a29e6f31cc365e107f91ae3722484e2c7329a85af69055a5a104da37e810878896\
2748d1b247b02b75234ecff82b1958f42d7b031622e9394c98b5229112f7f620
2749 XstatIUT = 0c4c83d75b27864b052cadc556e500e25aabf0c9d1bc01f0e1fe3862
2750 YstatIUT = 467a857337a82472a1307a64dccc8e9994c5c63ec4312936885d17be419051a\
27515f037fbb052d7010ebe01634d9e8b8b522d9ab4749fdc274f465369b89e360df8f70b7865a3c71\
2752d2dbcd2df19e9293dab1153d3d63fcb7deb559b684dde6c6eed63214444807041c9a0ce3f52ca4\
275339ec16dd231995b5dc6f18e6801b6bd6454babccf9abbfacffb49c71e6494a4779cbfa550c5d71\
275444114e6fc193f460dcd0be7e6e06e546da7653770dc5859df87029e722dbe81361030569148d16\
275536988926bf0dcfe47c9d8a54698c08b3b5c70afe86b5c6f643463f8f34889d27d6cfd2d478c2d7\
2756b3d008a985c7380f0b43f10024b59c3543880883c42d0e7e0a07326ba3a
2757 Z = 10a30bacab82e652415376baffdbc008c7eb2e5a3aa68bc10ce486ca84983fd89b1b02\
27587bb40e75333406361005f5e756526a95fe01202df9217d81b1713d5187c368fdd4c9c2433d9e6c\
275918844769479b725c4140c92a304ee1bc5726d8f5321b5b1c54a1a6b67c527e6817c0ed613a0d4e\
276060db55de898788b7e8d4aa9a81ab5ed7f6282962c433d246ed640555bdd76d29c2874551264d74\
2761c76373f8a88871b41b041c98041b16f94f983ddf00f5bc7d2416d19168c90178974a0602436cd1\
276286748bcc63a629edc3a0db59415cccd37a65130ea477c89da92d41371f5972891cf41f9c7f0e75\
2763ccbff9893225384db30daa5e310f08e3e0fad98bcdf8ecf35fe5
2764 CAVSHashZZ = 014f5daea733d0e9e100f852e74d64a319f741cfbdb47975ab9dd3d0
2765 Result = F (3 - IUT's Static public key fails PKV 5.6.2.4)
2766
2767
2768 COUNT = 1
2769 XstatCAVS = 9ee22ac51664e40e0a24dbb94142dba40605e2b6eeaaa0268a0f6847
2770 YstatCAVS = c2630c9d38ed5c825d1c6a3eba7143f3fc8a049c8bcd1efc212d2af64eca99\
27714308208691d330aa8f27fc4a1e55de4e512113996d21375a667f8c26d76dee2f6809b15432a33f\
2772b735aca5c2263940f58712bded08f55443dee300b9489589e0462bd6bce19deaec4adc12fa61a6\
277394c8c5c999b28211d7835bac0ffd2b316850823e2dc1d1f58e05cbf75c673036d116b3f03b9687\
2774c89f9c2a0d43c4ffc9a605addbdcce0cb3790c6db846156bb857a7b3df40dc6ed04d19cc9eaebb\
27756bbc034e77c3d882a1a62317cce25b6130f0803e3bc49b5e36768260073a617034872be0b50bed\
277632740224beaf582d67fbcfef3b3ecc18f9c71c782e9a68495ef31dc7986e
2777 XstatIUT = 438093a468236658821bf64eb08456139963d4fb27121c3ed6c55876
2778 YstatIUT = e192da8e1244e27221c1765344a5bb379dce741d427a734b4bdb6c4d16b2490\
2779bd37564d745008e63ae46ef332331d79887ac63298ce143e125f8b320c0f859b7f5f2c1e0053e4\
2780a7a16997e6143ff702300c9863ae7caef5c1dfca0ecf5197c557745b793f0790a4fe678aeb93fd\
2781b52490d4f273a5553944dda3ac8b9b792c9b67f8d7b9496398e432a423ae87ebeba688be3ed67e\
2782ddd7575fa56431cd48579bf53c903bbe066dd78b23c0996ef3a880f0d91315104366a82f01abde\
2783cce96fd371f94e8420f8bc5b896c801df573554f749b03d0d28b1e1a990bc61c7e9659342ac7e2\
278468e9c0b7c40fdaab394f29cf0a54f780022f9a03b0bd28eb7db8b0b1b47
2785 Z = 56f8f40fa4b8f3580f9014b30d60a42933a53a62182a690142f458dc275c3b2f0e721b\
2786c5ee6e890b14516419110f5252ff1cceea8e274b2987aa78e3bae90c1935b276b7a1f1c944f79d\
27874774b7a85b3355bdf25cb02bddfbda4ee7918bc93a5c9ca6d7e8fdedbda8e6c8a6ca794bad055a\
278852b19c148958227344cbddd70271d4610316cfea1e559b0bc3a12d15023b30d9f2db602053a056\
27899c3bd2ce1faf59280ecd339f845dbcaaf2e883c5cc6263996f866b18b75d049d4c82097af8a5ce\
2790353e14416b3eeb31ba9bc4f6f3dbd846c5299fb5c0043a1b95b9149b39d14df9e6a69547abf8a4\
2791d518475576730ed528779366568e46b7dd4ed787cb72d0733c93
2792 CAVSHashZZ = 17dbbaa7a20c1390cd8cb3d31ee947bf9dde87739e067b9861ffeea9
2793 Result = P (0 - Correct)
2794 """).splitlines()
2795
2796 expected = [
2797 {
2798 'fail_agree': False,
2799 'fail_z': False,
2800 'g': int(
2801 "a51883e9ac0539859df3d25c716437008bb4bd8ec4786eb4bc643299daef5"
2802 "e3e5af5863a6ac40a597b83a27583f6a658d408825105b16d31b6ed088fc6"
2803 "23f648fd6d95e9cefcb0745763cddf564c87bcf4ba7928e74fd6a3080481f"
2804 "588d535e4c026b58a21e1e5ec412ff241b436043e29173f1dc6cb943c0974"
2805 "2de989547288", 16),
2806 'p': int(
2807 "da3a8085d372437805de95b88b675122f575df976610c6a844de99f1df82a"
2808 "06848bf7a42f18895c97402e81118e01a00d0855d51922f434c022350861d"
2809 "58ddf60d65bc6941fc6064b147071a4c30426d82fc90d888f94990267c64b"
2810 "eef8c304a4b2b26fb93724d6a9472fa16bc50c5b9b8b59afb62cfe9ea3ba0"
2811 "42c73a6ade35", 16),
2812 'q': 1386090807861091316803998193774751098153687863463,
2813 'x1': 381229709512864262422021151581620734547375903702,
2814 'x2': 479735944608461101114916716909067001453470352916,
2815 'y1': int(
2816 "5a7890f6d20ee9c7162cd84222cb0c7cb5b4f29244a58fc95327fc41045f4"
2817 "76fb3da42fca76a1dd59222a7a7c3872d5af7d8dc254e003eccdb38f29161"
2818 "9c51911df2b6ed67d0b459f4bc25819c0078777b9a1a24c72e7c037a3720a"
2819 "1edad5863ef5ac75ce816869c820859558d5721089ddbe331f55bef741396"
2820 "a3bbf85c6c1a", 16),
2821 'y2': int(
2822 "b92af0468b841ea5de4ca91d895b5e922245421de57ed7a88d2de41610b20"
2823 "8e8e233705f17b2e9eb91914bad2fa87f0a58519a7da2980bc06e7411c925"
2824 "a6050526bd86e621505e6f610b63fdcd9afcfaa96bd087afca44d9197cc35"
2825 "b559f731357a5b979250c0f3a254bb8165f5072156e3fd6f9a6e69bcf4b45"
2826 "78f78b3bde7", 16),
2827 'z': binascii.unhexlify(
2828 b"8d8f4175e16e15a42eb9099b11528af88741cc206a088971d3064bb291ed"
2829 b"a608d1600bff829624db258fd15e95d96d3e74c6be3232afe5c855b9c596"
2830 b"81ce13b7aea9ff2b16707e4c02f0e82bf6dadf2149ac62630f6c62dea0e5"
2831 b"05e3279404da5ffd5a088e8474ae0c8726b8189cb3d2f04baffe700be849"
2832 b"df9f91567fc2ebb8"
2833 )
2834 },
2835 {
2836 'fail_agree': False,
2837 'fail_z': False,
2838 'g': int(
2839 "a51883e9ac0539859df3d25c716437008bb4bd8ec4786eb4bc643299daef5"
2840 "e3e5af5863a6ac40a597b83a27583f6a658d408825105b16d31b6ed088fc6"
2841 "23f648fd6d95e9cefcb0745763cddf564c87bcf4ba7928e74fd6a3080481f"
2842 "588d535e4c026b58a21e1e5ec412ff241b436043e29173f1dc6cb943c0974"
2843 "2de989547288", 16),
2844 'p': int(
2845 "da3a8085d372437805de95b88b675122f575df976610c6a844de99f1df82a"
2846 "06848bf7a42f18895c97402e81118e01a00d0855d51922f434c022350861d"
2847 "58ddf60d65bc6941fc6064b147071a4c30426d82fc90d888f94990267c64b"
2848 "eef8c304a4b2b26fb93724d6a9472fa16bc50c5b9b8b59afb62cfe9ea3ba0"
2849 "42c73a6ade35", 16),
2850 'q': 1386090807861091316803998193774751098153687863463,
2851 'x1': int(
2852 "32e642683d745a23dccf4f12f989d8dfd1fd9894c422930950cb4c71",
2853 16),
2854 'x2': int(
2855 "7d8ae93df3bc09d399a4157ec562126acf51092c3269ab27f60a3a2b",
2856 16),
2857 'y1': int(
2858 "8cd371363b32fcc2e936e345f2278b77001f2efdf78512c3ee75c12f88507"
2859 "e2d5c0e5cdded3bb78435506c8028a3f4d6f028c0f49a0d61f1285795197e"
2860 "56deac80279e723f2b3746e213ac8ec60f1cefc2308ff17a7e9e2efab537e"
2861 "17406d2829fd85e0c54dda2d9f0b4fcda3d2776110e096a817588e19588b7"
2862 "7be8b41bafdd41ad91b0edf629333bd6ac1e461208ead124c31b8a7935c72"
2863 "3e1c450c5798dc05f8265ad9e35095ff112af9e889f00315fa337a76a4506"
2864 "70866eca12cc6ad0778576962eb9cdc12721d3c15e4d87b67488a145d4002"
2865 "40670eb26695a42879cd3940a55087f6527667277e1212a202dbe455c45c6"
2866 "4b9be4a38153557bbb8fd755", 16),
2867 'y2': int(
2868 "22127e9728e906ea4b1512c8b1e80474b58446210c23ccfc800f83c2c15da"
2869 "8159940e494b235266f6a9d5f80529067794f1a9edd566755d23d0a3060fe"
2870 "074c5a10122df3e472973bba39ea3a988e8387f5f0491e590b6b5edc299b4"
2871 "598ab1e79b72681a0be8cd8735a5adb85fa31310f29ec407c9654f1bb83bc"
2872 "df7f771b68d176817f662e8d798b53ebb4e5dd407b7b1d8fdb62ea9e1b60d"
2873 "6c3d75d9bcf83f4b8d1ed39408bd8d973b4ea81e8e832eac361dcd5307133"
2874 "88a60971ea9f8b1e69c1e99df1cca12bdaf293dacfa1419c5692ceffa9198"
2875 "8aef3321ac8cbc2efae6c4337c8808310fb5a240395a98e6004fe613c39e8"
2876 "4f4177341746d9e388dcb2e8", 16),
2877 'z': binascii.unhexlify(
2878 b"0efeaa399a182e0a603baf0dd95aa0fae5289ebd47d5f0f60c86bc936839"
2879 b"c31c9f7f37bf04f76ab02f4094a8ab10ed907ec7291585cc085c3e8981df"
2880 b"2bd46a01c19ec9a2f66709df1d4fefbeb48c8263554e46890f59eb642bf9"
2881 b"5ff7f0de70138621c22c4cc32be6c3d5c82c0c9a76a9f5a65bffe0c096a3"
2882 b"50f96a9da945d7e5095b15b566ce3cb8b0377cd9375b6c046afa9ea0bc08"
2883 b"46773445f16566b2c84cae4f6d212e89ee539a1ce7ea325273fd228053ef"
2884 b"ce2a585eb9e8f308b48cf4e29593b6f7a02e8625e1e8bff1ea1405f8c8c3"
2885 b"4b8339a9a99c7c9de4eb9895df7719ccda9394f53080eff1226f6b9c7ae0"
2886 b"a38941e18b1a137aabbb62308eb35ba2"
2887 )
2888 },
2889 {
2890 'fail_agree': False,
2891 'fail_z': True,
2892 'g': int(
2893 "a51883e9ac0539859df3d25c716437008bb4bd8ec4786eb4bc643299daef5"
2894 "e3e5af5863a6ac40a597b83a27583f6a658d408825105b16d31b6ed088fc6"
2895 "23f648fd6d95e9cefcb0745763cddf564c87bcf4ba7928e74fd6a3080481f"
2896 "588d535e4c026b58a21e1e5ec412ff241b436043e29173f1dc6cb943c0974"
2897 "2de989547288", 16),
2898 'p': int(
2899 "da3a8085d372437805de95b88b675122f575df976610c6a844de99f1df82a"
2900 "06848bf7a42f18895c97402e81118e01a00d0855d51922f434c022350861d"
2901 "58ddf60d65bc6941fc6064b147071a4c30426d82fc90d888f94990267c64b"
2902 "eef8c304a4b2b26fb93724d6a9472fa16bc50c5b9b8b59afb62cfe9ea3ba0"
2903 "42c73a6ade35", 16),
2904 'q': 1386090807861091316803998193774751098153687863463,
2905 'x1': int(
2906 "66502429aba271e2f2ee2197a2b336e5f0467f192aa28b60dcbf1194",
2907 16),
2908 'x2': int(
2909 "106b358be4f068348ac240ecbb454e5c39ca80b078cb0fafd856e9c5",
2910 16),
2911 'y1': int(
2912 "dfb001294215423d7146a2453cdb8598ccef01e1d931a913c3e4ed4a3cf38"
2913 "a912066c28e4eaf77dd80ff07183a6160bd95932f513402f864dcf7a70cbe"
2914 "dc9b60bbfbc67f72a83d5f6463a2b5a4fc906d3e921f5e1069126113265b4"
2915 "40e15ccf2d7164bad7131f1613fec35df7f470d45888e0c91be091f3f9552"
2916 "d670b8b7f479853193cb3c39f35fc7bd547ccb1bc579a67302b4ba948e6db"
2917 "51043d351bb74a952e6a694e6e7456f714c47d7c8eeeb4fd83ad93c86b784"
2918 "45f9393fdfd65c7dbd7fd6eba9794ddf183901b1d213321fd0ab3f7588ab0"
2919 "f6b3692f365a87131eda0e062505861988f6ce63150207545ecf9678e0971"
2920 "330253dfb7cfd546c5346fec", 16),
2921 'y2': int(
2922 "715d0781975b7b03162f4401c1eda343fd9bf1140006034573b31828a618c"
2923 "356163554cd27da956f7179a69e860fb6efeaa2e2aa9f1261506a8344c492"
2924 "9953621381b13d6426e152c0f2f94bfcd2b758eca24923596d427ed8f957e"
2925 "8bc9b1c7d21a87ef02222a1477cf3bfaadc68106456ab9706026006eccd29"
2926 "0b21543de6bb97d5b8cf4ccee1c081a6d1dd27aaef060fa93888a47a4a416"
2927 "ad5c5bd490ea600e04379232fb1077fbf394f4579accdbe352714e25b8891"
2928 "6dca8d8f7e0c4ed9594f7693f656a235a2e88ebda48b0d557e32da9f12d2a"
2929 "4c3180f05b16b4fba9bec79278a3971b77f9223b5ab78b857e0376c500821"
2930 "1592c8c72d521373ee3b22b8", 16),
2931 'z': binascii.unhexlify(
2932 b"cf879ebd107bb877457809c3fc410218b7acba3c5967495a8f1c3370d57f"
2933 b"038a48dd69f9f69b9f4dd855e7c58a1e4ec32646a978266eb314db468ea1"
2934 b"dfcee8a85a1644a5732498c4fbcdf85098c6ed0ce12e431e99142fd23353"
2935 b"69b3f56620ada21aa69d883e82a0b5e35484dde32d17c2dc873f2cc5518e"
2936 b"b7fc19695dff9fc94c9d9432bb4b09d8180323cfc561ebc2d6eff8dd5f84"
2937 b"96f2b22377700a22bbfe61a6969c198129397454843e4fc3540026986039"
2938 b"665095490056287e4fc49e6cb3181cb2bf06444fd0040150271c9ce1f61c"
2939 b"13ecd5dd022194a2dbf3e1c7fbc6bd19497c7b888b4da613d28fa6f378a4"
2940 b"3369cb8795a1c823f7d6cf4d84bba578"
2941 )
2942 },
2943 {
2944 'fail_agree': True,
2945 'fail_z': False,
2946 'g': int(
2947 "35513ec441402b78353ab1bba550b21c76c89973885a627170262ef52497d"
2948 "5d137b8927a212aaab2f051198c90bb81dffd9eb10b36b7ca3b63565b4c10"
2949 "25aea3b5e9c4a348c9cfa17f3907a1e4469701c0dedb8a4b9e96c5965b1fb"
2950 "8c229b0c34baac774bf9dda4fc5ee8764358b3c84812878aab7464bc09e97"
2951 "aecab7d7e3fbb4870e2a3b89667a4158bf1ed1a90dfaf47019fbb52b1b963"
2952 "65bb4e1e9474993fe382fd23480dc875861be152997a621fdb7aef977ea5b"
2953 "4d3d74486b162dc28f95a64cf65587a919a57eef92934fc9410df7f09fa82"
2954 "f975328ed82ff29cc3e15a971f56f4ac2dcb289252575e02a6cdb7fcc6cdd"
2955 "d7b0dca9c422e63eb2b8f05", 16),
2956 'p': int(
2957 "f3722b9b911c6aede9eaeeaa406283de66a097f39a7225df6c3c916e57920"
2958 "d356e50478d307dbfd146bfb91b6f68ecbbcf54b3d19c33a4b17293fea3e3"
2959 "d6bff8ac4cca93a805386f062a8a27ae906ef5da94d279fd7b3d7289e0095"
2960 "6f76bae9c0d2b8d11742ca5809630632aae58f9c6dce00c7380581deffde2"
2961 "187b022f83c6ceaeaadb0844a17fcbb04039ca6843c91f0c9058b22434b26"
2962 "3c3dfda8de8429e087c5be97fc5c9db9526031ad3a218bd9916fb4a3c2796"
2963 "6d208b1e360014c01e95530c148fb3cd27e6a7250d3c3b81dcd220ca14548"
2964 "dbccf99ebb9e334db6bcd14e632c98dd3f9860af7ae450f1b7809b45f0ec1"
2965 "0e6f27672beebc9963befc73", 16),
2966 'q': int(
2967 "a9a17de95a29091bf8e07dab53ea1aba9403be3c61027c6c8f48bac5",
2968 16),
2969 'x1': int(
2970 "1610eaa4e0ccc8857e2b53149e008492b1fbd9025a6e8d95aaee9c0f",
2971 16),
2972 'x2': int(
2973 "c4c83d75b27864b052cadc556e500e25aabf0c9d1bc01f0e1fe3862",
2974 16),
2975 'y1': int(
2976 "51ee21cd9f97015180f258fad5c94ff5a458806b1412087236bf77fe87aae"
2977 "1a36735816ed6e2160a731159814b6ae1f3f52c478dd9207094adfb62f766"
2978 "7d5c366327e66d23096395e938504db330953a708015f861fe9d948761109"
2979 "3b9fe7327518a7cc15994ab573313e154117c1a3ae88b8bdd1e316748249e"
2980 "4a9cbd1947f159836d13613d1f9449fc3442171d1970bc28958c1cafa2776"
2981 "a6f14ccdb29db02f64911bd83bfdcdfc843dd14a4cab9acb0bda8b293d2f5"
2982 "f7050768e57533cbc415a29e6f31cc365e107f91ae3722484e2c7329a85af"
2983 "69055a5a104da37e810878896d1b247b02b75234ecff82b1958f42d7b0316"
2984 "22e9394c98b5229112f7f620", 16),
2985 'y2': int(
2986 "467a857337a82472a1307a64dccc8e9994c5c63ec4312936885d17be41905"
2987 "1a5f037fbb052d7010ebe01634d9e8b8b522d9ab4749fdc274f465369b89e"
2988 "360df8f70b7865a3c71d2dbcd2df19e9293dab1153d3d63fcb7deb559b684"
2989 "dde6c6eed63214444807041c9a0ce3f52ca439ec16dd231995b5dc6f18e68"
2990 "01b6bd6454babccf9abbfacffb49c71e6494a4779cbfa550c5d7144114e6f"
2991 "c193f460dcd0be7e6e06e546da7653770dc5859df87029e722dbe81361030"
2992 "569148d1636988926bf0dcfe47c9d8a54698c08b3b5c70afe86b5c6f64346"
2993 "3f8f34889d27d6cfd2d478c2d7b3d008a985c7380f0b43f10024b59c35438"
2994 "80883c42d0e7e0a07326ba3a", 16),
2995 'z': binascii.unhexlify(
2996 b"10a30bacab82e652415376baffdbc008c7eb2e5a3aa68bc10ce486ca8498"
2997 b"3fd89b1b027bb40e75333406361005f5e756526a95fe01202df9217d81b1"
2998 b"713d5187c368fdd4c9c2433d9e6c18844769479b725c4140c92a304ee1bc"
2999 b"5726d8f5321b5b1c54a1a6b67c527e6817c0ed613a0d4e60db55de898788"
3000 b"b7e8d4aa9a81ab5ed7f6282962c433d246ed640555bdd76d29c287455126"
3001 b"4d74c76373f8a88871b41b041c98041b16f94f983ddf00f5bc7d2416d191"
3002 b"68c90178974a0602436cd186748bcc63a629edc3a0db59415cccd37a6513"
3003 b"0ea477c89da92d41371f5972891cf41f9c7f0e75ccbff9893225384db30d"
3004 b"aa5e310f08e3e0fad98bcdf8ecf35fe5"
3005 )
3006 },
3007 {
3008 'fail_agree': False,
3009 'fail_z': False,
3010 'g': int("35513ec441402b78353ab1bba550b21c76c89973885a627170262ef5"
3011 "2497d5d137b8927a212aaab2f051198c90bb81dffd9eb10b36b7ca3b"
3012 "63565b4c1025aea3b5e9c4a348c9cfa17f3907a1e4469701c0dedb8a"
3013 "4b9e96c5965b1fb8c229b0c34baac774bf9dda4fc5ee8764358b3c84"
3014 "812878aab7464bc09e97aecab7d7e3fbb4870e2a3b89667a4158bf1e"
3015 "d1a90dfaf47019fbb52b1b96365bb4e1e9474993fe382fd23480dc87"
3016 "5861be152997a621fdb7aef977ea5b4d3d74486b162dc28f95a64cf6"
3017 "5587a919a57eef92934fc9410df7f09fa82f975328ed82ff29cc3e15"
3018 "a971f56f4ac2dcb289252575e02a6cdb7fcc6cddd7b0dca9c422e63e"
3019 "b2b8f05", 16),
3020 'p': int("f3722b9b911c6aede9eaeeaa406283de66a097f39a7225df6c3c916e"
3021 "57920d356e50478d307dbfd146bfb91b6f68ecbbcf54b3d19c33a4b1"
3022 "7293fea3e3d6bff8ac4cca93a805386f062a8a27ae906ef5da94d279"
3023 "fd7b3d7289e00956f76bae9c0d2b8d11742ca5809630632aae58f9c6"
3024 "dce00c7380581deffde2187b022f83c6ceaeaadb0844a17fcbb04039"
3025 "ca6843c91f0c9058b22434b263c3dfda8de8429e087c5be97fc5c9db"
3026 "9526031ad3a218bd9916fb4a3c27966d208b1e360014c01e95530c14"
3027 "8fb3cd27e6a7250d3c3b81dcd220ca14548dbccf99ebb9e334db6bcd"
3028 "14e632c98dd3f9860af7ae450f1b7809b45f0ec10e6f27672beebc99"
3029 "63befc73", 16),
3030 'q': int(
3031 "a9a17de95a29091bf8e07dab53ea1aba9403be3c61027c6c8f48bac5",
3032 16),
3033 'x1': int(
3034 "9ee22ac51664e40e0a24dbb94142dba40605e2b6eeaaa0268a0f6847",
3035 16),
3036 'x2': int(
3037 "438093a468236658821bf64eb08456139963d4fb27121c3ed6c55876",
3038 16),
3039 'y1': int(
3040 "c2630c9d38ed5c825d1c6a3eba7143f3fc8a049c8bcd1efc212d2af64eca9"
3041 "94308208691d330aa8f27fc4a1e55de4e512113996d21375a667f8c26d76d"
3042 "ee2f6809b15432a33fb735aca5c2263940f58712bded08f55443dee300b94"
3043 "89589e0462bd6bce19deaec4adc12fa61a694c8c5c999b28211d7835bac0f"
3044 "fd2b316850823e2dc1d1f58e05cbf75c673036d116b3f03b9687c89f9c2a0"
3045 "d43c4ffc9a605addbdcce0cb3790c6db846156bb857a7b3df40dc6ed04d19"
3046 "cc9eaebb6bbc034e77c3d882a1a62317cce25b6130f0803e3bc49b5e36768"
3047 "260073a617034872be0b50bed32740224beaf582d67fbcfef3b3ecc18f9c7"
3048 "1c782e9a68495ef31dc7986e", 16),
3049 'y2': int(
3050 "e192da8e1244e27221c1765344a5bb379dce741d427a734b4bdb6c4d16b24"
3051 "90bd37564d745008e63ae46ef332331d79887ac63298ce143e125f8b320c0"
3052 "f859b7f5f2c1e0053e4a7a16997e6143ff702300c9863ae7caef5c1dfca0e"
3053 "cf5197c557745b793f0790a4fe678aeb93fdb52490d4f273a5553944dda3a"
3054 "c8b9b792c9b67f8d7b9496398e432a423ae87ebeba688be3ed67eddd7575f"
3055 "a56431cd48579bf53c903bbe066dd78b23c0996ef3a880f0d91315104366a"
3056 "82f01abdecce96fd371f94e8420f8bc5b896c801df573554f749b03d0d28b"
3057 "1e1a990bc61c7e9659342ac7e268e9c0b7c40fdaab394f29cf0a54f780022"
3058 "f9a03b0bd28eb7db8b0b1b47", 16),
3059 'z': binascii.unhexlify(
3060 b"56f8f40fa4b8f3580f9014b30d60a42933a53a62182a690142f458dc275c"
3061 b"3b2f0e721bc5ee6e890b14516419110f5252ff1cceea8e274b2987aa78e3"
3062 b"bae90c1935b276b7a1f1c944f79d4774b7a85b3355bdf25cb02bddfbda4e"
3063 b"e7918bc93a5c9ca6d7e8fdedbda8e6c8a6ca794bad055a52b19c14895822"
3064 b"7344cbddd70271d4610316cfea1e559b0bc3a12d15023b30d9f2db602053"
3065 b"a0569c3bd2ce1faf59280ecd339f845dbcaaf2e883c5cc6263996f866b18"
3066 b"b75d049d4c82097af8a5ce353e14416b3eeb31ba9bc4f6f3dbd846c5299f"
3067 b"b5c0043a1b95b9149b39d14df9e6a69547abf8a4d518475576730ed52877"
3068 b"9366568e46b7dd4ed787cb72d0733c93"
3069 )
3070 }
3071 ]
3072
3073 assert expected == load_kasvs_dh_vectors(vector_data)
3074
3075
Mohammed Attia0fb5d852014-04-21 10:31:15 +02003076def test_vector_version():
3077 assert cryptography.__version__ == cryptography_vectors.__version__
3078
3079
3080def test_raises_unsupported_algorithm_wrong_type():
3081 # Check that it raises if the wrong type of exception is raised.
3082 class TestException(Exception):
3083 pass
3084
3085 with pytest.raises(TestException):
3086 with raises_unsupported_algorithm(None):
3087 raise TestException
3088
3089
3090def test_raises_unsupported_algorithm_wrong_reason():
3091 # Check that it fails if the wrong reason code is raised.
3092 with pytest.raises(AssertionError):
3093 with raises_unsupported_algorithm(None):
3094 raise UnsupportedAlgorithm("An error.",
3095 _Reasons.BACKEND_MISSING_INTERFACE)
3096
3097
3098def test_raises_unsupported_no_exc():
3099 # Check that it fails if no exception is raised.
3100 with pytest.raises(pytest.fail.Exception):
3101 with raises_unsupported_algorithm(
3102 _Reasons.BACKEND_MISSING_INTERFACE
3103 ):
3104 pass
3105
3106
3107def test_raises_unsupported_algorithm():
Alex Gaynor462bd602014-04-25 07:49:08 -07003108 # Check that it doesn't assert if the right things are raised.
Mohammed Attia0fb5d852014-04-21 10:31:15 +02003109 with raises_unsupported_algorithm(
3110 _Reasons.BACKEND_MISSING_INTERFACE
3111 ) as exc_info:
3112 raise UnsupportedAlgorithm("An error.",
3113 _Reasons.BACKEND_MISSING_INTERFACE)
3114 assert exc_info.type is UnsupportedAlgorithm