blob: 7d988c26c2ac3ce731d97b22c1e208d3fe1b5a48 [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 Gaynorab53bc52013-11-12 09:37:59 -080016import os
Donald Stufft9e1a48b2013-08-09 00:32:30 -040017import textwrap
18
Alex Gaynor2b3f9422013-12-24 21:55:24 -080019import pretend
20
Paul Kehrer79c16e92013-10-18 17:44:36 -050021import pytest
22
Alex Gaynorafdddca2013-10-21 21:00:20 -070023from .utils import (
Paul Kehrerf7f6a9f2013-11-11 20:43:52 -060024 load_nist_vectors, load_vectors_from_file, load_cryptrec_vectors,
Paul Kehrerd5c9f5a2014-02-15 22:17:14 -060025 load_hash_vectors, check_for_iface, check_backend_support,
Mohammed Attia987cc702014-03-12 16:07:21 +020026 select_backends, load_pkcs1_vectors, load_rsa_nist_vectors,
27 load_fips_dsa_key_pair_vectors
Alex Gaynorafdddca2013-10-21 21:00:20 -070028)
Donald Stufft9e1a48b2013-08-09 00:32:30 -040029
30
Alex Gaynor2b3f9422013-12-24 21:55:24 -080031class FakeInterface(object):
32 pass
33
34
Paul Kehrerc421e632014-01-18 09:22:21 -060035def test_select_one_backend():
Paul Kehrer34c075e2014-01-13 21:52:08 -050036 b1 = pretend.stub(name="b1")
37 b2 = pretend.stub(name="b2")
38 b3 = pretend.stub(name="b3")
39 backends = [b1, b2, b3]
40 name = "b2"
Paul Kehreraed9e172014-01-19 12:09:27 -060041 selected_backends = select_backends(name, backends)
42 assert len(selected_backends) == 1
43 assert selected_backends[0] == b2
Paul Kehrer34c075e2014-01-13 21:52:08 -050044
45
Paul Kehrerc421e632014-01-18 09:22:21 -060046def test_select_no_backend():
Paul Kehrer34c075e2014-01-13 21:52:08 -050047 b1 = pretend.stub(name="b1")
48 b2 = pretend.stub(name="b2")
49 b3 = pretend.stub(name="b3")
50 backends = [b1, b2, b3]
51 name = "back!"
52 with pytest.raises(ValueError):
Paul Kehrerc421e632014-01-18 09:22:21 -060053 select_backends(name, backends)
54
55
56def test_select_backends_none():
57 b1 = pretend.stub(name="b1")
58 b2 = pretend.stub(name="b2")
59 b3 = pretend.stub(name="b3")
60 backends = [b1, b2, b3]
61 name = None
Paul Kehreraed9e172014-01-19 12:09:27 -060062 selected_backends = select_backends(name, backends)
63 assert len(selected_backends) == 3
Paul Kehrerc421e632014-01-18 09:22:21 -060064
65
66def test_select_two_backends():
67 b1 = pretend.stub(name="b1")
68 b2 = pretend.stub(name="b2")
69 b3 = pretend.stub(name="b3")
70 backends = [b1, b2, b3]
71 name = "b2 ,b1 "
Paul Kehreraed9e172014-01-19 12:09:27 -060072 selected_backends = select_backends(name, backends)
73 assert len(selected_backends) == 2
74 assert selected_backends == [b1, b2]
Paul Kehrer34c075e2014-01-13 21:52:08 -050075
76
Alex Gaynor2b3f9422013-12-24 21:55:24 -080077def test_check_for_iface():
78 item = pretend.stub(keywords=["fake_name"], funcargs={"backend": True})
79 with pytest.raises(pytest.skip.Exception) as exc_info:
80 check_for_iface("fake_name", FakeInterface, item)
81 assert exc_info.value.args[0] == "True backend does not support fake_name"
82
83 item = pretend.stub(
84 keywords=["fake_name"],
85 funcargs={"backend": FakeInterface()}
86 )
87 check_for_iface("fake_name", FakeInterface, item)
88
89
Paul Kehrer60fc8da2013-12-26 20:19:34 -060090def test_check_backend_support_skip():
Paul Kehrer5a8fdf82013-12-26 20:13:45 -060091 supported = pretend.stub(
92 kwargs={"only_if": lambda backend: False, "skip_message": "Nope"}
93 )
94 item = pretend.stub(keywords={"supported": supported},
95 funcargs={"backend": True})
96 with pytest.raises(pytest.skip.Exception) as exc_info:
Paul Kehrer60fc8da2013-12-26 20:19:34 -060097 check_backend_support(item)
Paul Kehrerf03334e2014-01-02 23:16:14 -060098 assert exc_info.value.args[0] == "Nope (True)"
Paul Kehrer5a8fdf82013-12-26 20:13:45 -060099
100
Paul Kehrer60fc8da2013-12-26 20:19:34 -0600101def test_check_backend_support_no_skip():
Paul Kehrer5a8fdf82013-12-26 20:13:45 -0600102 supported = pretend.stub(
103 kwargs={"only_if": lambda backend: True, "skip_message": "Nope"}
104 )
105 item = pretend.stub(keywords={"supported": supported},
106 funcargs={"backend": True})
Paul Kehrer60fc8da2013-12-26 20:19:34 -0600107 assert check_backend_support(item) is None
Paul Kehrer5a8fdf82013-12-26 20:13:45 -0600108
109
Paul Kehrer60fc8da2013-12-26 20:19:34 -0600110def test_check_backend_support_no_backend():
Paul Kehrer5a8fdf82013-12-26 20:13:45 -0600111 supported = pretend.stub(
112 kwargs={"only_if": "notalambda", "skip_message": "Nope"}
113 )
114 item = pretend.stub(keywords={"supported": supported},
115 funcargs={})
Paul Kehrerec495502013-12-27 15:51:40 -0600116 with pytest.raises(ValueError):
Paul Kehrer60fc8da2013-12-26 20:19:34 -0600117 check_backend_support(item)
Paul Kehrer5a8fdf82013-12-26 20:13:45 -0600118
119
Alex Gaynorcf5fb332013-11-11 15:39:52 -0800120def test_load_nist_vectors():
Donald Stufft9e1a48b2013-08-09 00:32:30 -0400121 vector_data = textwrap.dedent("""
122 # CAVS 11.1
123 # Config info for aes_values
124 # AESVS GFSbox test data for CBC
125 # State : Encrypt and Decrypt
126 # Key Length : 128
127 # Generated on Fri Apr 22 15:11:33 2011
128
129 [ENCRYPT]
130
131 COUNT = 0
132 KEY = 00000000000000000000000000000000
133 IV = 00000000000000000000000000000000
134 PLAINTEXT = f34481ec3cc627bacd5dc3fb08f273e6
135 CIPHERTEXT = 0336763e966d92595a567cc9ce537f5e
136
137 COUNT = 1
138 KEY = 00000000000000000000000000000000
139 IV = 00000000000000000000000000000000
140 PLAINTEXT = 9798c4640bad75c7c3227db910174e72
141 CIPHERTEXT = a9a1631bf4996954ebc093957b234589
142
143 [DECRYPT]
144
145 COUNT = 0
146 KEY = 00000000000000000000000000000000
147 IV = 00000000000000000000000000000000
148 CIPHERTEXT = 0336763e966d92595a567cc9ce537f5e
149 PLAINTEXT = f34481ec3cc627bacd5dc3fb08f273e6
150
151 COUNT = 1
152 KEY = 00000000000000000000000000000000
153 IV = 00000000000000000000000000000000
154 CIPHERTEXT = a9a1631bf4996954ebc093957b234589
155 PLAINTEXT = 9798c4640bad75c7c3227db910174e72
156 """).splitlines()
157
Alex Gaynord3ce7032013-11-11 14:46:20 -0800158 assert load_nist_vectors(vector_data) == [
159 {
160 "key": b"00000000000000000000000000000000",
161 "iv": b"00000000000000000000000000000000",
162 "plaintext": b"f34481ec3cc627bacd5dc3fb08f273e6",
163 "ciphertext": b"0336763e966d92595a567cc9ce537f5e",
164 },
165 {
166 "key": b"00000000000000000000000000000000",
167 "iv": b"00000000000000000000000000000000",
168 "plaintext": b"9798c4640bad75c7c3227db910174e72",
169 "ciphertext": b"a9a1631bf4996954ebc093957b234589",
170 },
Alex Gaynor1fe70b12013-10-16 11:59:17 -0700171 {
172 "key": b"00000000000000000000000000000000",
173 "iv": b"00000000000000000000000000000000",
174 "plaintext": b"f34481ec3cc627bacd5dc3fb08f273e6",
175 "ciphertext": b"0336763e966d92595a567cc9ce537f5e",
176 },
177 {
178 "key": b"00000000000000000000000000000000",
179 "iv": b"00000000000000000000000000000000",
180 "plaintext": b"9798c4640bad75c7c3227db910174e72",
181 "ciphertext": b"a9a1631bf4996954ebc093957b234589",
182 },
Donald Stufft9e1a48b2013-08-09 00:32:30 -0400183 ]
184
185
Paul Kehrer6fb1a5a2014-01-29 13:44:07 -0600186def test_load_nist_vectors_with_null_chars():
187 vector_data = textwrap.dedent("""
188 COUNT = 0
189 KEY = thing\\0withnulls
190
191 COUNT = 1
192 KEY = 00000000000000000000000000000000
193 """).splitlines()
194
195 assert load_nist_vectors(vector_data) == [
196 {
197 "key": b"thing\x00withnulls",
198 },
199 {
200 "key": b"00000000000000000000000000000000",
201 },
202 ]
203
204
Paul Kehrer1951bf62013-09-15 12:05:43 -0500205def test_load_cryptrec_vectors():
206 vector_data = textwrap.dedent("""
207 # Vectors taken from http://info.isl.ntt.co.jp/crypt/eng/camellia/
208 # Download is t_camelia.txt
209
210 # Camellia with 128-bit key
211
212 K No.001 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
213
214 P No.001 : 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
215 C No.001 : 07 92 3A 39 EB 0A 81 7D 1C 4D 87 BD B8 2D 1F 1C
216
217 P No.002 : 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
218 C No.002 : 48 CD 64 19 80 96 72 D2 34 92 60 D8 9A 08 D3 D3
219
220 K No.002 : 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
221
222 P No.001 : 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
223 C No.001 : 07 92 3A 39 EB 0A 81 7D 1C 4D 87 BD B8 2D 1F 1C
224 """).splitlines()
225
226 assert load_cryptrec_vectors(vector_data) == [
Alex Gaynor1fe70b12013-10-16 11:59:17 -0700227 {
228 "key": b"00000000000000000000000000000000",
229 "plaintext": b"80000000000000000000000000000000",
230 "ciphertext": b"07923A39EB0A817D1C4D87BDB82D1F1C",
231 },
232 {
233 "key": b"00000000000000000000000000000000",
234 "plaintext": b"40000000000000000000000000000000",
235 "ciphertext": b"48CD6419809672D2349260D89A08D3D3",
236 },
237 {
238 "key": b"10000000000000000000000000000000",
239 "plaintext": b"80000000000000000000000000000000",
240 "ciphertext": b"07923A39EB0A817D1C4D87BDB82D1F1C",
241 },
Paul Kehrer1951bf62013-09-15 12:05:43 -0500242 ]
243
244
Donald Stufft3359d7e2013-10-19 19:33:06 -0400245def test_load_cryptrec_vectors_invalid():
246 vector_data = textwrap.dedent("""
247 # Vectors taken from http://info.isl.ntt.co.jp/crypt/eng/camellia/
248 # Download is t_camelia.txt
249
250 # Camellia with 128-bit key
251
252 E No.001 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
253 """).splitlines()
254
255 with pytest.raises(ValueError):
256 load_cryptrec_vectors(vector_data)
257
258
Paul Kehrer69e06522013-10-18 17:28:39 -0500259def test_load_hash_vectors():
260 vector_data = textwrap.dedent("""
261
262 # http://tools.ietf.org/html/rfc1321
Paul Kehrer87cd0db2013-10-18 18:01:26 -0500263 [irrelevant]
Paul Kehrer69e06522013-10-18 17:28:39 -0500264
265 Len = 0
266 Msg = 00
267 MD = d41d8cd98f00b204e9800998ecf8427e
268
269 Len = 8
270 Msg = 61
271 MD = 0cc175b9c0f1b6a831c399e269772661
272
273 Len = 24
274 Msg = 616263
275 MD = 900150983cd24fb0d6963f7d28e17f72
276
277 Len = 112
278 Msg = 6d65737361676520646967657374
279 MD = f96b697d7cb7938d525a2f31aaf161d0
280 """).splitlines()
281 assert load_hash_vectors(vector_data) == [
Paul Kehrer79c16e92013-10-18 17:44:36 -0500282 (b"", "d41d8cd98f00b204e9800998ecf8427e"),
283 (b"61", "0cc175b9c0f1b6a831c399e269772661"),
284 (b"616263", "900150983cd24fb0d6963f7d28e17f72"),
285 (b"6d65737361676520646967657374", "f96b697d7cb7938d525a2f31aaf161d0"),
Paul Kehrer69e06522013-10-18 17:28:39 -0500286 ]
287
288
Paul Kehrer0317b042013-10-28 17:34:27 -0500289def test_load_hmac_vectors():
290 vector_data = textwrap.dedent("""
291Len = 224
292# "Jefe"
293Key = 4a656665
294# "what do ya want for nothing?"
295Msg = 7768617420646f2079612077616e7420666f72206e6f7468696e673f
296MD = 750c783e6ab0b503eaa86e310a5db738
297 """).splitlines()
298 assert load_hash_vectors(vector_data) == [
299 (b"7768617420646f2079612077616e7420666f72206e6f7468696e673f",
300 "750c783e6ab0b503eaa86e310a5db738",
301 b"4a656665"),
302 ]
303
304
Paul Kehrer69e06522013-10-18 17:28:39 -0500305def test_load_hash_vectors_bad_data():
306 vector_data = textwrap.dedent("""
307 # http://tools.ietf.org/html/rfc1321
308
309 Len = 0
310 Msg = 00
311 UNKNOWN=Hello World
312 """).splitlines()
313 with pytest.raises(ValueError):
314 load_hash_vectors(vector_data)
315
Alex Gaynor41172ab2013-11-12 10:00:42 -0800316
Alex Gaynorab53bc52013-11-12 09:37:59 -0800317def test_load_vectors_from_file():
318 vectors = load_vectors_from_file(
319 os.path.join("ciphers", "Blowfish", "bf-cfb.txt"),
320 load_nist_vectors,
Paul Kehrer2b758672013-10-30 09:01:38 -0500321 )
Alex Gaynorab53bc52013-11-12 09:37:59 -0800322 assert vectors == [
323 {
Alex Gaynorc2f45d52013-11-12 09:50:25 -0800324 "key": b"0123456789ABCDEFF0E1D2C3B4A59687",
325 "iv": b"FEDCBA9876543210",
Alex Gaynorab53bc52013-11-12 09:37:59 -0800326 "plaintext": (
Alex Gaynorc2f45d52013-11-12 09:50:25 -0800327 b"37363534333231204E6F77206973207468652074696D6520666F722000"
Alex Gaynorab53bc52013-11-12 09:37:59 -0800328 ),
329 "ciphertext": (
Alex Gaynorc2f45d52013-11-12 09:50:25 -0800330 b"E73214A2822139CAF26ECF6D2EB9E76E3DA3DE04D1517200519D57A6C3"
Alex Gaynorab53bc52013-11-12 09:37:59 -0800331 ),
332 }
333 ]
Paul Kehrera43b6692013-11-12 15:35:49 -0600334
335
336def test_load_nist_gcm_vectors():
337 vector_data = textwrap.dedent("""
338 [Keylen = 128]
339 [IVlen = 96]
340 [PTlen = 0]
341 [AADlen = 0]
342 [Taglen = 128]
343
344 Count = 0
345 Key = 11754cd72aec309bf52f7687212e8957
346 IV = 3c819d9a9bed087615030b65
347 PT =
348 AAD =
349 CT =
350 Tag = 250327c674aaf477aef2675748cf6971
351
352 Count = 1
353 Key = 272f16edb81a7abbea887357a58c1917
354 IV = 794ec588176c703d3d2a7a07
355 PT =
356 AAD =
357 CT =
358 Tag = b6e6f197168f5049aeda32dafbdaeb
359
360 Count = 2
361 Key = a49a5e26a2f8cb63d05546c2a62f5343
362 IV = 907763b19b9b4ab6bd4f0281
363 CT =
364 AAD =
365 Tag = a2be08210d8c470a8df6e8fbd79ec5cf
366 FAIL
367
368 Count = 3
369 Key = 5c1155084cc0ede76b3bc22e9f7574ef
370 IV = 9549e4ba69a61cad7856efc1
371 PT = d1448fa852b84408e2dad8381f363de7
372 AAD = e98e9d9c618e46fef32660976f854ee3
373 CT = f78b60ca125218493bea1c50a2e12ef4
374 Tag = d72da7f5c6cf0bca7242c71835809449
375
376 [Keylen = 128]
377 [IVlen = 96]
378 [PTlen = 0]
379 [AADlen = 0]
380 [Taglen = 120]
381
382 Count = 0
383 Key = eac258e99c55e6ae8ef1da26640613d7
384 IV = 4e8df20faaf2c8eebe922902
385 CT =
386 AAD =
387 Tag = e39aeaebe86aa309a4d062d6274339
388 PT =
389
390 Count = 1
391 Key = 3726cf02fcc6b8639a5497652c94350d
392 IV = 55fef82cde693ce76efcc193
393 CT =
394 AAD =
395 Tag = 3d68111a81ed22d2ef5bccac4fc27f
396 FAIL
397
398 Count = 2
399 Key = f202299d5fd74f03b12d2119a6c4c038
400 IV = eec51e7958c3f20a1bb71815
401 CT =
402 AAD =
403 Tag = a81886b3fb26e51fca87b267e1e157
404 FAIL
405
406 Count = 3
407 Key = fd52925f39546b4c55ffb6b20c59898c
408 IV = f5cf3227444afd905a5f6dba
409 CT =
410 AAD =
411 Tag = 1665b0f1a0b456e1664cfd3de08ccd
412 PT =
Paul Kehrerc985dbb2013-11-18 14:11:55 -0600413
414 [Keylen = 128]
415 [IVlen = 8]
416 [PTlen = 104]
417 [AADlen = 0]
418 [Taglen = 128]
419
420 Count = 0
421 Key = 58fab7632bcf10d2bcee58520bf37414
422 IV = 3c
423 CT = 15c4db4cbb451211179d57017f
424 AAD =
425 Tag = eae841d4355feeb3f786bc86625f1e5b
426 FAIL
Paul Kehrera43b6692013-11-12 15:35:49 -0600427 """).splitlines()
428 assert load_nist_vectors(vector_data) == [
429 {'aad': b'',
Paul Kehrer749ac5b2013-11-18 18:12:41 -0600430 'pt': b'',
431 'iv': b'3c819d9a9bed087615030b65',
432 'tag': b'250327c674aaf477aef2675748cf6971',
433 'key': b'11754cd72aec309bf52f7687212e8957',
434 'ct': b''},
435 {'aad': b'',
436 'pt': b'',
437 'iv': b'794ec588176c703d3d2a7a07',
438 'tag': b'b6e6f197168f5049aeda32dafbdaeb',
439 'key': b'272f16edb81a7abbea887357a58c1917',
440 'ct': b''},
441 {'aad': b'',
442 'iv': b'907763b19b9b4ab6bd4f0281',
443 'tag': b'a2be08210d8c470a8df6e8fbd79ec5cf',
444 'key': b'a49a5e26a2f8cb63d05546c2a62f5343',
445 'ct': b'',
Paul Kehrerc985dbb2013-11-18 14:11:55 -0600446 'fail': True},
Paul Kehrer749ac5b2013-11-18 18:12:41 -0600447 {'aad': b'e98e9d9c618e46fef32660976f854ee3',
448 'pt': b'd1448fa852b84408e2dad8381f363de7',
449 'iv': b'9549e4ba69a61cad7856efc1',
450 'tag': b'd72da7f5c6cf0bca7242c71835809449',
451 'key': b'5c1155084cc0ede76b3bc22e9f7574ef',
452 'ct': b'f78b60ca125218493bea1c50a2e12ef4'},
Paul Kehrerc985dbb2013-11-18 14:11:55 -0600453 {'aad': b'',
Paul Kehrera43b6692013-11-12 15:35:49 -0600454 'pt': b'',
455 'iv': b'4e8df20faaf2c8eebe922902',
456 'tag': b'e39aeaebe86aa309a4d062d6274339',
457 'key': b'eac258e99c55e6ae8ef1da26640613d7',
458 'ct': b''},
459 {'aad': b'',
460 'iv': b'55fef82cde693ce76efcc193',
461 'tag': b'3d68111a81ed22d2ef5bccac4fc27f',
462 'key': b'3726cf02fcc6b8639a5497652c94350d',
463 'ct': b'',
464 'fail': True},
465 {'aad': b'',
466 'iv': b'eec51e7958c3f20a1bb71815',
467 'tag': b'a81886b3fb26e51fca87b267e1e157',
468 'key': b'f202299d5fd74f03b12d2119a6c4c038',
469 'ct': b'',
470 'fail': True},
471 {'aad': b'',
472 'pt': b'',
473 'iv': b'f5cf3227444afd905a5f6dba',
474 'tag': b'1665b0f1a0b456e1664cfd3de08ccd',
475 'key': b'fd52925f39546b4c55ffb6b20c59898c',
476 'ct': b''},
477 {'aad': b'',
Paul Kehrer749ac5b2013-11-18 18:12:41 -0600478 'iv': b'3c',
479 'tag': b'eae841d4355feeb3f786bc86625f1e5b',
480 'key': b'58fab7632bcf10d2bcee58520bf37414',
481 'ct': b'15c4db4cbb451211179d57017f',
Paul Kehrera43b6692013-11-12 15:35:49 -0600482 'fail': True},
Paul Kehrera43b6692013-11-12 15:35:49 -0600483 ]
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000484
485
486def test_load_pkcs1_vectors():
487 vector_data = textwrap.dedent("""
488 Test vectors for RSA-PSS
489 ========================
490
491 This file contains an extract of the original pss-vect.txt
492
493 Key lengths:
494
495 Key 8: 1031 bits
496 Key 9: 1536 bits
497 ===========================================================================
498
499 <snip>
500
501 # Example 8: A 1031-bit RSA key pair
502 # -----------------------------------
503
504
505 # Public key
506 # ----------
507
508 # Modulus:
509 49 53 70 a1 fb 18 54 3c 16 d3 63 1e 31 63 25 5d
510 f6 2b e6 ee e8 90 d5 f2 55 09 e4 f7 78 a8 ea 6f
511 bb bc df 85 df f6 4e 0d 97 20 03 ab 36 81 fb ba
512 6d d4 1f d5 41 82 9b 2e 58 2d e9 f2 a4 a4 e0 a2
513 d0 90 0b ef 47 53 db 3c ee 0e e0 6c 7d fa e8 b1
514 d5 3b 59 53 21 8f 9c ce ea 69 5b 08 66 8e de aa
515 dc ed 94 63 b1 d7 90 d5 eb f2 7e 91 15 b4 6c ad
516 4d 9a 2b 8e fa b0 56 1b 08 10 34 47 39 ad a0 73
517 3f
518
519 # Exponent:
520 01 00 01
521
522 # Private key
523 # -----------
524
525 # Modulus:
526 49 53 70 a1 fb 18 54 3c 16 d3 63 1e 31 63 25 5d
527 f6 2b e6 ee e8 90 d5 f2 55 09 e4 f7 78 a8 ea 6f
528 bb bc df 85 df f6 4e 0d 97 20 03 ab 36 81 fb ba
529 6d d4 1f d5 41 82 9b 2e 58 2d e9 f2 a4 a4 e0 a2
530 d0 90 0b ef 47 53 db 3c ee 0e e0 6c 7d fa e8 b1
531 d5 3b 59 53 21 8f 9c ce ea 69 5b 08 66 8e de aa
532 dc ed 94 63 b1 d7 90 d5 eb f2 7e 91 15 b4 6c ad
533 4d 9a 2b 8e fa b0 56 1b 08 10 34 47 39 ad a0 73
534 3f
535
536 # Public exponent:
537 01 00 01
538
539 # Exponent:
540 6c 66 ff e9 89 80 c3 8f cd ea b5 15 98 98 83 61
541 65 f4 b4 b8 17 c4 f6 a8 d4 86 ee 4e a9 13 0f e9
542 b9 09 2b d1 36 d1 84 f9 5f 50 4a 60 7e ac 56 58
543 46 d2 fd d6 59 7a 89 67 c7 39 6e f9 5a 6e ee bb
544 45 78 a6 43 96 6d ca 4d 8e e3 de 84 2d e6 32 79
545 c6 18 15 9c 1a b5 4a 89 43 7b 6a 61 20 e4 93 0a
546 fb 52 a4 ba 6c ed 8a 49 47 ac 64 b3 0a 34 97 cb
547 e7 01 c2 d6 26 6d 51 72 19 ad 0e c6 d3 47 db e9
548
549 # Prime 1:
550 08 da d7 f1 13 63 fa a6 23 d5 d6 d5 e8 a3 19 32
551 8d 82 19 0d 71 27 d2 84 6c 43 9b 0a b7 26 19 b0
552 a4 3a 95 32 0e 4e c3 4f c3 a9 ce a8 76 42 23 05
553 bd 76 c5 ba 7b e9 e2 f4 10 c8 06 06 45 a1 d2 9e
554 db
555
556 # Prime 2:
557 08 47 e7 32 37 6f c7 90 0f 89 8e a8 2e b2 b0 fc
558 41 85 65 fd ae 62 f7 d9 ec 4c e2 21 7b 97 99 0d
559 d2 72 db 15 7f 99 f6 3c 0d cb b9 fb ac db d4 c4
560 da db 6d f6 77 56 35 8c a4 17 48 25 b4 8f 49 70
561 6d
562
563 # Prime exponent 1:
564 05 c2 a8 3c 12 4b 36 21 a2 aa 57 ea 2c 3e fe 03
565 5e ff 45 60 f3 3d de bb 7a da b8 1f ce 69 a0 c8
566 c2 ed c1 65 20 dd a8 3d 59 a2 3b e8 67 96 3a c6
567 5f 2c c7 10 bb cf b9 6e e1 03 de b7 71 d1 05 fd
568 85
569
570 # Prime exponent 2:
571 04 ca e8 aa 0d 9f aa 16 5c 87 b6 82 ec 14 0b 8e
572 d3 b5 0b 24 59 4b 7a 3b 2c 22 0b 36 69 bb 81 9f
573 98 4f 55 31 0a 1a e7 82 36 51 d4 a0 2e 99 44 79
574 72 59 51 39 36 34 34 e5 e3 0a 7e 7d 24 15 51 e1
575 b9
576
577 # Coefficient:
578 07 d3 e4 7b f6 86 60 0b 11 ac 28 3c e8 8d bb 3f
579 60 51 e8 ef d0 46 80 e4 4c 17 1e f5 31 b8 0b 2b
580 7c 39 fc 76 63 20 e2 cf 15 d8 d9 98 20 e9 6f f3
581 0d c6 96 91 83 9c 4b 40 d7 b0 6e 45 30 7d c9 1f
582 3f
583
584 # RSA-PSS signing of 6 random messages with random salts
585 # -------------------------------------------------------
Paul Kehrerefca2802014-02-17 20:55:13 -0600586 # PSS Example 8.1
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000587
Paul Kehrerefca2802014-02-17 20:55:13 -0600588 # -----------------
589
590 # Message to be signed:
591 81 33 2f 4b e6 29 48 41 5e a1 d8 99 79 2e ea cf
592 6c 6e 1d b1 da 8b e1 3b 5c ea 41 db 2f ed 46 70
593 92 e1 ff 39 89 14 c7 14 25 97 75 f5 95 f8 54 7f
594 73 56 92 a5 75 e6 92 3a f7 8f 22 c6 99 7d db 90
595 fb 6f 72 d7 bb 0d d5 74 4a 31 de cd 3d c3 68 58
596 49 83 6e d3 4a ec 59 63 04 ad 11 84 3c 4f 88 48
597 9f 20 97 35 f5 fb 7f da f7 ce c8 ad dc 58 18 16
598 8f 88 0a cb f4 90 d5 10 05 b7 a8 e8 4e 43 e5 42
599 87 97 75 71 dd 99 ee a4 b1 61 eb 2d f1 f5 10 8f
600 12 a4 14 2a 83 32 2e db 05 a7 54 87 a3 43 5c 9a
601 78 ce 53 ed 93 bc 55 08 57 d7 a9 fb
602
603 # Salt:
604 1d 65 49 1d 79 c8 64 b3 73 00 9b e6 f6 f2 46 7b
605 ac 4c 78 fa
606
607 # Signature:
608 02 62 ac 25 4b fa 77 f3 c1 ac a2 2c 51 79 f8 f0
609 40 42 2b 3c 5b af d4 0a 8f 21 cf 0f a5 a6 67 cc
610 d5 99 3d 42 db af b4 09 c5 20 e2 5f ce 2b 1e e1
611 e7 16 57 7f 1e fa 17 f3 da 28 05 2f 40 f0 41 9b
612 23 10 6d 78 45 aa f0 11 25 b6 98 e7 a4 df e9 2d
613 39 67 bb 00 c4 d0 d3 5b a3 55 2a b9 a8 b3 ee f0
614 7c 7f ec db c5 42 4a c4 db 1e 20 cb 37 d0 b2 74
615 47 69 94 0e a9 07 e1 7f bb ca 67 3b 20 52 23 80
616 c5
617
618 # PSS Example 8.2
619
620 # -----------------
621
622 # Message to be signed:
623 e2 f9 6e af 0e 05 e7 ba 32 6e cc a0 ba 7f d2 f7
624 c0 23 56 f3 ce de 9d 0f aa bf 4f cc 8e 60 a9 73
625 e5 59 5f d9 ea 08
626
627 # Salt:
628 43 5c 09 8a a9 90 9e b2 37 7f 12 48 b0 91 b6 89
629 87 ff 18 38
630
631 # Signature:
632 27 07 b9 ad 51 15 c5 8c 94 e9 32 e8 ec 0a 28 0f
633 56 33 9e 44 a1 b5 8d 4d dc ff 2f 31 2e 5f 34 dc
634 fe 39 e8 9c 6a 94 dc ee 86 db bd ae 5b 79 ba 4e
635 08 19 a9 e7 bf d9 d9 82 e7 ee 6c 86 ee 68 39 6e
636 8b 3a 14 c9 c8 f3 4b 17 8e b7 41 f9 d3 f1 21 10
637 9b f5 c8 17 2f ad a2 e7 68 f9 ea 14 33 03 2c 00
638 4a 8a a0 7e b9 90 00 0a 48 dc 94 c8 ba c8 aa be
639 2b 09 b1 aa 46 c0 a2 aa 0e 12 f6 3f bb a7 75 ba
640 7e
641
642 # <snip>
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000643
644 # =============================================
645
646 # Example 9: A 1536-bit RSA key pair
647 # -----------------------------------
648
649
650 # Public key
651 # ----------
652
653 # Modulus:
654 e6 bd 69 2a c9 66 45 79 04 03 fd d0 f5 be b8 b9
655 bf 92 ed 10 00 7f c3 65 04 64 19 dd 06 c0 5c 5b
656 5b 2f 48 ec f9 89 e4 ce 26 91 09 97 9c bb 40 b4
657 a0 ad 24 d2 24 83 d1 ee 31 5a d4 cc b1 53 42 68
658 35 26 91 c5 24 f6 dd 8e 6c 29 d2 24 cf 24 69 73
659 ae c8 6c 5b f6 b1 40 1a 85 0d 1b 9a d1 bb 8c bc
660 ec 47 b0 6f 0f 8c 7f 45 d3 fc 8f 31 92 99 c5 43
661 3d db c2 b3 05 3b 47 de d2 ec d4 a4 ca ef d6 14
662 83 3d c8 bb 62 2f 31 7e d0 76 b8 05 7f e8 de 3f
663 84 48 0a d5 e8 3e 4a 61 90 4a 4f 24 8f b3 97 02
664 73 57 e1 d3 0e 46 31 39 81 5c 6f d4 fd 5a c5 b8
665 17 2a 45 23 0e cb 63 18 a0 4f 14 55 d8 4e 5a 8b
666
667 # Exponent:
668 01 00 01
669
670 # Private key
671 # -----------
672
673 # Modulus:
674 e6 bd 69 2a c9 66 45 79 04 03 fd d0 f5 be b8 b9
675 bf 92 ed 10 00 7f c3 65 04 64 19 dd 06 c0 5c 5b
676 5b 2f 48 ec f9 89 e4 ce 26 91 09 97 9c bb 40 b4
677 a0 ad 24 d2 24 83 d1 ee 31 5a d4 cc b1 53 42 68
678 35 26 91 c5 24 f6 dd 8e 6c 29 d2 24 cf 24 69 73
679 ae c8 6c 5b f6 b1 40 1a 85 0d 1b 9a d1 bb 8c bc
680 ec 47 b0 6f 0f 8c 7f 45 d3 fc 8f 31 92 99 c5 43
681 3d db c2 b3 05 3b 47 de d2 ec d4 a4 ca ef d6 14
682 83 3d c8 bb 62 2f 31 7e d0 76 b8 05 7f e8 de 3f
683 84 48 0a d5 e8 3e 4a 61 90 4a 4f 24 8f b3 97 02
684 73 57 e1 d3 0e 46 31 39 81 5c 6f d4 fd 5a c5 b8
685 17 2a 45 23 0e cb 63 18 a0 4f 14 55 d8 4e 5a 8b
686
687 # Public exponent:
688 01 00 01
689
690 # Exponent:
691 6a 7f d8 4f b8 5f ad 07 3b 34 40 6d b7 4f 8d 61
692 a6 ab c1 21 96 a9 61 dd 79 56 5e 9d a6 e5 18 7b
693 ce 2d 98 02 50 f7 35 95 75 35 92 70 d9 15 90 bb
694 0e 42 7c 71 46 0b 55 d5 14 10 b1 91 bc f3 09 fe
695 a1 31 a9 2c 8e 70 27 38 fa 71 9f 1e 00 41 f5 2e
696 40 e9 1f 22 9f 4d 96 a1 e6 f1 72 e1 55 96 b4 51
697 0a 6d ae c2 61 05 f2 be bc 53 31 6b 87 bd f2 13
698 11 66 60 70 e8 df ee 69 d5 2c 71 a9 76 ca ae 79
699 c7 2b 68 d2 85 80 dc 68 6d 9f 51 29 d2 25 f8 2b
700 3d 61 55 13 a8 82 b3 db 91 41 6b 48 ce 08 88 82
701 13 e3 7e eb 9a f8 00 d8 1c ab 32 8c e4 20 68 99
702 03 c0 0c 7b 5f d3 1b 75 50 3a 6d 41 96 84 d6 29
703
704 # Prime 1:
705 f8 eb 97 e9 8d f1 26 64 ee fd b7 61 59 6a 69 dd
706 cd 0e 76 da ec e6 ed 4b f5 a1 b5 0a c0 86 f7 92
707 8a 4d 2f 87 26 a7 7e 51 5b 74 da 41 98 8f 22 0b
708 1c c8 7a a1 fc 81 0c e9 9a 82 f2 d1 ce 82 1e dc
709 ed 79 4c 69 41 f4 2c 7a 1a 0b 8c 4d 28 c7 5e c6
710 0b 65 22 79 f6 15 4a 76 2a ed 16 5d 47 de e3 67
711
712 # Prime 2:
713 ed 4d 71 d0 a6 e2 4b 93 c2 e5 f6 b4 bb e0 5f 5f
714 b0 af a0 42 d2 04 fe 33 78 d3 65 c2 f2 88 b6 a8
715 da d7 ef e4 5d 15 3e ef 40 ca cc 7b 81 ff 93 40
716 02 d1 08 99 4b 94 a5 e4 72 8c d9 c9 63 37 5a e4
717 99 65 bd a5 5c bf 0e fe d8 d6 55 3b 40 27 f2 d8
718 62 08 a6 e6 b4 89 c1 76 12 80 92 d6 29 e4 9d 3d
719
720 # Prime exponent 1:
721 2b b6 8b dd fb 0c 4f 56 c8 55 8b ff af 89 2d 80
722 43 03 78 41 e7 fa 81 cf a6 1a 38 c5 e3 9b 90 1c
723 8e e7 11 22 a5 da 22 27 bd 6c de eb 48 14 52 c1
724 2a d3 d6 1d 5e 4f 77 6a 0a b5 56 59 1b ef e3 e5
725 9e 5a 7f dd b8 34 5e 1f 2f 35 b9 f4 ce e5 7c 32
726 41 4c 08 6a ec 99 3e 93 53 e4 80 d9 ee c6 28 9f
727
728 # Prime exponent 2:
729 4f f8 97 70 9f ad 07 97 46 49 45 78 e7 0f d8 54
730 61 30 ee ab 56 27 c4 9b 08 0f 05 ee 4a d9 f3 e4
731 b7 cb a9 d6 a5 df f1 13 a4 1c 34 09 33 68 33 f1
732 90 81 6d 8a 6b c4 2e 9b ec 56 b7 56 7d 0f 3c 9c
733 69 6d b6 19 b2 45 d9 01 dd 85 6d b7 c8 09 2e 77
734 e9 a1 cc cd 56 ee 4d ba 42 c5 fd b6 1a ec 26 69
735
736 # Coefficient:
737 77 b9 d1 13 7b 50 40 4a 98 27 29 31 6e fa fc 7d
738 fe 66 d3 4e 5a 18 26 00 d5 f3 0a 0a 85 12 05 1c
739 56 0d 08 1d 4d 0a 18 35 ec 3d 25 a6 0f 4e 4d 6a
740 a9 48 b2 bf 3d bb 5b 12 4c bb c3 48 92 55 a3 a9
741 48 37 2f 69 78 49 67 45 f9 43 e1 db 4f 18 38 2c
742 ea a5 05 df c6 57 57 bb 3f 85 7a 58 dc e5 21 56
743
Paul Kehrerefca2802014-02-17 20:55:13 -0600744 # PKCS#1 v1.5 Signature Example 2.17
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000745
Paul Kehrerefca2802014-02-17 20:55:13 -0600746 # -----------------
747
748 # Message to be signed:
749 06 ad d7 5a b6 89 de 06 77 44 e6 9a 2e bd 4b 90
750 fa 93 83 00 3c d0 5f f5 36 cb f2 94 cd 21 5f 09
751 23 b7 fc 90 04 f0 aa 18 52 71 a1 d0 06 1f d0 e9
752 77 7a d1 ec 0c 71 59 1f 57 8b f7 b8 e5 a1
753
754 # Signature:
755 45 14 21 0e 54 1d 5b ad 7d d6 0a e5 49 b9 43 ac
756 c4 4f 21 39 0d f5 b6 13 18 45 5a 17 61 0d f5 b7
757 4d 84 ae d2 32 f1 7e 59 d9 1d d2 65 99 22 f8 12
758 db d4 96 81 69 03 84 b9 54 e9 ad fb 9b 1a 96 8c
759 0c bf f7 63 ec ee d6 27 50 c5 91 64 b5 e0 80 a8
760 fe f3 d5 5b fe 2a cf ad 27 52 a6 a8 45 9f a1 fa
761 b4 9a d3 78 c6 96 4b 23 ee 97 fd 10 34 61 0c 5c
762 c1 4c 61 e0 eb fb 17 11 f8 ad e9 6f e6 55 7b 38
763
764 # <snip>
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000765
766 # =============================================
767
Paul Kehrerefca2802014-02-17 20:55:13 -0600768 # <snip>
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000769 """).splitlines()
770
771 vectors = tuple(load_pkcs1_vectors(vector_data))
772 expected = (
773 (
774 {
775 'modulus': int(
776 '495370a1fb18543c16d3631e3163255df62be6eee890d5f25509e4f77'
777 '8a8ea6fbbbcdf85dff64e0d972003ab3681fbba6dd41fd541829b2e58'
778 '2de9f2a4a4e0a2d0900bef4753db3cee0ee06c7dfae8b1d53b5953218'
779 'f9cceea695b08668edeaadced9463b1d790d5ebf27e9115b46cad4d9a'
780 '2b8efab0561b0810344739ada0733f', 16),
781 'public_exponent': int('10001', 16),
782 'private_exponent': int(
783 '6c66ffe98980c38fcdeab5159898836165f4b4b817c4f6a8d486ee4ea'
784 '9130fe9b9092bd136d184f95f504a607eac565846d2fdd6597a8967c7'
785 '396ef95a6eeebb4578a643966dca4d8ee3de842de63279c618159c1ab'
786 '54a89437b6a6120e4930afb52a4ba6ced8a4947ac64b30a3497cbe701'
787 'c2d6266d517219ad0ec6d347dbe9', 16),
788 'p': int(
789 '8dad7f11363faa623d5d6d5e8a319328d82190d7127d2846c439b0ab7'
790 '2619b0a43a95320e4ec34fc3a9cea876422305bd76c5ba7be9e2f410c'
791 '8060645a1d29edb', 16),
792 'q': int(
793 '847e732376fc7900f898ea82eb2b0fc418565fdae62f7d9ec4ce2217b'
794 '97990dd272db157f99f63c0dcbb9fbacdbd4c4dadb6df67756358ca41'
Paul Kehrer09328bb2014-02-12 23:57:27 -0600795 '74825b48f49706d', 16),
796 'dmp1': int(
797 '05c2a83c124b3621a2aa57ea2c3efe035eff4560f33ddebb7adab81fc'
798 'e69a0c8c2edc16520dda83d59a23be867963ac65f2cc710bbcfb96ee1'
799 '03deb771d105fd85', 16),
800 'dmq1': int(
801 '04cae8aa0d9faa165c87b682ec140b8ed3b50b24594b7a3b2c220b366'
802 '9bb819f984f55310a1ae7823651d4a02e99447972595139363434e5e3'
803 '0a7e7d241551e1b9', 16),
804 'iqmp': int(
805 '07d3e47bf686600b11ac283ce88dbb3f6051e8efd04680e44c171ef53'
806 '1b80b2b7c39fc766320e2cf15d8d99820e96ff30dc69691839c4b40d7'
Paul Kehrerefca2802014-02-17 20:55:13 -0600807 'b06e45307dc91f3f', 16),
808 'examples': [
809 {
Paul Kehrer26811802014-02-19 16:32:11 -0600810 'message': b'81332f4be62948415ea1d899792eeacf6c6e1db1d'
811 b'a8be13b5cea41db2fed467092e1ff398914c71425'
812 b'9775f595f8547f735692a575e6923af78f22c6997'
813 b'ddb90fb6f72d7bb0dd5744a31decd3dc368584983'
814 b'6ed34aec596304ad11843c4f88489f209735f5fb7'
815 b'fdaf7cec8addc5818168f880acbf490d51005b7a8'
816 b'e84e43e54287977571dd99eea4b161eb2df1f5108'
817 b'f12a4142a83322edb05a75487a3435c9a78ce53ed'
818 b'93bc550857d7a9fb',
819 'salt': b'1d65491d79c864b373009be6f6f2467bac4c78fa',
820 'signature': b'0262ac254bfa77f3c1aca22c5179f8f040422b3'
821 b'c5bafd40a8f21cf0fa5a667ccd5993d42dbafb4'
822 b'09c520e25fce2b1ee1e716577f1efa17f3da280'
823 b'52f40f0419b23106d7845aaf01125b698e7a4df'
824 b'e92d3967bb00c4d0d35ba3552ab9a8b3eef07c7'
825 b'fecdbc5424ac4db1e20cb37d0b2744769940ea9'
826 b'07e17fbbca673b20522380c5'
Paul Kehrerefca2802014-02-17 20:55:13 -0600827 }, {
Paul Kehrer26811802014-02-19 16:32:11 -0600828 'message': b'e2f96eaf0e05e7ba326ecca0ba7fd2f7c02356f3c'
829 b'ede9d0faabf4fcc8e60a973e5595fd9ea08',
830 'salt': b'435c098aa9909eb2377f1248b091b68987ff1838',
831 'signature': b'2707b9ad5115c58c94e932e8ec0a280f56339e4'
832 b'4a1b58d4ddcff2f312e5f34dcfe39e89c6a94dc'
833 b'ee86dbbdae5b79ba4e0819a9e7bfd9d982e7ee6'
834 b'c86ee68396e8b3a14c9c8f34b178eb741f9d3f1'
835 b'21109bf5c8172fada2e768f9ea1433032c004a8'
836 b'aa07eb990000a48dc94c8bac8aabe2b09b1aa46'
837 b'c0a2aa0e12f63fbba775ba7e'
Paul Kehrerefca2802014-02-17 20:55:13 -0600838 }
839 ]
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000840 },
841
842 {
843 'modulus': int(
844 '495370a1fb18543c16d3631e3163255df62be6eee890d5f25509e4f77'
845 '8a8ea6fbbbcdf85dff64e0d972003ab3681fbba6dd41fd541829b2e58'
846 '2de9f2a4a4e0a2d0900bef4753db3cee0ee06c7dfae8b1d53b5953218'
847 'f9cceea695b08668edeaadced9463b1d790d5ebf27e9115b46cad4d9a'
848 '2b8efab0561b0810344739ada0733f', 16),
849 'public_exponent': int('10001', 16)
850 }
851 ),
852 (
853 {
854 'modulus': int(
855 'e6bd692ac96645790403fdd0f5beb8b9bf92ed10007fc365046419dd0'
856 '6c05c5b5b2f48ecf989e4ce269109979cbb40b4a0ad24d22483d1ee31'
857 '5ad4ccb1534268352691c524f6dd8e6c29d224cf246973aec86c5bf6b'
858 '1401a850d1b9ad1bb8cbcec47b06f0f8c7f45d3fc8f319299c5433ddb'
859 'c2b3053b47ded2ecd4a4caefd614833dc8bb622f317ed076b8057fe8d'
860 'e3f84480ad5e83e4a61904a4f248fb397027357e1d30e463139815c6f'
861 'd4fd5ac5b8172a45230ecb6318a04f1455d84e5a8b', 16),
862 'public_exponent': int('10001', 16),
863 'private_exponent': int(
864 '6a7fd84fb85fad073b34406db74f8d61a6abc12196a961dd79565e9da'
865 '6e5187bce2d980250f7359575359270d91590bb0e427c71460b55d514'
866 '10b191bcf309fea131a92c8e702738fa719f1e0041f52e40e91f229f4'
867 'd96a1e6f172e15596b4510a6daec26105f2bebc53316b87bdf2131166'
868 '6070e8dfee69d52c71a976caae79c72b68d28580dc686d9f5129d225f'
869 '82b3d615513a882b3db91416b48ce08888213e37eeb9af800d81cab32'
870 '8ce420689903c00c7b5fd31b75503a6d419684d629', 16),
871 'p': int(
872 'f8eb97e98df12664eefdb761596a69ddcd0e76daece6ed4bf5a1b50ac'
873 '086f7928a4d2f8726a77e515b74da41988f220b1cc87aa1fc810ce99a'
874 '82f2d1ce821edced794c6941f42c7a1a0b8c4d28c75ec60b652279f61'
875 '54a762aed165d47dee367', 16),
876 'q': int(
877 'ed4d71d0a6e24b93c2e5f6b4bbe05f5fb0afa042d204fe3378d365c2f'
878 '288b6a8dad7efe45d153eef40cacc7b81ff934002d108994b94a5e472'
879 '8cd9c963375ae49965bda55cbf0efed8d6553b4027f2d86208a6e6b48'
Paul Kehrer09328bb2014-02-12 23:57:27 -0600880 '9c176128092d629e49d3d', 16),
881 'dmp1': int(
882 '2bb68bddfb0c4f56c8558bffaf892d8043037841e7fa81cfa61a38c5e'
883 '39b901c8ee71122a5da2227bd6cdeeb481452c12ad3d61d5e4f776a0a'
884 'b556591befe3e59e5a7fddb8345e1f2f35b9f4cee57c32414c086aec9'
885 '93e9353e480d9eec6289f', 16),
886 'dmq1': int(
887 '4ff897709fad079746494578e70fd8546130eeab5627c49b080f05ee4'
888 'ad9f3e4b7cba9d6a5dff113a41c3409336833f190816d8a6bc42e9bec'
889 '56b7567d0f3c9c696db619b245d901dd856db7c8092e77e9a1cccd56e'
890 'e4dba42c5fdb61aec2669', 16),
891 'iqmp': int(
892 '77b9d1137b50404a982729316efafc7dfe66d34e5a182600d5f30a0a8'
893 '512051c560d081d4d0a1835ec3d25a60f4e4d6aa948b2bf3dbb5b124c'
894 'bbc3489255a3a948372f6978496745f943e1db4f18382ceaa505dfc65'
Paul Kehrerefca2802014-02-17 20:55:13 -0600895 '757bb3f857a58dce52156', 16),
896 'examples': [
897 {
Paul Kehrer26811802014-02-19 16:32:11 -0600898 'message': b'06add75ab689de067744e69a2ebd4b90fa9383003'
899 b'cd05ff536cbf294cd215f0923b7fc9004f0aa1852'
900 b'71a1d0061fd0e9777ad1ec0c71591f578bf7b8e5a'
901 b'1',
902 'signature': b'4514210e541d5bad7dd60ae549b943acc44f213'
903 b'90df5b61318455a17610df5b74d84aed232f17e'
904 b'59d91dd2659922f812dbd49681690384b954e9a'
905 b'dfb9b1a968c0cbff763eceed62750c59164b5e0'
906 b'80a8fef3d55bfe2acfad2752a6a8459fa1fab49'
907 b'ad378c6964b23ee97fd1034610c5cc14c61e0eb'
908 b'fb1711f8ade96fe6557b38'
Paul Kehrerefca2802014-02-17 20:55:13 -0600909 }
910 ]
Alex Stapleton58f27ac2014-02-02 19:30:03 +0000911 },
912
913 {
914 'modulus': int(
915 'e6bd692ac96645790403fdd0f5beb8b9bf92ed10007fc365046419dd0'
916 '6c05c5b5b2f48ecf989e4ce269109979cbb40b4a0ad24d22483d1ee31'
917 '5ad4ccb1534268352691c524f6dd8e6c29d224cf246973aec86c5bf6b'
918 '1401a850d1b9ad1bb8cbcec47b06f0f8c7f45d3fc8f319299c5433ddb'
919 'c2b3053b47ded2ecd4a4caefd614833dc8bb622f317ed076b8057fe8d'
920 'e3f84480ad5e83e4a61904a4f248fb397027357e1d30e463139815c6f'
921 'd4fd5ac5b8172a45230ecb6318a04f1455d84e5a8b', 16),
922 'public_exponent': int('10001', 16)
923 }
924 )
925 )
926 assert vectors == expected
Ayrx4300f6c2014-02-09 15:15:13 +0800927
928
929def test_load_hotp_vectors():
930 vector_data = textwrap.dedent("""
931 # HOTP Test Vectors
932 # RFC 4226 Appendix D
933
934 COUNT = 0
935 COUNTER = 0
936 INTERMEDIATE = cc93cf18508d94934c64b65d8ba7667fb7cde4b0
937 TRUNCATED = 4c93cf18
938 HOTP = 755224
Ayrxefc68382014-02-10 00:01:05 +0800939 SECRET = 12345678901234567890
Ayrx4300f6c2014-02-09 15:15:13 +0800940
941 COUNT = 1
942 COUNTER = 1
943 INTERMEDIATE = 75a48a19d4cbe100644e8ac1397eea747a2d33ab
944 TRUNCATED = 41397eea
945 HOTP = 287082
Ayrxefc68382014-02-10 00:01:05 +0800946 SECRET = 12345678901234567890
947
Ayrx4300f6c2014-02-09 15:15:13 +0800948
949 COUNT = 2
950 COUNTER = 2
951 INTERMEDIATE = 0bacb7fa082fef30782211938bc1c5e70416ff44
952 TRUNCATED = 82fef30
953 HOTP = 359152
Ayrxefc68382014-02-10 00:01:05 +0800954 SECRET = 12345678901234567890
955
Ayrx4300f6c2014-02-09 15:15:13 +0800956
957 COUNT = 3
958 COUNTER = 3
959 INTERMEDIATE = 66c28227d03a2d5529262ff016a1e6ef76557ece
960 TRUNCATED = 66ef7655
961 HOTP = 969429
Ayrxefc68382014-02-10 00:01:05 +0800962 SECRET = 12345678901234567890
Ayrx4300f6c2014-02-09 15:15:13 +0800963 """).splitlines()
964
965 assert load_nist_vectors(vector_data) == [
966 {
967 "counter": b"0",
968 "intermediate": b"cc93cf18508d94934c64b65d8ba7667fb7cde4b0",
969 "truncated": b"4c93cf18",
970 "hotp": b"755224",
Ayrxefc68382014-02-10 00:01:05 +0800971 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +0800972 },
973 {
974 "counter": b"1",
975 "intermediate": b"75a48a19d4cbe100644e8ac1397eea747a2d33ab",
976 "truncated": b"41397eea",
977 "hotp": b"287082",
Ayrxefc68382014-02-10 00:01:05 +0800978 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +0800979 },
980 {
981 "counter": b"2",
982 "intermediate": b"0bacb7fa082fef30782211938bc1c5e70416ff44",
983 "truncated": b"82fef30",
984 "hotp": b"359152",
Ayrxefc68382014-02-10 00:01:05 +0800985 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +0800986 },
987 {
988 "counter": b"3",
989 "intermediate": b"66c28227d03a2d5529262ff016a1e6ef76557ece",
990 "truncated": b"66ef7655",
991 "hotp": b"969429",
Ayrxefc68382014-02-10 00:01:05 +0800992 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +0800993 },
994 ]
995
996
997def test_load_totp_vectors():
998 vector_data = textwrap.dedent("""
999 # TOTP Test Vectors
1000 # RFC 6238 Appendix B
1001
1002 COUNT = 0
1003 TIME = 59
1004 TOTP = 94287082
1005 MODE = SHA1
Ayrxefc68382014-02-10 00:01:05 +08001006 SECRET = 12345678901234567890
Ayrx4300f6c2014-02-09 15:15:13 +08001007
1008 COUNT = 1
1009 TIME = 59
1010 TOTP = 46119246
1011 MODE = SHA256
Ayrxefc68382014-02-10 00:01:05 +08001012 SECRET = 12345678901234567890
Ayrx4300f6c2014-02-09 15:15:13 +08001013
1014 COUNT = 2
1015 TIME = 59
1016 TOTP = 90693936
1017 MODE = SHA512
Ayrxefc68382014-02-10 00:01:05 +08001018 SECRET = 12345678901234567890
Ayrx4300f6c2014-02-09 15:15:13 +08001019 """).splitlines()
1020
1021 assert load_nist_vectors(vector_data) == [
1022 {
1023 "time": b"59",
1024 "totp": b"94287082",
1025 "mode": b"SHA1",
Ayrxefc68382014-02-10 00:01:05 +08001026 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +08001027 },
1028 {
1029 "time": b"59",
1030 "totp": b"46119246",
1031 "mode": b"SHA256",
Ayrxefc68382014-02-10 00:01:05 +08001032 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +08001033 },
1034 {
1035 "time": b"59",
1036 "totp": b"90693936",
1037 "mode": b"SHA512",
Ayrxefc68382014-02-10 00:01:05 +08001038 "secret": b"12345678901234567890",
Ayrx4300f6c2014-02-09 15:15:13 +08001039 },
1040 ]
Paul Kehrer2f2a2062014-03-10 23:30:28 -04001041
1042
1043def test_load_rsa_nist_vectors():
1044 vector_data = textwrap.dedent("""
1045 # SHA Algorithm selected:SHA1 SHA224 SHA256 SHA384 SHA512
1046 # Salt len: 20
1047
1048 [mod = 1024]
1049
1050 n = bcb47b2e0dafcba81ff2a2b5cb115ca7e757184c9d72bcdcda707a146b3b4e29989d
1051
1052 e = 00000000000000000000000000000000000000000000000000000000000000000010001
1053 SHAAlg = SHA1
1054 Msg = 1248f62a4389f42f7b4bb131053d6c88a994db2075b912ccbe3ea7dc611714f14e
1055 S = 682cf53c1145d22a50caa9eb1a9ba70670c5915e0fdfde6457a765de2a8fe12de97
1056
1057 SHAAlg = SHA384
1058 Msg = e511903c2f1bfba245467295ac95413ac4746c984c3750a728c388aa628b0ebf
1059 S = 9c748702bbcc1f9468864cd360c8c39d007b2d8aaee833606c70f7593cf0d1519
1060
1061 [mod = 1024]
1062
1063 n = 1234567890
1064
1065 e = 0010001
1066
1067 SHAAlg = SHA512
1068 Msg = 3456781293fab829
1069 S = deadbeef0000
1070 """).splitlines()
1071
1072 vectors = load_rsa_nist_vectors(vector_data)
1073 assert vectors == [
1074 {
1075 "modulus": int("bcb47b2e0dafcba81ff2a2b5cb115ca7e757184c9d72bcdcda"
1076 "707a146b3b4e29989d", 16),
1077 "public_exponent": 65537,
1078 "algorithm": b"SHA1",
1079 "salt_length": 20,
1080 "msg": b"1248f62a4389f42f7b4bb131053d6c88a994db2075b912ccbe3ea7dc6"
1081 b"11714f14e",
1082 "s": b"682cf53c1145d22a50caa9eb1a9ba70670c5915e0fdfde6457a765de2a8"
1083 b"fe12de97"
1084 },
1085 {
1086 "modulus": int("bcb47b2e0dafcba81ff2a2b5cb115ca7e757184c9d72bcdcda"
1087 "707a146b3b4e29989d", 16),
1088 "public_exponent": 65537,
1089 "algorithm": b"SHA384",
1090 "salt_length": 20,
1091 "msg": b"e511903c2f1bfba245467295ac95413ac4746c984c3750a728c388aa6"
1092 b"28b0ebf",
1093 "s": b"9c748702bbcc1f9468864cd360c8c39d007b2d8aaee833606c70f7593cf"
1094 b"0d1519"
1095 },
1096 {
1097 "modulus": 78187493520,
1098 "public_exponent": 65537,
1099 "algorithm": b"SHA512",
1100 "salt_length": 20,
1101 "msg": b"3456781293fab829",
1102 "s": b"deadbeef0000"
1103 },
1104 ]
Mohammed Attia987cc702014-03-12 16:07:21 +02001105
1106
1107def test_load_fips_dsa_key_pair_vectors():
1108 vector_data = textwrap.dedent("""
1109 # CAVS 11.1
1110 # "KeyPair" information
1111 # Mod sizes selected: L=1024, N=160:: L=2048, N=224 :: L=2048, N=256 :: L
1112=3072, N=256
1113 # Generated on Wed May 04 08:50:52 2011
1114
1115
1116 [mod = L=1024, N=160]
1117
1118 P = d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b725ef341eabb47cf8a7a\
11198a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b502e59050b5b21ce263dddb2044b65223\
11206f4d42ab4b5d6aa73189cef1ace778d7845a5c1c1c7147123188f8dc551054ee162b634d60f097\
1121f719076640e20980a0093113a8bd73
1122 Q = 96c5390a8b612c0e422bb2b0ea194a3ec935a281
1123 G = 06b7861abbd35cc89e79c52f68d20875389b127361ca66822138ce4991d2b862259d6b\
11244548a6495b195aa0e0b6137ca37eb23b94074d3c3d300042bdf15762812b6333ef7b07ceba7860\
11257610fcc9ee68491dbc1e34cd12615474e52b18bc934fb00c61d39e7da8902291c4434a4e2224c3\
1126f4fd9f93cd6f4f17fc076341a7e7d9
1127
1128 X = 8185fee9cc7c0e91fd85503274f1cd5a3fd15a49
1129 Y = 6f26d98d41de7d871b6381851c9d91fa03942092ab6097e76422070edb71db44ff5682\
113080fdb1709f8fc3feab39f1f824adaeb2a298088156ac31af1aa04bf54f475bdcfdcf2f8a2dd973\
1131e922d83e76f016558617603129b21c70bf7d0e5dc9e68fe332e295b65876eb9a12fe6fca9f1a1c\
1132e80204646bf99b5771d249a6fea627
1133
1134 X = 85322d6ea73083064376099ca2f65f56e8522d9b
1135 Y = 21f8690f717c9f4dcb8f4b6971de2f15b9231fcf41b7eeb997d781f240bfdddfd2090d\
113622083c26cca39bf37c9caf1ec89518ea64845a50d747b49131ffff6a2fd11ea7bacbb93c7d0513\
11377383a06365af82225dd3713ca5a45006316f53bd12b0e260d5f79795e5a4c9f353f12867a1d320\
11382394673ada8563b71555e53f415254
1139
1140 X = 8007aace9226517add3b31fb72fe57cf0b71de87
1141 Y = 0869599e9c233f98719353f50431b8cf9219443b245ccca95fcf81d757288b27b4ee08\
1142037f0a8ee5d997eecf7ddf1cae641fa0b24bb0e0fb97765166d92a79b1519cb9549431947ff58e\
1143de390c8fe2c44ff1fe9f8b15839d93cfd727dd0c2698ccf04f85f491d59a4e7fbf873122228af5\
1144c27095eea09d7d13b0d585c79c4849
1145
1146 X = 2f08cf0627c8ffbde07420c324e594170da5879e
1147 Y = 1f9098ddb4ec6f7a14841ae87792450292f210fb5a7a908117731b3c5f3d1694331a85\
1148a129b0b6b5363e61544c351799ef1fd9fdae6f7707b1ef55933192b03cc41a773d1e2c119fe592\
114905ce8f8c47f27ef0620c6892c61bb04907e00e6b82c81e1b77bb4e3f87562327555a226217aaaa\
11504e1d29bac7cc8cbebceee3895d8917
1151
1152 X = 423616c18872f9a3ae1db1f70302ae8decff0be9
1153 Y = b62df8a3635c8f5acdc92d710d920a643eb93010d003e6e61eee57d6a80ca5512bc1a0\
1154b689dd256a2ff1dcac4adb099ef66317de9c6b5188627c1f0aec54049d0bf1c8214c492d09ce82\
115543af9508c49493ea8d6f85d141850ebdabf6cbfeced92c1cc0b844227eedfc03e8650f89c2b6d1\
11561462d8cc5b78254574bbe558f2e724
1157
1158 X = 4c4489ee5a17f30eec191644ae28105aafb82307
1159 Y = 37fe0fdb5adec7bd56cdd68b1fc5669c292ae0c0c7c339aab844b7b83bc0118056274a\
11601f2b2bd4d4c8973458e86bddff94a6adb9b28d9a1f3ff0bc82972e3c8e452756ab7f921750f773\
1161d75c58346096ce2b804c57f2dee415471013d9a31d347960c42e5748d0feda02bdf0b22902103d\
1162e1591d9b5dcdfb18575d8c164031d1
1163
1164 X = 4ea539bf524cacbbf850ea20e18659db13c14cc1
1165 Y = 7d4b1d55c3cba4f1d7073afda9faed928d7653eac594ef2c84a7c83a77817e186a4706\
1166b4dae53f67fe7fc97e5915babda7398aec5a8afa302de1af67e709d6cc5cab6d19af8350273468\
116775758cedb5552494a85e8b2292f69cd2d665fc3375180f30110f5f9f03472ce431a64db795bce0\
11687b0d42bb0d22dc94182dd43c2dabe3
1169
1170 X = 272b5be463d69c564fb82e54b8824fd5622fd819
1171 Y = d133f99a7d8c5168f58a1f8be91e40d98446336533517289d40f0f6c974bbc3abd32de\
117281b92ab4c0d164b44271a884992d93104cca9e85acdec20717492e7cddd24f99146e59c16877cf\
11734a2f4fca669528b0e4a42b2154c09b4a15ac74d1aed9ca141b7fd6b8eeb5f315a88dfade013539\
1174f3ca61628411e89f0e6553ed18c03e
1175
1176 X = 49df2e11a4cab60b3d8f53a02bc8d982a52035e6
1177 Y = 555b359dd7998b8020f04f84f7e4ee3e7d7d2352d95b6d5bc51b96a2132bc1ac779652\
1178ccfbfb5b102edb3861aa98d4feba59f65bd0501755c5d0d894b031841365f2f4e9749b5850542d\
1179be82a3b5d614d93f34692087507d2972acdab700892bb847cb4e881998342b7230aef923a07b07\
1180563efbc053a300c0ea284d7f381da2
1181
1182 X = 06f5fe27b77fbdb24beb34f4fe13203e46ad8460
1183 Y = 881344b829c31389b4882c2fde977d73adb72e5001f41b57c7726b9ac99ef413d0fb5d\
1184f9ed587994c45580efa11d4445cea85b149e74f746308ee223c82263b14f4a2ec5ae971083dca7\
118525c5fb0ae233b67a4be60be8aca3f40c5bfaf9d9c4dc40d49dec1c4e539c88cddfce40106cb6f8\
11868fd094037fae75de54317ad4842cc1
1187
1188 [mod = L=2048, N=224]
1189
1190 P = 904ef8e31e14721910fa0969e77c99b79f190071a86026e37a887a6053960dbfb74390\
1191a6641319fe0af32c4e982934b0f1f4c5bc57534e8e56d77c36f0a99080c0d5bc9022fa34f58922\
119281d7b1009571cb5b35699303f912b276d86b1b0722fc0b1500f0ffb2e4d90867a3bdca181a9734\
1193617a8a9f991aa7c14dec1cf45ceba00600f8425440ed0c3b52c82e3aa831932a98b477da220867\
1194eb2d5e0ca34580b33b1b65e558411ed09c369f4717bf03b551787e13d9e47c267c91c697225265\
1195da157945cd8b32e84fc45b80533265239aa00a2dd3d05f5cb231b7daf724b7ecdce170360a8397\
11962e5be94626273d449f441be300a7345db387bebadad67d8060a7
1197 Q = d7d0a83e84d13032b830ed74a6a88592ec9a4cf42bf37080c6600aad
1198 G = 2050b18d3c9f39fac396c009310d6616f9309b67b59aef9aee813d6b4f12ee29ba8a6b\
1199350b11d4336d44b4641230002d870f1e6b1d8728bdd40262df0d2440999185ae077f7034c61679\
1200f4360fbb5d181569e7cb8acb04371c11ba55f1bbd777b74304b99b66d4405303e7120dc8bc4785\
1201f56e9533e65b63a0c77cce7bba0d5d6069df5edffa927c5a255a09405a008258ed93506a843366\
12022154f6f67e922d7c9788f04d4ec09581063950d9cde8e373ea59a58b2a6df6ba8663345574fabb\
1203a9ca981696d83aeac1f34f14f1a813ba900b3f0341dea23f7d3297f919a97e1ae00ac0728c93fe\
12040a88b66591baf4eb0bc6900f39ba5feb41cbbeea7eb7919aa4d3
1205
1206 X = 3f19424da3b4f0cafca3fc5019fcd225dd7e496ffdf6b77e364f45be
1207 Y = 7681ed0ac257ab7ff17c52de4638c0614749792707a0c0d23883697e34963df15c806f\
1208a6206f7fafb3269018e7703bd1e6f518d13544331a017713dbbe0cee8da6c095271fbf24edb74a\
120944e18b1d3b835622f68d31921c67c83e8479d1972ed0cb106c68188fe22c044254251ebf880b90\
121049dc3b7958ef61e1e67d2f677d2a7d2ab6b7c42b70cc5dedc3e5de7459a2dbc70c69008553d7ff\
1211b6bf81c012c8bd67bdddeaab9a4a4373027912a7c7d9cd9cfc6c81dffe0cc7a6d40c3b2065aee7\
1212be80e3c35497d64c8045bc511edaf7314c84c56bd9f0fecf62262ea5b45b49a0cffb223713bdbd\
12133ad03a25a0bb2211eba41ffcd08ab0e1ad485c29a3fc25ee8359
1214
1215 X = 241396352dd26efe0e2e184da52fe2b61d9d51b91b5009674c447854
1216 Y = 2f07a3aa9884c65288e5fef56c7b7f4445632273290bae6fcaab87c90058b2bef81ad3\
121734958657cf649ffb976d618b34ce69ef6d68c0d8bfe275cf097a301e8dd5595958e0c668c15f67\
1218b5c0b0d01983057ce61593635aab5e0564ed720b0336f055a86755c76be22df3b8487f16e2ba0b\
12195136fd30d7e3b1d30c3bd298d3acc0a1988a11756c94e9a53184d0d3edfbb649caf03eace3083d\
1220e9933921e627f4b2e011d1c79e45d8ea1eb7e4e59a1cbd8382b3238474eb949749c985200fbb25\
122141e2dce080aa881945d4d935076e48a0846dc5513bb4da8563b946af54f546455931e79c065ce7\
1222ca223a98f8fde40091d38eb2c3eb8e3b81d88374f3146b0afc42
1223
1224 X = 6597601e43fd515925142b0a74933737e59c3cd2aa80a794e10a389e
1225 Y = 04d040606f0f62d332a4fff2800200ae6c18baf01d3f6d1e9474fffb267e0388532420\
122621e3e2747345da8bb87c723cc1c9c446152b47b76044de0521a253d9f50b38f310bd3f5503d92e\
1227f78ba34c09988982ab8b8eabde78210cbaa68d18cf06b8fee156ffef4f85ce06af4e0515c77eba\
1228d16b7651273551d82732196cd7b180f747b2f9fa33ff198981ad095145207a726cac95117b2d02\
1229800e4d0bba1618dd2615393ecdd35c4ac45ac522ea3a6178691a51c3d83c352dfc762c22967560\
12305851ecfc14af915f220632f74b2f3f285c8ec3ef5df1df2e330f24a4e45e121455813ed7671c63\
1231c7efa5eb67a4387386e2d62b4c0006643526333185b341bdaf74
1232
1233 X = 0864c128bd440c2ae2c75818c3dd8638864c8986805229a8888b1fdd
1234 Y = 092501d654b604f0b8a1d979c43412ca43328b5bd5894b1f9c473b17892b02d01ef8ac\
123561fd4c677e132417e57a0425042097037041a0cc76969bf3fc793cb58148bbbd2e46cd53a617cf\
123657d514310d78c1aac2d45f70cf99185edee78416ef9f7e871c0454a78904a43eab19a62042038d\
1237a01d3e20cc564900ee917d2ba0aaf1797fcad1dff72d5b0dfd7a6a4818b352152c97d93a819237\
1238d8176b178aaa043be6809a92a7a529fc76e76df9083db8322b2140f84e507975bd7c11bc9d8f84\
1239d09e4756b60bdbd1d00d7761e45ce20c790fcc89ce9c611173750ccafc65e71c6be7bf04f8dcfc\
12401023aa6595df397906b968045abcf8d04ac7a8892ac660ed864b
1241
1242 X = 7b77e817e3cefa4534e7c64c6100acee0141af243a9da541727245ba
1243 Y = 302449ac7f32830c5ba247ed84c7164d9e868cbd93bd00bbd51afa84717f9c10f0984d\
1244c5a528ac2fe8d8db4852ddbd553dffb6edf424ae7fcf9c04480a1fbd4209d4cecc29f3f2ebfb8f\
12455afb64b8f3cb022a3e73065483e3ea40d323fa843ffb9f2ef1be94e1f027bc680491d510177ee1\
12467a217c67e60a0a4d731d03398d4c9c2b212ed5e71291369f19b1445f677d32f4c441a84f908ec9\
12471d0a1c53337349eb5a74f94e127b57fd4baed51f3db00a7c4bb30b76ef088613422be64cc9e289\
12488337e6cd58d06a17eaa99b7c3324badec0b559dbaf435a32f82ef9c5f2c4766870cc1b9275d3e9\
12496e6315c55cf4d13ded14d8172df84eba120da038f12b1bf92dc4
1250
1251 X = 12b57756670073de8bc9f25a5a9ac10cecb5a34945ece8c3cfeefbe5
1252 Y = 7001d0f2b7c07e7589c0c28311419177388a79fb74f7b761c79b9c33d7f516f51b56ba\
12539c227cab80c5dc3a334b0ffb952ddee23a733dd4100a207cf03ff0b96a180118df0f8fdeee5621\
125410d837a535476dfac4de2b9a22dada75ad30e8a0b2c40f78db89f78b7558066dc46fb51adc8e0c\
1255d5a43824a1bc80f46e1fcaf788e79631bfc0c93481c6f76b159043b846aee4ac94978baefe6398\
1256ecb1ea5873c64d972087d80b6f5a285c9f349341393bff6fc53ddaacf8222e21b2ad5a8d0a030c\
125771da771110d35db80500fccb2a778f76886b2c3187a41cf349b908cef0ce4e909cf3925535bde4\
12583b4162307207e2e4de23bc10381a769c4616eb0591de1fbe64f8
1259
1260 X = a9f140ea5c160405bd7b0024036556de7452eaa4e44553c99d36ace9
1261 Y = 51cf000e715c5710110448e73647e00d8760da9cc3eed625c08e8a049ef61f8c79e88e\
12620d28e3705c4031d95dcd05324007683cc65c981ea08c8698e84d291e20357899a44ae65ab98f7f\
12637e7047d43883266a56a69a445449c4c179156ed4a2f5495363bba0b6c88ec609fef584d77e3359\
1264186c45ed89b6353839a06c9a258e3ab01d7d88a671c796787c40e539f32013de4b2cbefabc8bb2\
12650a0f3c18657d11dbfb67787b818a9f75b1761bc0dd5f49d8e5f92b338f5cea0567f1dc7840df41\
1266ecfd1d49b2e1bb0f25ca8b90129076f57f1d137bcfca9be6dc4816b4413793c1e4deb97e545462\
126788ec5ebbfbad08e8ad30e1327437d709d54febcd4d403e0b5852
1268
1269 X = b865321afa5061d48c51fd3b5e2c0b3ab6bedcbe780ebc51ccceb3e0
1270 Y = 8b1e3f87a4a5e4b2fc6f5ea6301f48d7f82cb9608e866952177638050172dc5c7a7248\
12714e526bd6593265bea0b37ac4b471f9ebe8d23b9457f680bfe3a13babfe0051a5ff38bde37cc1f0\
127248c3a5169237d41e2952e64e363576b70910c29c56571dfd4c4ff4651eb43ed060e082155bc90d\
12730baa2b67c6cd27d6badaecf921a276c3a98a2297b789f0e1f574eada6cae30706dfe96aef9fb43\
127407509c47364ed81e2e1ac16b2c2f8e040ca00bcd3ad04a33ae562cbc3779a9cbb6fe6c51669d11\
127523cfd4d5687d5c9e46c1e0e9205e638ae18f737804dfacc578c3a4aad529ceeb4695c10ed24c09\
1276c88a2e723fc8bcc4a8cbd9c626245cfd1c6e2caef7abee1be824
1277
1278 X = 7aa8736a0b96f558c8998d65cc29dbf62f3172679b03f40ea60102d5
1279 Y = 6f675b01fac4ac2caac80cad0eda8ccc038c06ae8aa95ae5832f4e90ff744e73422a9d\
12805d53c109b056e2205d026bc8220098de413d46c3815aeafd83c1c2a111c4bde690be1c24bb95b5\
1281fec1917f5d2a86533bdb8d3beebde645fe0a849479ccc92145507b0e283c81056ca3cc97685fea\
12828040f1881975ca17d166494d08207bc9efd92c62f2bdc2cbd1be8bdc7cf479885e225466d09e73\
1283666c8d57c5e1ce3025f8912560adf769e54eb2167ccb69afbf958e178e8c0bbba55415b0f90d04\
12840789ed42be470b7171556d63799618f7eaf1a5bacfb8e8f5be4bda95a57822d96cdb3b454db927\
12854aac690879b66bda0672fc7fa6031ed40ac5b5a8ae5d0e4dd630
1286
1287 X = 7979f52dc7a4958f5075982e1c0c359dd398cec0a75ced7897834c4b
1288 Y = 0264508b83422b402936c841b21b14d328202c0138180b823d22291914b00d2c2f8e3b\
1289033da92e4b1f76b35332362117118404a66b5c87dec38957c2a15aa5d109d763be6a02f4389a26\
1290c300e70b626fc68fbd04e1b2de8b8090d1a5a8e0a08dd110965569852121dcf44f92275f033cde\
1291840896257645d9390ff95c0afa7a5b1085e3c02a481d5b3b304bd07007654c4daabb1993480cf8\
12922755a30bf9e66cf9d06f4ad75b7c2385682cc0719867ccd3e732a36ccd3275ddda126bc08e5093\
1293349dde5ef729a6f972648b8fc974107be92f57511dc903651d90a5f1939748769dba01f0b7afa1\
12943c18e6c38a255fbba0d7d1d0eb2fdd4d1f9e2b10a9b0f7cf095c
1295
1296 [mod = L=2048, N=256]
1297
1298 P = ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace5e9c41434c9cf0a8e9\
1299498acb0f4663c08b4484eace845f6fb17dac62c98e706af0fc74e4da1c6c2b3fbf5a1d58ff82fc\
13001a66f3e8b12252c40278fff9dd7f102eed2cb5b7323ebf1908c234d935414dded7f8d244e54561\
1301b0dca39b301de8c49da9fb23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cb\
1302b9ac247baba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6ecabf2\
13031bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6db2df0a908c36e95e60\
1304bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa66ef7
1305 Q = 8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b18f507192c19d
1306 G = e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6ccb6b1913413d344d1d\
13078d84a333839d88eee431521f6e357c16e6a93be111a98076739cd401bab3b9d565bf4fb99e9d18\
13085b1e14d61c93700133f908bae03e28764d107dcd2ea7674217622074bb19efff482f5f5c1a86d5\
1309551b2fc68d1c6e9d8011958ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b\
13104f197c322b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd74f13\
1311b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b629ddfa971f2ed273b14\
13126ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e558302
1313
1314 X = 405772da6e90d809e77d5de796562a2dd4dfd10ef00a83a3aba6bd818a0348a1
1315 Y = 6b32e31ab9031dc4dd0b5039a78d07826687ab087ae6de4736f5b0434e1253092e8a0b\
1316231f9c87f3fc8a4cb5634eb194bf1b638b7a7889620ce6711567e36aa36cda4604cfaa601a4591\
13178371d4ccf68d8b10a50a0460eb1dc0fff62ef5e6ee4d473e18ea4a66c196fb7e677a49b48241a0\
1318b4a97128eff30fa437050501a584f8771e7280d26d5af30784039159c11ebfea10b692fd0a5821\
13195eeb18bff117e13f08db792ed4151a218e4bed8dddfb0793225bd1e9773505166f4bd8cedbb286\
1320ea28232972da7bae836ba97329ba6b0a36508e50a52a7675e476d4d4137eae13f22a9d2fefde70\
13218ba8f34bf336c6e76331761e4b0617633fe7ec3f23672fb19d27
1322
1323 X = 0e0b95e31fda3f888059c46c3002ef8f2d6be112d0209aeb9e9545da67aeea80
1324 Y = 778082b77ddba6f56597cc74c3a612abf2ddbd85cc81430c99ab843c1f630b9db01399\
132565f563978164f9bf3a8397256be714625cd41cd7fa0067d94ea66d7e073f7125af692ad01371d4\
1326a17f4550590378f2b074030c20e36911598a1018772f61be3b24de4be5a388ccc09e15a92819c3\
13271dec50de9fde105b49eaa097b9d13d9219eeb33b628facfd1c78a7159c8430d0647c506e7e3de7\
13284763cb351eada72c00bef3c9641881e6254870c1e6599f8ca2f1bbb74f39a905e3a34e4544168e\
13296e50c9e3305fd09cab6ed4aff6fda6e0d5bf375c81ac9054406d9193b003c89272f1bd83d48250\
1330134b65c77c2b6332d38d34d9016f0e8975536ad6c348a1faedb0
1331
1332 X = 835fd2d1b7b03d90c5ebc073ee69b386c9c07ca06bce80bc574634af8d534f7a
1333 Y = cbc3feccf1ef62d31df626a4b2e234afdf1795443e46a471ec8b902b0ae9af36344120\
1334ed3ca6009751b03e8963a6151e7b2fe572837c3e23815d472ce75cfbaaaaf36e89a939983bd494\
1335f0421b0f35079e5a243672d708ca3492539733b2a847f638167f7d64c8dd7e3cc8b2f0e7a7fb4b\
13365d1eb4671378caab107c56cb19e4656c5dbb829a712aea8922d1086ffea567dadcf8b42a7d850c\
1337b3fab1ae7bbd095a6b55c89e1477cbd3780d99474ec70151f0043240a62f730e498310e64b892a\
133807c6716b9cbead0e826e8c545aa0d358d1588fd65d83059f237b9bd732a5a83507c9ce89dc9a98\
1339cbf9517a76cfc4c588d9d98c0520ba0a0b936e9f35821c31bb23
1340
1341 X = 30f59255791b2f1d8a28e612f9f838201abb68d2a1256830041e0e139088f585
1342 Y = 0ed9564e1d901e13dfb367c71859af2ec4cc2ed1e0007e9d6262ae1c84562f81ddbfa8\
13430ba8dad6d7dc70d38579929ac69d0fbe04143750f91741ccd690ddc3c743cae9589bd32147a677\
1344722ba1289a567ea724e20c5ec1e1621582932eada130b8a579d2ff3590bc70fe09721b0067965e\
1345f2b16fbc7d4739dc780592e5868c8ccd298082ada393654e26e7748177fb55e84509427dd14dc3\
1346f92e1c6a3e83eb705bf1537d08a0129f01e2c92234264efce0ec2164103999472631de238ddca8\
13474d25a6436caf75563085ba5843e2271bb9b12ee1cfa2dce94d681cda686d281c7ec10b6c4e44af\
1348f0bf54452416d76267e09eb2a73264433ee9dc72fdf4417c6f7d
1349
1350 X = 4d921f8c9e8ceeb7e5244b843a9a238af96818d760bd872ea3e7d3a37d7e97b5
1351 Y = 8b3907eccaaa1ff67705789dbf7e914af940353cda7d0da1d2564a030a5afd7a70d408\
135214b32b0092fe1a92ebf91f2a2c10e9fab9521d855fd8c18199018d5810c7ae7633829f85c739f2\
135343d51c3567449e8f500dd5aec8ff8e1bb3587bdcea9635e4e4b0215ab00d9ea6edd3c48579f257\
1354f63a95b85271925334bf73900c4e0e4f644379afc9f765354051a57bf37c939d2055d78919ab1b\
13551e9348d585bc73836cfea8310209940cded440fa131e873243029339f57d3a2c4f57ebee294a42\
1356a06f339dd9e635308755575801b418c5f83e23974b5b4c2f703a628b3fd83b398b5f271616492d\
1357f14efb7436ed630b4e39d40ab504935bbdbf9b82f25bbd09014e
1358
1359 X = 1b46dd4a0b6c3693a1f1e685dd529d6f99dec061d631c7c797ed9908f14b39aa
1360 Y = 27e21468657d4f6216e806b716ab87fd324a22d0df4d5e1c26bfc12676fc5db5cd1345\
1361d3e078428e5fcc7e03c6a6fb6c4e181bb561cdbdfe565f38ec384be183fc5a0930eb3a92cda25f\
13622867b05a7bd7d4d1a7739be9a75569eac9e98e4115ba415db505ef93c0e2b1e58789acd474e414\
13633dfe584ce1f1df6da01f5d3f9a27bba10cdf78737e7aa818daf753eae647477ef20283f5f62b0d\
13649b53f073281131ef3c692407724c5f61abbabcb24ab056236a7062004b2739c803f663d9999934\
136566b5fca3452d954b0edbbf7fefda6d40df8df7ed21f83885e44ebc511a70cb03d525bbe21dce5f\
1366fb28516441aea2f804301a6c2527265a3df0c411d48cd370fff4
1367
1368 X = 47eea9c0e8b43329262f3a0b617cd04db1cf159af2aba0ea06c2ee5b8a6c2d69
1369 Y = 65dad9740de9422632c4401df77b68a37fbe3db48aceadab7d9002770b38dc8297886c\
1370dde82fab71650944a692cf714f82841f4f5668ecbeb677744e398a558c5f72d087d26ee29b6324\
1371c8def060ed5c5fe4f10b215f4b04dde218fe023ae8fcb99be89ad9a1bb737ae73ae7180944de3f\
1372d6abc0d66b6832213a5db47469e6127394bc1fd5142e46438fa48f9774038a3ea312bf539c700f\
13737a486964abdde996cc0b7d84fec7ef4da121db184d2410d44e9ad9b1b95c3d71edf4a4ba1f29e9\
1374b8733097fa0c7e8a43141fd0a560f1675323c6ca4504ddb1ed1c2e5887c68f4eecf426f64ce222\
13752bb7a83e771dc27464fef02da9c7c78b2cc36a8aa34b2ab5555a
1376
1377 X = 7e15dc5a1fbfa404a40be5f94334d22d50c29550008d29daf16ec682fa29e10a
1378 Y = be5e833678b92b78dcbf83b9137329bd9a4fcf3094baf2bb3fd4518e663911cff2d799\
13795ad5903e0b3d6a71e0cf01426ae03332331867857ef8935a78f75a269268e108b1b03e5346eddd\
1380f4af610ba2aaeb55e5132dccf989aaf5ea069574147c9925297847410ce9fbba9cc65e73e011f2\
138149f449dffc304a170f2e2a218197e91128ead770f03e7e8966887c870e6c405129e08f5c49b1cd\
1382ef48be2c62007c629c35330e2a27f73acf334295dd7832cbe495b61204694b1eab831a05f40b7a\
138384c3cc726aa6fa408d2d91cb3e02dd7487d4fe1e50b0f7b4d6e468bb086e695fded8f9e8231bb9\
1384a40b0ff33b61f7143e7df513e7219c2b9102c8ac4321b4036ffb
1385
1386 X = 8c77eb7870a4108f70251698f0a272a45a87346c8ef14d01e6e5effd914e65eb
1387 Y = 7e3451f243886f90c62cff555ef70fb1b28e3040336d03e2924f8c093e9afddadc8a2e\
1388769eb98b5187feb9e029bba4fe3c1fcd0e891abca0792ab9cea27250be580f68baa5e92d05e405\
1389f8ceeec89b66020a4b08c5b0b4ffe123cf75da89f06a54e90c1f1a747f51e5208d7d718d8bf3f6\
1390173442914bcfcd8f68568d7933471f438fe33efffb867b75a8bae0000795643d4170d49f56579f\
13914d5082d50bd0b21837fa4066821c3b4bf9e88a7e3064d76623e07174a3459cef41afa192b3fd4d\
1392bc84b04e48facb96a66dd39864f8c90838890bdaac64211b0cc800a2a4523540fce1c90d48d44f\
13932160ba2cac83988b09faf27e371298d2feeb677e71ce37e35389
1394
1395 X = 12d4b73532b0a480f88fb82eb3cf89729539ba3b5bfb463c792dc223d1a526dd
1396 Y = 1371ad94dc2db02476ac925aa0cbdd7e247f86a08a6f2492cd4b3f7b05aa881b2e83d0\
1397c5d82246c17cae230a41dd04f05a8c3fed1e09cf8e0d8dc98a9887ff772e2f60434ebea076344f\
13984fbffcbbbd8dee4bc10e7626f26a92c3bf0ac08117bd539b477077d45e11fbe47818f3ce03d6da\
1399f34c77595e72d1c8376d9772f51ce956f0e30e98f51155e9effb974f3d46fb48c76a004b0117db\
1400c19d78044f248821f88fa87d55ba124842d159b5ac4ce916487ecf9d03321241a2bf1896747f15\
14015f281434435741b1f26a79d35270167ba3b505a6cec672339823c8fc6dc797d458d639e5ed015a\
1402c710ebd31b86d736e9b2ab340e7f38f58788483484b81eb0b1ec
1403
1404 [mod = L=3072, N=256]
1405
1406 P = f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e7d5828c352f593a9a7\
140787760ce34b789879941f2f01f02319f6ae0b756f1a842ba54c85612ed632ee2d79ef17f06b77c6\
140841b7b080aff52a03fc2462e80abc64d223723c236deeb7d201078ec01ca1fbc1763139e25099a8\
14094ec389159c409792080736bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554d\
1410b2561d706a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5df831d\
141136f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284f5b71282045aba9844\
1412d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb50c6bf1d54f90cce1a491a9c74fea88f\
14137e7230b047d16b5a6027881d6f154818f06e513faf40c8814630e4e254f17a47bfe9cb519b9828\
14149935bf17673ae4c8033504a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaab\
1415b7338b854e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b692229957
1416 Q = d3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210f6169041653b
1417 G = ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978db2104d7394b493c183\
141832c64cec906a71c3778bd93341165dee8e6cd4ca6f13afff531191194ada55ecf01ff94d6cf7c4\
1419768b82dd29cd131aaf202aefd40e564375285c01f3220af4d70b96f1395420d778228f1461f5d0\
1420b8e47357e87b1fe3286223b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce7782\
14210d88cdf50a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9fb23c1\
1422d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37daddade2d823a4d8e3\
142362721082e279d003b575ee59fd050d105dfd71cd63154efe431a0869178d9811f4f231dc5dcf3b\
14240ec0f2b0f9896c32ec6c7ee7d60aa97109e09224907328d4e6acd10117e45774406c4c947da802\
14250649c3168f690e0bd6e91ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb07\
14263cecfe83fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775ae
1427
1428 X = b2764c46113983777d3e7e97589f1303806d14ad9f2f1ef033097de954b17706
1429 Y = 814824e435e1e6f38daa239aad6dad21033afce6a3ebd35c1359348a0f2418871968c2\
1430babfc2baf47742148828f8612183178f126504da73566b6bab33ba1f124c15aa461555c2451d86\
1431c94ee21c3e3fc24c55527e01b1f03adcdd8ec5cb08082803a7b6a829c3e99eeb332a2cf5c035b0\
1432ce0078d3d414d31fa47e9726be2989b8d06da2e6cd363f5a7d1515e3f4925e0b32adeae3025cc5\
1433a996f6fd27494ea408763de48f3bb39f6a06514b019899b312ec570851637b8865cff3a52bf5d5\
14344ad5a19e6e400a2d33251055d0a440b50d53f4791391dc754ad02b9eab74c46b4903f9d76f8243\
143539914db108057af7cde657d41766a99991ac8787694f4185d6f91d7627048f827b405ec67bf2fe\
143656141c4c581d8c317333624e073e5879a82437cb0c7b435c0ce434e15965db1315d64895991e6b\
1437be7dac040c42052408bbc53423fd31098248a58f8a67da3a39895cd0cc927515d044c1e3cb6a32\
143859c3d0da354cce89ea3552c59609db10ee989986527436af21d9485ddf25f90f7dff6d2bae
1439
1440 X = 52e3e040efb30e1befd909a0bdbcfd140d005b1bff094af97186080262f1904d
1441 Y = a5ae6e8f9b7a68ab0516dad4d7b7d002126f811d5a52e3d35c6d387fcb43fd19bf7792\
1442362f9c98f8348aa058bb62376685f3d0c366c520d697fcd8416947151d4bbb6f32b53528a01647\
14439e99d2cd48d1fc679027c15f0042f207984efe05c1796bca8eba678dfdd00b80418e3ea840557e\
144473b09e003882f9a68edba3431d351d1ca07a8150b018fdbdf6c2f1ab475792a3ccaa6594472a45\
1445f8dc777b60bf67de3e0f65c20d11b7d59faedf83fbce52617f500d9e514947c455274c6e900464\
1446767fb56599b81344cf6d12c25cb2b7d038d7b166b6cf30534811c15d0e8ab880a2ac06786ae2dd\
1447de61329a78d526f65245380ce877e979c5b50de66c9c30d66382c8f254653d25a1eb1d3a4897d7\
1448623399b473ce712a2184cf2da1861706c41466806aefe41b497db82aca6c31c8f4aa68c17d1d9e\
1449380b57998917655783ec96e5234a131f7299398d36f1f5f84297a55ff292f1f060958c358fed34\
14506db2de45127ca728a9417b2c54203e33e53b9a061d924395b09afab8daf3e8dd7eedcec3ac
1451
1452 X = 698f9d6431b02644cf2a5ab06c6d0e7cbc84d2b98c55bd3230744e5b9f353eeb
1453 Y = 07d138d60a1a141a12ed92cba221f98f0ebe7067426991473549ae920ebbbbab173b00\
14540dc6d5836355d6e760fbc316a06102ff1b6c70806b7096a5b3f08393a8b0738f32bb110434990f\
1455a1567ee6059e366a8402d433d8b4304d50d9ee2b4c066d7b9d72b32871e41f844878dc43d3321e\
1456d1e9301cd8e56844403bc5b52d51679c26a23861924d05d32f0dde8c563e34db4ba595e9554439\
1457cd2a1d5377a0a0d273033c622ce7bfb820a024f2994cbf0da8b89921cc2b6b6eae64b969118157\
1458b0f104bc79bc848a7549a422e8e12569d2f19abe6aa161a4ba04b9b4581435516ba443e71d9780\
1459fba2aade09c7146177fd91d86881dabf7478b6238b8e95cf046987624ed6e979878c9deed9148b\
14604741ec5642f777875deae7cdb29393aef8416b1d12f83257f1db323435259e091ecd38eaa82e42\
14618bcb887a98f0f11a7283ec14f901d1df1de3b7d486436a8f8aa1b40449d47681fbb323503ad32a\
14622a11ee214b77c0808bae203af3f6f07f22edefd40f66a62d0511b2419966625e111cb60a7d
1463
1464 X = 1b93d7bf1088760653061409145105940379f9b8b0a9dbbbe001a24ed78e1007
1465 Y = 8846c32e6637b4eca3511c3a7f6c95bba4fe1767ce6a3e361e51c63f0f5beea3391688\
14660e970aa26357befd6081f4a1bbd42172e3ca27c2c109b4284f2a2c3910f1d9797bc7879b5e0da2\
14678af487f5b4af2a663ce3bf2c46ddf1549aaa1560bc9eb71bc668fcfa09e06d094685057fa72aab\
146891ed28c20b55fdcac00ee0a43db3c9f1cf03663ac08c43988d923a0dca541ecd82efd54c86076f\
146979035066c3b7dd39065045dc9fbb2e6c00073523c847ae0c5c05977ba7bf45f420fe9b2f219232\
1470986c633c54a8fa565d64828e9dd80cb0d095009b9d3ef64758a12ce6b3f49db5dca3683120a920\
1471c6081c96c74495992edbbb9871cf02fa4113340a128ac4d113113467f6470f994252ea70e56552\
1472fcbce91c4299de0ab01c4f0d488a8e6076fd42cf7326b48c41dceeda5415cdc3237bfcdcb358dc\
1473b7fc6ad926b475560a82f95e86e787207dc3874c6aff0bb63b83c1ba5f9aa9355893ab8659dcd1\
1474ed4edcdbbd4eeb09f525e3091c576a200ff0219510e97086b40b7849684974eaa9e7f59a1d
1475
1476 X = b0c2d0426bc4d5bc98fe90c36acea70591f979dd891adef2363ebb23e09727ab
1477 Y = c24dd31f155e64fe98e26451d93410038cd696f9e3a36539fc977550ef729b2129ab7e\
1478b6bea156701778c6a7509e54e7d055f9c185dab63010b0b255419944188a707ab1c6a3a7dfd85a\
1479a1c60e93a815e0954c1d114bc181f631a3c67713a2ff38686d9d37e2c0b83b6a7cba4c8302f806\
148094d9d102347e9209ba58c7ed4c3e66e25d6df79734e326507b8bf0b63fe78d70478ffe4a4abdac\
1481d519b2480ea90f3fed6a3d6688681e9750f6a66849947389ef6514330af485d3b2b2ebbb07d261\
148255fa0d3dd035e49447119c0a66c5769a3a4315ce648233eecc7e151bcf42052d272a6b5bd6002c\
14835639097f862720c84a5e692ff522ed01bf40071cebf3d6fa8c750d60380a5ce4aa59ad8dfcb795\
1484c21aad83b026da7651c2c3c57065bb5bff40c0bdded071af7c992d1ed0adaa92c91e031977dd44\
14859c9355490e513a22e7e17c4625b544f791728147537c90c6df02e07e7286df88ffac76d370f7c2\
1486dc19b8b7c7292bfdc3d4cd211649e6c173679bfc71093669c8daabba120431fca20dc6bfc6
1487
1488 X = 567ed324dc525efac9efc2509345d30f26caac2e66897458762788b8f94f8a9c
1489 Y = 29e2d6f62cdda129f6e004f37000e4661d0fe967249c37c0ebeea879419f26f4a64cd9\
1490853c5667705cc39d4137e08d8af7b109c9e43276e413ea05bd0c3e9a84a28191890bbac002706a\
14915c7f385531bb882de5d8e57233ad1efd7e5f3fb090f626795af1b55dc8e98cc801a40b8fff5b09\
1492c70a54085e431b5b0207858b1b3094eee076ba4b12845724ac5e4714b0af442d26c3cf585e2fb5\
14933c0f16faeefa16f171deb03e004a47fa5309ca5a74070bf2b775a8c5fb7611af85e17f077295f3\
14947565635842188348d28556f4768a110794da32b4634eaa9e9a4acb4bb6d2e8d52e66ca5ca7a8e6\
14954f46b141b0273704eb5767df2f23d90959e6ba41bd9b5686a1576bd53132377475718403367c45\
1496643ba43eeeff6ca59882b463df111f4729a985eb880092117f0c60b16ee6c68eb3c123da388d58\
1497979e0d73ff392fa542e1601fff532b9ff35924fdc9a08c3bc348e7a573de2d44ba46173c84b064\
1498057c69107d9a03e0c546a4abbc43e095faa777851d03292c6dedfc8809454c7059250efbb5
1499
1500 X = bfe9402b3493230bec4992e411bc1af7189a66015c8244466c9d1ff9b1c2a7a9
1501 Y = 5a314cbbbe66a88fb370763bbc26d4b3610cd397f58261e59a6ba3548d5f4561c5a548\
1502048c4e349cfce45ea2d8843a80b377895beff75a149e1c69f4dc58992dff68ea4785d64574653f\
15031e18a515091c8ccb59e01bc053c8470682c43908da6a4c83ec86ea6157042bc48ee14b8b778cc6\
15048435d112c15f4200f1a15b06f2e3ac826b832ebbb5bbddc904ba9b321a23b98fa1f2a1d3824bd3\
1505ff3dc2900f6897948e7ddfb37b604f214ceb87a662a95a9736f89d6ea420b9d2f5c365bb618286\
15062a85900af217d2822060d87c74bc2d55a945cf62436222bdbc3f4930566fedd060f2ee81db0f97\
1507f87499a2bc011f76febc1eed40071c23c37ddd6da4a8e9aae4028e88ff409f041c7fe26c9aac8e\
1508d487b0e197cc557a996a30fdf1504dc7b0de1a0120c646821a07784fd6f22f586baa067a3f7978\
1509c898bcddbf2544ec0f8e59ba826e71d6ceec1c8d735f8ffda75f43cbd4a1efd2af42fa836b2c46\
15104811175845f72e7cef58514f4bfe86076a6f4d9e9b0eacee11c32e96bb63cd0c439a5668a4
1511
1512 X = 032b33c28d8645e4e83bb7577d9198677332a615478e78935419218033d01af8
1513 Y = b91ea0d1884c225566a50816f7f8df5fe4b2f295ecb7af8352a52feaa15409205c7747\
1514d269fc53ef73ae100ab8d4c1dd5fcceb2173942b2b025e9d6cd57d6d87dcb7691e95aeec58038e\
1515d38012ef805b9bcfd1ce4b9ab26b9f476b215159608073e796b5bbf759a841a89a50426ad1e24c\
151682584107f55ccbe85022e14fb372e113052bab5c852213e0c2ef6c608cd4b70da884fc6423fb89\
15174fac291da6fa057a6b020c6605a92add57eda2e188ca3b18b14d2f7e60ce3f9076877c4ab319a7\
151860e2a5ac9ec591e9b57096d9e6d1db6648415b89ba9b42f4b6d5487c0566ddd514023db211a709\
1519944df819636c6c3e50fa63490b153873d00da653446e56c674ddc32ab1ef2b3ba945fa4c18f496\
1520d295d6379899e24cb58abc4b092cad55017f97837dfec549f1337b3e84658653823142f75d4533\
1521d33c467733d971a8b118c94da090a5f1adb02847d9a08cacc663cb99cd67116f63b689a5660f9c\
1522160c952802b23eb6361bdac590e9dca0c67bf626e84ad30684070b7149338d00db790625ba
1523
1524 X = 2c26fbb0469074e06e5f267d6e91171e0c1f3ba77197fc5513807b490920e5ba
1525 Y = 5490d55c6a0b921e63837847c2787a710bf66e91fe5e8d5604bd0872851a37c4981f76\
1526487f4e85f05b68f99af7bcb240844f6c1b4a0717d44ce9c425757666efe9d146b91cd556b37080\
1527e6a2a73e68415bc85d6a52b4619d473d7a144bf3d56105efe21c99ffa806325a6c675f8ca6abcb\
15283219d9856f6bdced1d9612e8728594108b76b4a544cf1d5da42974b90cd59b08857ed5d442c596\
1529bd45df9ffcf30d71192bcf04b19b9c44a5426a25fa03e97e46fc9155ad45e9261d0fb5d736852a\
1530efb800d9827e39c9f308b035e135587fce4bc604198eb846fc2b290ea45808367f66b1a7c9493c\
1531c82bbf99cb0c69ad51e7c49062c40b72325fde6fa93ed872d3989aab6add98d51dfba24b7a7b3a\
153219b2fbcb7e5d9816c07d385afb799d649e7fb3fbb3b4a84219083c65e4a54d52313b3e11cf4cd5\
1533c864afe34f5a2ff883189955d401acf5aa8e51f9c7e3333ae9e3393ff77400df4059e56df5a4d3\
153474f12a8d7eddef9e8a7f8bd267a04dd9720ab0479ec780173d644eb52d7f5d4f3a589226d2
1535
1536 X = 8764250978f67f45cb30bf487da305413ee0bcc1ae483aae901e806d321e6baf
1537 Y = 8f461958d60f81940da1735ccbeb9396503d96bb8d187361fabda001c67c713164b690\
1538affb8959ca6a31c7bdd9ff21b23e6d94a63a61c7cc11b4b3b90500cdffdba160603972abf3fe91\
1539704a190fe33a3f59a2c30cb5ad3bf9f85a710f3cdfe93949e6b18865e5d21ea8b42c7e57a7b400\
1540ff2ce7543e89970dfcc7e814be38eeebb74fc28aee97ab0f4138ca3a67e478c6c38ef8f3422c67\
1541fdf432c049a62836b967600ab3b11fff42f0414196d89af929282c0f1102dd51cac5d509644fa4\
1542d43e0b0761ce7e7c0b531b8098656826d312bdbb439b06d45757260b0ff20d2aa02825044b6808\
15435916227cbc53a67cb640d6238034bb67f00c13d181c07082c238588a1df85530a2b14dbdb749a4\
15447f879700c9d86c1eeb8f618bdcbe2022027064a8eb8b6f57ca411b0e14d6684dc0d26df27d76e0\
15450bf6acc9132a98b9b2077a832995e7734c1cfc2dbc67fe8f85056cc52f8cb1aafd1e7fd74af30a\
15469297bed0c7b20422b10321e9a67566c0f1cbee858021d1686c87c4178e6a89be47c846c31c
1547 """).splitlines()
1548
1549 expected_vectors = [
1550 {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66\
1551822138ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3\
1552d300042bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd1261\
15535474e52b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f1\
15547fc076341a7e7d9',
1555 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc8800\
15565d4b725ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae791210\
15572b6b502e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace7\
155878d7845a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e2098\
15590a0093113a8bd73',
1560 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281',
1561 'x': '8185fee9cc7c0e91fd85503274f1cd5a3fd15a49',
1562 'y': '6f26d98d41de7d871b6381851c9d91fa03942092ab6097\
1563e76422070edb71db44ff568280fdb1709f8fc3feab39f1f824adaeb2a29808815\
15646ac31af1aa04bf54f475bdcfdcf2f8a2dd973e922d83e76f016558617603129b2\
15651c70bf7d0e5dc9e68fe332e295b65876eb9a12fe6fca9f1a1ce80204646bf99b5\
1566771d249a6fea627'},
1567 {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\
1568 ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\
1569 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\
1570 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\
1571 341a7e7d9',
1572 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\
1573 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\
1574 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\
1575 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\
1576 113a8bd73',
1577 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281',
1578 'x': '85322d6ea73083064376099ca2f65f56e8522d9b',
1579 'y': '21f8690f717c9f4dcb8f4b6971de2f15b9231fcf41b7eeb997d7\
1580 81f240bfdddfd2090d22083c26cca39bf37c9caf1ec89518ea64845a50d747b49\
1581 131ffff6a2fd11ea7bacbb93c7d05137383a06365af82225dd3713ca5a4500631\
1582 6f53bd12b0e260d5f79795e5a4c9f353f12867a1d3202394673ada8563b71555e\
1583 53f415254'},
1584 {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\
1585 ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\
1586 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\
1587 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\
1588 341a7e7d9',
1589 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\
1590 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\
1591 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\
1592 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\
1593 113a8bd73',
1594 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281',
1595 'x': '8007aace9226517add3b31fb72fe57cf0b71de87',
1596 'y': '0869599e9c233f98719353f50431b8cf9219443b245ccca95fcf\
1597 81d757288b27b4ee08037f0a8ee5d997eecf7ddf1cae641fa0b24bb0e0fb97765\
1598 166d92a79b1519cb9549431947ff58ede390c8fe2c44ff1fe9f8b15839d93cfd7\
1599 27dd0c2698ccf04f85f491d59a4e7fbf873122228af5c27095eea09d7d13b0d58\
1600 5c79c4849'},
1601 {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\
1602 ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\
1603 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\
1604 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\
1605 341a7e7d9',
1606 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\
1607 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\
1608 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\
1609 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\
1610 113a8bd73',
1611 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281',
1612 'x': '2f08cf0627c8ffbde07420c324e594170da5879e',
1613 'y': '1f9098ddb4ec6f7a14841ae87792450292f210fb5a7a90811773\
1614 1b3c5f3d1694331a85a129b0b6b5363e61544c351799ef1fd9fdae6f7707b1ef5\
1615 5933192b03cc41a773d1e2c119fe59205ce8f8c47f27ef0620c6892c61bb04907\
1616 e00e6b82c81e1b77bb4e3f87562327555a226217aaaa4e1d29bac7cc8cbebceee\
1617 3895d8917'},
1618 {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\
1619 ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\
1620 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\
1621 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\
1622 341a7e7d9',
1623 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\
1624 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\
1625 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\
1626 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\
1627 113a8bd73',
1628 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281',
1629 'x': '423616c18872f9a3ae1db1f70302ae8decff0be9',
1630 'y': 'b62df8a3635c8f5acdc92d710d920a643eb93010d003e6e61eee\
1631 57d6a80ca5512bc1a0b689dd256a2ff1dcac4adb099ef66317de9c6b5188627c1\
1632 f0aec54049d0bf1c8214c492d09ce8243af9508c49493ea8d6f85d141850ebdab\
1633 f6cbfeced92c1cc0b844227eedfc03e8650f89c2b6d11462d8cc5b78254574bbe\
1634 558f2e724'},
1635 {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\
1636 ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\
1637 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\
1638 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\
1639 341a7e7d9',
1640 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\
1641 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\
1642 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\
1643 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\
1644 113a8bd73',
1645 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281',
1646 'x': '4c4489ee5a17f30eec191644ae28105aafb82307',
1647 'y': '37fe0fdb5adec7bd56cdd68b1fc5669c292ae0c0c7c339aab844\
1648 b7b83bc0118056274a1f2b2bd4d4c8973458e86bddff94a6adb9b28d9a1f3ff0b\
1649 c82972e3c8e452756ab7f921750f773d75c58346096ce2b804c57f2dee4154710\
1650 13d9a31d347960c42e5748d0feda02bdf0b22902103de1591d9b5dcdfb18575d8\
1651 c164031d1'},
1652 {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\
1653 ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\
1654 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\
1655 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\
1656 341a7e7d9',
1657 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\
1658 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\
1659 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\
1660 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\
1661 113a8bd73',
1662 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281',
1663 'x': '4ea539bf524cacbbf850ea20e18659db13c14cc1',
1664 'y': '7d4b1d55c3cba4f1d7073afda9faed928d7653eac594ef2c84a7\
1665 c83a77817e186a4706b4dae53f67fe7fc97e5915babda7398aec5a8afa302de1a\
1666 f67e709d6cc5cab6d19af835027346875758cedb5552494a85e8b2292f69cd2d6\
1667 65fc3375180f30110f5f9f03472ce431a64db795bce07b0d42bb0d22dc94182dd\
1668 43c2dabe3'},
1669 {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\
1670 ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\
1671 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\
1672 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\
1673 341a7e7d9',
1674 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\
1675 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\
1676 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\
1677 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\
1678 113a8bd73',
1679 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281',
1680 'x': '272b5be463d69c564fb82e54b8824fd5622fd819',
1681 'y': 'd133f99a7d8c5168f58a1f8be91e40d98446336533517289d40f\
1682 0f6c974bbc3abd32de81b92ab4c0d164b44271a884992d93104cca9e85acdec20\
1683 717492e7cddd24f99146e59c16877cf4a2f4fca669528b0e4a42b2154c09b4a15\
1684 ac74d1aed9ca141b7fd6b8eeb5f315a88dfade013539f3ca61628411e89f0e655\
1685 3ed18c03e'},
1686 {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\
1687 ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\
1688 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\
1689 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\
1690 341a7e7d9',
1691 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\
1692 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\
1693 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\
1694 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\
1695 113a8bd73',
1696 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281',
1697 'x': '49df2e11a4cab60b3d8f53a02bc8d982a52035e6',
1698 'y': '555b359dd7998b8020f04f84f7e4ee3e7d7d2352d95b6d5bc51b\
1699 96a2132bc1ac779652ccfbfb5b102edb3861aa98d4feba59f65bd0501755c5d0d\
1700 894b031841365f2f4e9749b5850542dbe82a3b5d614d93f34692087507d2972ac\
1701 dab700892bb847cb4e881998342b7230aef923a07b07563efbc053a300c0ea284\
1702 d7f381da2'},
1703 {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\
1704 ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\
1705 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\
1706 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\
1707 341a7e7d9',
1708 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\
1709 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\
1710 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\
1711 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\
1712 113a8bd73',
1713 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281',
1714 'x': '06f5fe27b77fbdb24beb34f4fe13203e46ad8460',
1715 'y': '881344b829c31389b4882c2fde977d73adb72e5001f41b57c772\
1716 6b9ac99ef413d0fb5df9ed587994c45580efa11d4445cea85b149e74f746308ee\
1717 223c82263b14f4a2ec5ae971083dca725c5fb0ae233b67a4be60be8aca3f40c5b\
1718 faf9d9c4dc40d49dec1c4e539c88cddfce40106cb6f88fd094037fae75de54317\
1719 ad4842cc1'},
1720 {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\
1721 cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\
1722 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\
1723 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\
1724 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\
1725 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\
1726 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\
1727 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\
1728 58302',
1729 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\
1730 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\
1731 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\
1732 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\
1733 b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\
1734 aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\
1735 cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\
1736 b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\
1737 66ef7',
1738 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\
1739 8f507192c19d',
1740 'x': '405772da6e90d809e77d5de796562a2dd4dfd10ef00a83a3aba6\
1741 bd818a0348a1',
1742 'y': '6b32e31ab9031dc4dd0b5039a78d07826687ab087ae6de4736f5\
1743 b0434e1253092e8a0b231f9c87f3fc8a4cb5634eb194bf1b638b7a7889620ce67\
1744 11567e36aa36cda4604cfaa601a45918371d4ccf68d8b10a50a0460eb1dc0fff6\
1745 2ef5e6ee4d473e18ea4a66c196fb7e677a49b48241a0b4a97128eff30fa437050\
1746 501a584f8771e7280d26d5af30784039159c11ebfea10b692fd0a58215eeb18bf\
1747 f117e13f08db792ed4151a218e4bed8dddfb0793225bd1e9773505166f4bd8ced\
1748 bb286ea28232972da7bae836ba97329ba6b0a36508e50a52a7675e476d4d4137e\
1749 ae13f22a9d2fefde708ba8f34bf336c6e76331761e4b0617633fe7ec3f23672fb\
1750 19d27'},
1751 {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\
1752 cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\
1753 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\
1754 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\
1755 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\
1756 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\
1757 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\
1758 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\
1759 58302',
1760 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\
1761 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\
1762 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\
1763 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\
1764 b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\
1765 aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\
1766 cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\
1767 b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\
1768 66ef7',
1769 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\
1770 8f507192c19d',
1771 'x': '0e0b95e31fda3f888059c46c3002ef8f2d6be112d0209aeb9e95\
1772 45da67aeea80',
1773 'y': '778082b77ddba6f56597cc74c3a612abf2ddbd85cc81430c99ab\
1774 843c1f630b9db0139965f563978164f9bf3a8397256be714625cd41cd7fa0067d\
1775 94ea66d7e073f7125af692ad01371d4a17f4550590378f2b074030c20e3691159\
1776 8a1018772f61be3b24de4be5a388ccc09e15a92819c31dec50de9fde105b49eaa\
1777 097b9d13d9219eeb33b628facfd1c78a7159c8430d0647c506e7e3de74763cb35\
1778 1eada72c00bef3c9641881e6254870c1e6599f8ca2f1bbb74f39a905e3a34e454\
1779 4168e6e50c9e3305fd09cab6ed4aff6fda6e0d5bf375c81ac9054406d9193b003\
1780 c89272f1bd83d48250134b65c77c2b6332d38d34d9016f0e8975536ad6c348a1f\
1781 aedb0'},
1782 {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\
1783 cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\
1784 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\
1785 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\
1786 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\
1787 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\
1788 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\
1789 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\
1790 58302',
1791 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\
1792 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\
1793 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\
1794 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\
1795 b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\
1796 aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\
1797 cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\
1798 b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\
1799 66ef7',
1800 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\
1801 8f507192c19d',
1802 'x': '835fd2d1b7b03d90c5ebc073ee69b386c9c07ca06bce80bc5746\
1803 34af8d534f7a',
1804 'y': 'cbc3feccf1ef62d31df626a4b2e234afdf1795443e46a471ec8b\
1805 902b0ae9af36344120ed3ca6009751b03e8963a6151e7b2fe572837c3e23815d4\
1806 72ce75cfbaaaaf36e89a939983bd494f0421b0f35079e5a243672d708ca349253\
1807 9733b2a847f638167f7d64c8dd7e3cc8b2f0e7a7fb4b5d1eb4671378caab107c5\
1808 6cb19e4656c5dbb829a712aea8922d1086ffea567dadcf8b42a7d850cb3fab1ae\
1809 7bbd095a6b55c89e1477cbd3780d99474ec70151f0043240a62f730e498310e64\
1810 b892a07c6716b9cbead0e826e8c545aa0d358d1588fd65d83059f237b9bd732a5\
1811 a83507c9ce89dc9a98cbf9517a76cfc4c588d9d98c0520ba0a0b936e9f35821c3\
1812 1bb23'},
1813 {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\
1814 cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\
1815 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\
1816 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\
1817 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\
1818 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\
1819 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\
1820 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\
1821 58302',
1822 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\
1823 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\
1824 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\
1825 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\
1826 b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\
1827 aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\
1828 cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\
1829 b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\
1830 66ef7',
1831 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\
1832 8f507192c19d',
1833 'x': '30f59255791b2f1d8a28e612f9f838201abb68d2a1256830041e\
1834 0e139088f585',
1835 'y': '0ed9564e1d901e13dfb367c71859af2ec4cc2ed1e0007e9d6262\
1836 ae1c84562f81ddbfa80ba8dad6d7dc70d38579929ac69d0fbe04143750f91741c\
1837 cd690ddc3c743cae9589bd32147a677722ba1289a567ea724e20c5ec1e1621582\
1838 932eada130b8a579d2ff3590bc70fe09721b0067965ef2b16fbc7d4739dc78059\
1839 2e5868c8ccd298082ada393654e26e7748177fb55e84509427dd14dc3f92e1c6a\
1840 3e83eb705bf1537d08a0129f01e2c92234264efce0ec2164103999472631de238\
1841 ddca84d25a6436caf75563085ba5843e2271bb9b12ee1cfa2dce94d681cda686d\
1842 281c7ec10b6c4e44aff0bf54452416d76267e09eb2a73264433ee9dc72fdf4417\
1843 c6f7d'},
1844 {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\
1845 cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\
1846 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\
1847 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\
1848 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\
1849 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\
1850 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\
1851 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\
1852 58302',
1853 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\
1854 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\
1855 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\
1856 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\
1857 b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\
1858 aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\
1859 cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\
1860 b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\
1861 66ef7',
1862 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\
1863 8f507192c19d',
1864 'x': '4d921f8c9e8ceeb7e5244b843a9a238af96818d760bd872ea3e7\
1865 d3a37d7e97b5',
1866 'y': '8b3907eccaaa1ff67705789dbf7e914af940353cda7d0da1d256\
1867 4a030a5afd7a70d40814b32b0092fe1a92ebf91f2a2c10e9fab9521d855fd8c18\
1868 199018d5810c7ae7633829f85c739f243d51c3567449e8f500dd5aec8ff8e1bb3\
1869 587bdcea9635e4e4b0215ab00d9ea6edd3c48579f257f63a95b85271925334bf7\
1870 3900c4e0e4f644379afc9f765354051a57bf37c939d2055d78919ab1b1e9348d5\
1871 85bc73836cfea8310209940cded440fa131e873243029339f57d3a2c4f57ebee2\
1872 94a42a06f339dd9e635308755575801b418c5f83e23974b5b4c2f703a628b3fd8\
1873 3b398b5f271616492df14efb7436ed630b4e39d40ab504935bbdbf9b82f25bbd0\
1874 9014e'},
1875 {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\
1876 cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\
1877 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\
1878 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\
1879 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\
1880 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\
1881 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\
1882 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\
1883 58302',
1884 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\
1885 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\
1886 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\
1887 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\
1888 b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\
1889 aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\
1890 cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\
1891 b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\
1892 66ef7',
1893 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\
1894 8f507192c19d',
1895 'x': '1b46dd4a0b6c3693a1f1e685dd529d6f99dec061d631c7c797ed\
1896 9908f14b39aa',
1897 'y': '27e21468657d4f6216e806b716ab87fd324a22d0df4d5e1c26bf\
1898 c12676fc5db5cd1345d3e078428e5fcc7e03c6a6fb6c4e181bb561cdbdfe565f3\
1899 8ec384be183fc5a0930eb3a92cda25f2867b05a7bd7d4d1a7739be9a75569eac9\
1900 e98e4115ba415db505ef93c0e2b1e58789acd474e4143dfe584ce1f1df6da01f5\
1901 d3f9a27bba10cdf78737e7aa818daf753eae647477ef20283f5f62b0d9b53f073\
1902 281131ef3c692407724c5f61abbabcb24ab056236a7062004b2739c803f663d99\
1903 9993466b5fca3452d954b0edbbf7fefda6d40df8df7ed21f83885e44ebc511a70\
1904 cb03d525bbe21dce5ffb28516441aea2f804301a6c2527265a3df0c411d48cd37\
1905 0fff4'},
1906 {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\
1907 cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\
1908 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\
1909 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\
1910 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\
1911 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\
1912 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\
1913 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\
1914 58302',
1915 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\
1916 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\
1917 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\
1918 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\
1919 b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\
1920 aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\
1921 cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\
1922 b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\
1923 66ef7',
1924 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\
1925 8f507192c19d',
1926 'x': '47eea9c0e8b43329262f3a0b617cd04db1cf159af2aba0ea06c2\
1927 ee5b8a6c2d69',
1928 'y': '65dad9740de9422632c4401df77b68a37fbe3db48aceadab7d90\
1929 02770b38dc8297886cdde82fab71650944a692cf714f82841f4f5668ecbeb6777\
1930 44e398a558c5f72d087d26ee29b6324c8def060ed5c5fe4f10b215f4b04dde218\
1931 fe023ae8fcb99be89ad9a1bb737ae73ae7180944de3fd6abc0d66b6832213a5db\
1932 47469e6127394bc1fd5142e46438fa48f9774038a3ea312bf539c700f7a486964\
1933 abdde996cc0b7d84fec7ef4da121db184d2410d44e9ad9b1b95c3d71edf4a4ba1\
1934 f29e9b8733097fa0c7e8a43141fd0a560f1675323c6ca4504ddb1ed1c2e5887c6\
1935 8f4eecf426f64ce2222bb7a83e771dc27464fef02da9c7c78b2cc36a8aa34b2ab\
1936 5555a'},
1937 {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\
1938 cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\
1939 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\
1940 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\
1941 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\
1942 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\
1943 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\
1944 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\
1945 58302',
1946 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\
1947 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\
1948 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\
1949 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\
1950 b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\
1951 aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\
1952 cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\
1953 b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\
1954 66ef7',
1955 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\
1956 8f507192c19d',
1957 'x': '7e15dc5a1fbfa404a40be5f94334d22d50c29550008d29daf16e\
1958 c682fa29e10a',
1959 'y': 'be5e833678b92b78dcbf83b9137329bd9a4fcf3094baf2bb3fd4\
1960 518e663911cff2d7995ad5903e0b3d6a71e0cf01426ae03332331867857ef8935\
1961 a78f75a269268e108b1b03e5346edddf4af610ba2aaeb55e5132dccf989aaf5ea\
1962 069574147c9925297847410ce9fbba9cc65e73e011f249f449dffc304a170f2e2\
1963 a218197e91128ead770f03e7e8966887c870e6c405129e08f5c49b1cdef48be2c\
1964 62007c629c35330e2a27f73acf334295dd7832cbe495b61204694b1eab831a05f\
1965 40b7a84c3cc726aa6fa408d2d91cb3e02dd7487d4fe1e50b0f7b4d6e468bb086e\
1966 695fded8f9e8231bb9a40b0ff33b61f7143e7df513e7219c2b9102c8ac4321b40\
1967 36ffb'},
1968 {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\
1969 cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\
1970 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\
1971 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\
1972 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\
1973 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\
1974 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\
1975 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\
1976 58302',
1977 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\
1978 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\
1979 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\
1980 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\
1981 b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\
1982 aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\
1983 cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\
1984 b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\
1985 66ef7',
1986 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\
1987 8f507192c19d',
1988 'x': '8c77eb7870a4108f70251698f0a272a45a87346c8ef14d01e6e5\
1989 effd914e65eb',
1990 'y': '7e3451f243886f90c62cff555ef70fb1b28e3040336d03e2924f\
1991 8c093e9afddadc8a2e769eb98b5187feb9e029bba4fe3c1fcd0e891abca0792ab\
1992 9cea27250be580f68baa5e92d05e405f8ceeec89b66020a4b08c5b0b4ffe123cf\
1993 75da89f06a54e90c1f1a747f51e5208d7d718d8bf3f6173442914bcfcd8f68568\
1994 d7933471f438fe33efffb867b75a8bae0000795643d4170d49f56579f4d5082d5\
1995 0bd0b21837fa4066821c3b4bf9e88a7e3064d76623e07174a3459cef41afa192b\
1996 3fd4dbc84b04e48facb96a66dd39864f8c90838890bdaac64211b0cc800a2a452\
1997 3540fce1c90d48d44f2160ba2cac83988b09faf27e371298d2feeb677e71ce37e\
1998 35389'},
1999 {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\
2000 cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\
2001 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\
2002 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\
2003 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\
2004 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\
2005 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\
2006 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\
2007 58302',
2008 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\
2009 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\
2010 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\
2011 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\
2012 b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\
2013 aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\
2014 cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\
2015 b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\
2016 66ef7',
2017 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\
2018 8f507192c19d',
2019 'x': '12d4b73532b0a480f88fb82eb3cf89729539ba3b5bfb463c792d\
2020 c223d1a526dd',
2021 'y': '1371ad94dc2db02476ac925aa0cbdd7e247f86a08a6f2492cd4b\
2022 3f7b05aa881b2e83d0c5d82246c17cae230a41dd04f05a8c3fed1e09cf8e0d8dc\
2023 98a9887ff772e2f60434ebea076344f4fbffcbbbd8dee4bc10e7626f26a92c3bf\
2024 0ac08117bd539b477077d45e11fbe47818f3ce03d6daf34c77595e72d1c8376d9\
2025 772f51ce956f0e30e98f51155e9effb974f3d46fb48c76a004b0117dbc19d7804\
2026 4f248821f88fa87d55ba124842d159b5ac4ce916487ecf9d03321241a2bf18967\
2027 47f155f281434435741b1f26a79d35270167ba3b505a6cec672339823c8fc6dc7\
2028 97d458d639e5ed015ac710ebd31b86d736e9b2ab340e7f38f58788483484b81eb\
2029 0b1ec'},
2030 {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\
2031 b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\
2032 f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\
2033 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\
2034 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\
2035 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\
2036 b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\
2037 daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\
2038 e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\
2039 e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\
2040 ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\
2041 fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\
2042 e',
2043 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\
2044 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\
2045 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\
2046 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\
2047 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\
2048 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\
2049 f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\
2050 f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\
2051 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\
2052 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\
2053 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\
2054 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\
2055 7',
2056 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\
2057 f6169041653b',
2058 'x': 'b2764c46113983777d3e7e97589f1303806d14ad9f2f1ef03309\
2059 7de954b17706',
2060 'y': '814824e435e1e6f38daa239aad6dad21033afce6a3ebd35c1359\
2061 348a0f2418871968c2babfc2baf47742148828f8612183178f126504da73566b6\
2062 bab33ba1f124c15aa461555c2451d86c94ee21c3e3fc24c55527e01b1f03adcdd\
2063 8ec5cb08082803a7b6a829c3e99eeb332a2cf5c035b0ce0078d3d414d31fa47e9\
2064 726be2989b8d06da2e6cd363f5a7d1515e3f4925e0b32adeae3025cc5a996f6fd\
2065 27494ea408763de48f3bb39f6a06514b019899b312ec570851637b8865cff3a52\
2066 bf5d54ad5a19e6e400a2d33251055d0a440b50d53f4791391dc754ad02b9eab74\
2067 c46b4903f9d76f824339914db108057af7cde657d41766a99991ac8787694f418\
2068 5d6f91d7627048f827b405ec67bf2fe56141c4c581d8c317333624e073e5879a8\
2069 2437cb0c7b435c0ce434e15965db1315d64895991e6bbe7dac040c42052408bbc\
2070 53423fd31098248a58f8a67da3a39895cd0cc927515d044c1e3cb6a3259c3d0da\
2071 354cce89ea3552c59609db10ee989986527436af21d9485ddf25f90f7dff6d2ba\
2072 e'},
2073 {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\
2074 b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\
2075 f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\
2076 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\
2077 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\
2078 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\
2079 b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\
2080 daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\
2081 e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\
2082 e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\
2083 ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\
2084 fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\
2085 e',
2086 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\
2087 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\
2088 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\
2089 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\
2090 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\
2091 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\
2092 f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\
2093 f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\
2094 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\
2095 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\
2096 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\
2097 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\
2098 7',
2099 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\
2100 f6169041653b',
2101 'x': '52e3e040efb30e1befd909a0bdbcfd140d005b1bff094af97186\
2102 080262f1904d',
2103 'y': 'a5ae6e8f9b7a68ab0516dad4d7b7d002126f811d5a52e3d35c6d\
2104 387fcb43fd19bf7792362f9c98f8348aa058bb62376685f3d0c366c520d697fcd\
2105 8416947151d4bbb6f32b53528a016479e99d2cd48d1fc679027c15f0042f20798\
2106 4efe05c1796bca8eba678dfdd00b80418e3ea840557e73b09e003882f9a68edba\
2107 3431d351d1ca07a8150b018fdbdf6c2f1ab475792a3ccaa6594472a45f8dc777b\
2108 60bf67de3e0f65c20d11b7d59faedf83fbce52617f500d9e514947c455274c6e9\
2109 00464767fb56599b81344cf6d12c25cb2b7d038d7b166b6cf30534811c15d0e8a\
2110 b880a2ac06786ae2ddde61329a78d526f65245380ce877e979c5b50de66c9c30d\
2111 66382c8f254653d25a1eb1d3a4897d7623399b473ce712a2184cf2da1861706c4\
2112 1466806aefe41b497db82aca6c31c8f4aa68c17d1d9e380b57998917655783ec9\
2113 6e5234a131f7299398d36f1f5f84297a55ff292f1f060958c358fed346db2de45\
2114 127ca728a9417b2c54203e33e53b9a061d924395b09afab8daf3e8dd7eedcec3a\
2115 c'},
2116 {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\
2117 b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\
2118 f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\
2119 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\
2120 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\
2121 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\
2122 b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\
2123 daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\
2124 e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\
2125 e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\
2126 ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\
2127 fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\
2128 e',
2129 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\
2130 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\
2131 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\
2132 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\
2133 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\
2134 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\
2135 f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\
2136 f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\
2137 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\
2138 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\
2139 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\
2140 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\
2141 7',
2142 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\
2143 f6169041653b',
2144 'x': '698f9d6431b02644cf2a5ab06c6d0e7cbc84d2b98c55bd323074\
2145 4e5b9f353eeb',
2146 'y': '07d138d60a1a141a12ed92cba221f98f0ebe7067426991473549\
2147 ae920ebbbbab173b000dc6d5836355d6e760fbc316a06102ff1b6c70806b7096a\
2148 5b3f08393a8b0738f32bb110434990fa1567ee6059e366a8402d433d8b4304d50\
2149 d9ee2b4c066d7b9d72b32871e41f844878dc43d3321ed1e9301cd8e56844403bc\
2150 5b52d51679c26a23861924d05d32f0dde8c563e34db4ba595e9554439cd2a1d53\
2151 77a0a0d273033c622ce7bfb820a024f2994cbf0da8b89921cc2b6b6eae64b9691\
2152 18157b0f104bc79bc848a7549a422e8e12569d2f19abe6aa161a4ba04b9b45814\
2153 35516ba443e71d9780fba2aade09c7146177fd91d86881dabf7478b6238b8e95c\
2154 f046987624ed6e979878c9deed9148b4741ec5642f777875deae7cdb29393aef8\
2155 416b1d12f83257f1db323435259e091ecd38eaa82e428bcb887a98f0f11a7283e\
2156 c14f901d1df1de3b7d486436a8f8aa1b40449d47681fbb323503ad32a2a11ee21\
2157 4b77c0808bae203af3f6f07f22edefd40f66a62d0511b2419966625e111cb60a7\
2158 d'},
2159 {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\
2160 b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\
2161 f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\
2162 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\
2163 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\
2164 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\
2165 b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\
2166 daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\
2167 e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\
2168 e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\
2169 ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\
2170 fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\
2171 e',
2172 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\
2173 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\
2174 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\
2175 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\
2176 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\
2177 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\
2178 f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\
2179 f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\
2180 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\
2181 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\
2182 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\
2183 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\
2184 7',
2185 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\
2186 f6169041653b',
2187 'x': '1b93d7bf1088760653061409145105940379f9b8b0a9dbbbe001\
2188 a24ed78e1007',
2189 'y': '8846c32e6637b4eca3511c3a7f6c95bba4fe1767ce6a3e361e51\
2190 c63f0f5beea33916880e970aa26357befd6081f4a1bbd42172e3ca27c2c109b42\
2191 84f2a2c3910f1d9797bc7879b5e0da28af487f5b4af2a663ce3bf2c46ddf1549a\
2192 aa1560bc9eb71bc668fcfa09e06d094685057fa72aab91ed28c20b55fdcac00ee\
2193 0a43db3c9f1cf03663ac08c43988d923a0dca541ecd82efd54c86076f79035066\
2194 c3b7dd39065045dc9fbb2e6c00073523c847ae0c5c05977ba7bf45f420fe9b2f2\
2195 19232986c633c54a8fa565d64828e9dd80cb0d095009b9d3ef64758a12ce6b3f4\
2196 9db5dca3683120a920c6081c96c74495992edbbb9871cf02fa4113340a128ac4d\
2197 113113467f6470f994252ea70e56552fcbce91c4299de0ab01c4f0d488a8e6076\
2198 fd42cf7326b48c41dceeda5415cdc3237bfcdcb358dcb7fc6ad926b475560a82f\
2199 95e86e787207dc3874c6aff0bb63b83c1ba5f9aa9355893ab8659dcd1ed4edcdb\
2200 bd4eeb09f525e3091c576a200ff0219510e97086b40b7849684974eaa9e7f59a1\
2201 d'},
2202 {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\
2203 b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\
2204 f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\
2205 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\
2206 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\
2207 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\
2208 b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\
2209 daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\
2210 e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\
2211 e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\
2212 ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\
2213 fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\
2214 e',
2215 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\
2216 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\
2217 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\
2218 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\
2219 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\
2220 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\
2221 f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\
2222 f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\
2223 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\
2224 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\
2225 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\
2226 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\
2227 7',
2228 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\
2229 f6169041653b',
2230 'x': 'b0c2d0426bc4d5bc98fe90c36acea70591f979dd891adef2363e\
2231 bb23e09727ab',
2232 'y': 'c24dd31f155e64fe98e26451d93410038cd696f9e3a36539fc97\
2233 7550ef729b2129ab7eb6bea156701778c6a7509e54e7d055f9c185dab63010b0b\
2234 255419944188a707ab1c6a3a7dfd85aa1c60e93a815e0954c1d114bc181f631a3\
2235 c67713a2ff38686d9d37e2c0b83b6a7cba4c8302f80694d9d102347e9209ba58c\
2236 7ed4c3e66e25d6df79734e326507b8bf0b63fe78d70478ffe4a4abdacd519b248\
2237 0ea90f3fed6a3d6688681e9750f6a66849947389ef6514330af485d3b2b2ebbb0\
2238 7d26155fa0d3dd035e49447119c0a66c5769a3a4315ce648233eecc7e151bcf42\
2239 052d272a6b5bd6002c5639097f862720c84a5e692ff522ed01bf40071cebf3d6f\
2240 a8c750d60380a5ce4aa59ad8dfcb795c21aad83b026da7651c2c3c57065bb5bff\
2241 40c0bdded071af7c992d1ed0adaa92c91e031977dd449c9355490e513a22e7e17\
2242 c4625b544f791728147537c90c6df02e07e7286df88ffac76d370f7c2dc19b8b7\
2243 c7292bfdc3d4cd211649e6c173679bfc71093669c8daabba120431fca20dc6bfc\
2244 6'},
2245 {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\
2246 b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\
2247 f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\
2248 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\
2249 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\
2250 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\
2251 b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\
2252 daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\
2253 e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\
2254 e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\
2255 ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\
2256 fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\
2257 e',
2258 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\
2259 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\
2260 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\
2261 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\
2262 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\
2263 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\
2264 f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\
2265 f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\
2266 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\
2267 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\
2268 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\
2269 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\
2270 7',
2271 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\
2272 f6169041653b',
2273 'x': '567ed324dc525efac9efc2509345d30f26caac2e668974587627\
2274 88b8f94f8a9c',
2275 'y': '29e2d6f62cdda129f6e004f37000e4661d0fe967249c37c0ebee\
2276 a879419f26f4a64cd9853c5667705cc39d4137e08d8af7b109c9e43276e413ea0\
2277 5bd0c3e9a84a28191890bbac002706a5c7f385531bb882de5d8e57233ad1efd7e\
2278 5f3fb090f626795af1b55dc8e98cc801a40b8fff5b09c70a54085e431b5b02078\
2279 58b1b3094eee076ba4b12845724ac5e4714b0af442d26c3cf585e2fb53c0f16fa\
2280 eefa16f171deb03e004a47fa5309ca5a74070bf2b775a8c5fb7611af85e17f077\
2281 295f37565635842188348d28556f4768a110794da32b4634eaa9e9a4acb4bb6d2\
2282 e8d52e66ca5ca7a8e64f46b141b0273704eb5767df2f23d90959e6ba41bd9b568\
2283 6a1576bd53132377475718403367c45643ba43eeeff6ca59882b463df111f4729\
2284 a985eb880092117f0c60b16ee6c68eb3c123da388d58979e0d73ff392fa542e16\
2285 01fff532b9ff35924fdc9a08c3bc348e7a573de2d44ba46173c84b064057c6910\
2286 7d9a03e0c546a4abbc43e095faa777851d03292c6dedfc8809454c7059250efbb\
2287 5'},
2288 {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\
2289 b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\
2290 f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\
2291 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\
2292 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\
2293 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\
2294 b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\
2295 daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\
2296 e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\
2297 e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\
2298 ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\
2299 fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\
2300 e',
2301 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\
2302 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\
2303 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\
2304 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\
2305 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\
2306 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\
2307 f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\
2308 f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\
2309 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\
2310 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\
2311 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\
2312 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\
2313 7',
2314 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\
2315 f6169041653b',
2316 'x': 'bfe9402b3493230bec4992e411bc1af7189a66015c8244466c9d\
2317 1ff9b1c2a7a9',
2318 'y': '5a314cbbbe66a88fb370763bbc26d4b3610cd397f58261e59a6b\
2319 a3548d5f4561c5a548048c4e349cfce45ea2d8843a80b377895beff75a149e1c6\
2320 9f4dc58992dff68ea4785d64574653f1e18a515091c8ccb59e01bc053c8470682\
2321 c43908da6a4c83ec86ea6157042bc48ee14b8b778cc68435d112c15f4200f1a15\
2322 b06f2e3ac826b832ebbb5bbddc904ba9b321a23b98fa1f2a1d3824bd3ff3dc290\
2323 0f6897948e7ddfb37b604f214ceb87a662a95a9736f89d6ea420b9d2f5c365bb6\
2324 182862a85900af217d2822060d87c74bc2d55a945cf62436222bdbc3f4930566f\
2325 edd060f2ee81db0f97f87499a2bc011f76febc1eed40071c23c37ddd6da4a8e9a\
2326 ae4028e88ff409f041c7fe26c9aac8ed487b0e197cc557a996a30fdf1504dc7b0\
2327 de1a0120c646821a07784fd6f22f586baa067a3f7978c898bcddbf2544ec0f8e5\
2328 9ba826e71d6ceec1c8d735f8ffda75f43cbd4a1efd2af42fa836b2c4648111758\
2329 45f72e7cef58514f4bfe86076a6f4d9e9b0eacee11c32e96bb63cd0c439a5668a\
2330 4'},
2331 {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\
2332 b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\
2333 f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\
2334 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\
2335 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\
2336 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\
2337 b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\
2338 daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\
2339 e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\
2340 e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\
2341 ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\
2342 fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\
2343 e',
2344 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\
2345 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\
2346 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\
2347 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\
2348 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\
2349 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\
2350 f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\
2351 f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\
2352 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\
2353 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\
2354 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\
2355 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\
2356 7',
2357 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\
2358 f6169041653b',
2359 'x': '032b33c28d8645e4e83bb7577d9198677332a615478e78935419\
2360 218033d01af8',
2361 'y': 'b91ea0d1884c225566a50816f7f8df5fe4b2f295ecb7af8352a5\
2362 2feaa15409205c7747d269fc53ef73ae100ab8d4c1dd5fcceb2173942b2b025e9\
2363 d6cd57d6d87dcb7691e95aeec58038ed38012ef805b9bcfd1ce4b9ab26b9f476b\
2364 215159608073e796b5bbf759a841a89a50426ad1e24c82584107f55ccbe85022e\
2365 14fb372e113052bab5c852213e0c2ef6c608cd4b70da884fc6423fb894fac291d\
2366 a6fa057a6b020c6605a92add57eda2e188ca3b18b14d2f7e60ce3f9076877c4ab\
2367 319a760e2a5ac9ec591e9b57096d9e6d1db6648415b89ba9b42f4b6d5487c0566\
2368 ddd514023db211a709944df819636c6c3e50fa63490b153873d00da653446e56c\
2369 674ddc32ab1ef2b3ba945fa4c18f496d295d6379899e24cb58abc4b092cad5501\
2370 7f97837dfec549f1337b3e84658653823142f75d4533d33c467733d971a8b118c\
2371 94da090a5f1adb02847d9a08cacc663cb99cd67116f63b689a5660f9c160c9528\
2372 02b23eb6361bdac590e9dca0c67bf626e84ad30684070b7149338d00db790625b\
2373 a'},
2374 {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\
2375 b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\
2376 f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\
2377 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\
2378 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\
2379 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\
2380 b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\
2381 daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\
2382 e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\
2383 e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\
2384 ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\
2385 fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\
2386 e',
2387 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\
2388 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\
2389 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\
2390 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\
2391 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\
2392 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\
2393 f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\
2394 f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\
2395 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\
2396 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\
2397 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\
2398 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\
2399 7',
2400 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\
2401 f6169041653b',
2402 'x': '2c26fbb0469074e06e5f267d6e91171e0c1f3ba77197fc551380\
2403 7b490920e5ba',
2404 'y': '5490d55c6a0b921e63837847c2787a710bf66e91fe5e8d5604bd\
2405 0872851a37c4981f76487f4e85f05b68f99af7bcb240844f6c1b4a0717d44ce9c\
2406 425757666efe9d146b91cd556b37080e6a2a73e68415bc85d6a52b4619d473d7a\
2407 144bf3d56105efe21c99ffa806325a6c675f8ca6abcb3219d9856f6bdced1d961\
2408 2e8728594108b76b4a544cf1d5da42974b90cd59b08857ed5d442c596bd45df9f\
2409 fcf30d71192bcf04b19b9c44a5426a25fa03e97e46fc9155ad45e9261d0fb5d73\
2410 6852aefb800d9827e39c9f308b035e135587fce4bc604198eb846fc2b290ea458\
2411 08367f66b1a7c9493cc82bbf99cb0c69ad51e7c49062c40b72325fde6fa93ed87\
2412 2d3989aab6add98d51dfba24b7a7b3a19b2fbcb7e5d9816c07d385afb799d649e\
2413 7fb3fbb3b4a84219083c65e4a54d52313b3e11cf4cd5c864afe34f5a2ff883189\
2414 955d401acf5aa8e51f9c7e3333ae9e3393ff77400df4059e56df5a4d374f12a8d\
2415 7eddef9e8a7f8bd267a04dd9720ab0479ec780173d644eb52d7f5d4f3a589226d\
2416 2'},
2417 {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\
2418 b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\
2419 f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\
2420 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\
2421 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\
2422 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\
2423 b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\
2424 daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\
2425 e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\
2426 e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\
2427 ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\
2428 fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\
2429 e',
2430 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\
2431 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\
2432 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\
2433 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\
2434 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\
2435 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\
2436 f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\
2437 f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\
2438 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\
2439 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\
2440 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\
2441 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\
2442 7',
2443 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\
2444 f6169041653b',
2445 'x': '8764250978f67f45cb30bf487da305413ee0bcc1ae483aae901e\
2446 806d321e6baf',
2447 'y': '8f461958d60f81940da1735ccbeb9396503d96bb8d187361fabd\
2448 a001c67c713164b690affb8959ca6a31c7bdd9ff21b23e6d94a63a61c7cc11b4b\
2449 3b90500cdffdba160603972abf3fe91704a190fe33a3f59a2c30cb5ad3bf9f85a\
2450 710f3cdfe93949e6b18865e5d21ea8b42c7e57a7b400ff2ce7543e89970dfcc7e\
2451 814be38eeebb74fc28aee97ab0f4138ca3a67e478c6c38ef8f3422c67fdf432c0\
2452 49a62836b967600ab3b11fff42f0414196d89af929282c0f1102dd51cac5d5096\
2453 44fa4d43e0b0761ce7e7c0b531b8098656826d312bdbb439b06d45757260b0ff2\
2454 0d2aa02825044b68085916227cbc53a67cb640d6238034bb67f00c13d181c0708\
2455 2c238588a1df85530a2b14dbdb749a47f879700c9d86c1eeb8f618bdcbe202202\
2456 7064a8eb8b6f57ca411b0e14d6684dc0d26df27d76e00bf6acc9132a98b9b2077\
2457 a832995e7734c1cfc2dbc67fe8f85056cc52f8cb1aafd1e7fd74af30a9297bed0\
2458 c7b20422b10321e9a67566c0f1cbee858021d1686c87c4178e6a89be47c846c31\
2459 c'}
2460 ]
2461
2462 expected = []
2463 for dictionary in expected_vectors:
2464 new_dict = {}
2465 for k, v in dictionary.iteritems():
2466 v = v.strip()
2467 v = v.replace(" ", "")
2468 v = int(v, 16)
2469 new_dict[k] = v
2470 expected.append(new_dict)
2471
2472 assert expected == load_fips_dsa_key_pair_vectors(vector_data)