hyb
2026-01-30 15bc7727b58bf9ca0c8f21702fa893daac232b8d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
Ë
ž¬`i[äã
ó —ddlZddlZddlmZmZddlmZmZmZddl    m
Z
m Z m Z m Z mZmZmZmZmZddlmZddlmZmZddlmZddlmZmZdd    lmZmZd
„Z d „Z!d „Z"Gd „d«Z#Gd„dejH«Z%Gd„dejH«Z&eddddd„i«xsgZ'e(e'«D]J\Z)Z*e+e*e,«rAejZde*«Z.e.sJ‚e.j_d«jadd«Z1e"e1«Z2ŒQe3e*d«r%e*jhZ5e*jlZ7e*jpZ9Œe2jue*jv«Z<e*jze7e5e9fDcgc]
}e|«‘Œ c}Z>ej~e>d«Z@ejte@d«ZAeAe<e*j„e*j†zfd„ZDeAe<e*j„e*j†zfd „ZEe*jŒdk(reGe&d!e)zeD«Œ>eGe&d"e)zeE«ŒMedd#d$i«xsgZHe(eH«D]+\Z)Z*e+e*e,«rAejZde*«Z.e.sJ‚e.j_d«jadd«Z1e"e1«Z2ŒQe3e*d«r%e*jhZ5e*jlZ7e*jpZ9Œe2jue*jv«Z<e*jze7e5e9e*j’fDcgc]
}e|«‘Œ c}ZJej~eJd«Z@ejte@de#e*j–«¬%«ZLeLe<e*j„e*j†zfd&„ZMeGe&d'e)zeM«Œ.Gd(„d)ejH«ZNGd*„d+ejH«ZOed,d-d.d/„d0„d1„d2œ«xsgZ'e'ed,d3d.d4„d5„d6„d2œ«xsgz Z'e(e'«D]\\Z)Z*e+e*e,«rcejZd7e*«Z.e.sJ‚e.j_d8«ZPe.j_d9«jadd«Z1e1d:vr e1d;dZQe1dd;Z1ndZQe"e1«Z2ŒseQ€e2jue*jv«Z<ne2jue*jveQ¬<«Z<ej~ePe*j¤e*j¦¬=«ZTejteTd«ZAeAe<e*j„e*j†zfd>„ZDeAe<e*j„e*j†zfd?„ZEe*jŒj«d«reGeOd!e)zeD«ŒPeGeOd"e)zeE«Œ_ed,d@d.dAdB„i«xsgZHe(eH«D]é\Z)Z*e+e*e,«rRejZd7e*«Z.e.sJ‚e.j_d8«ZPe.j_d9«jadd«Z1e"e1«Z2Œae2jue*jv«Z<ej~ePe*j¬¬C«ZTejteTde#e*j–«¬%«ZLeLe<e*j„e*j†zfdD„ZWeGeOd'e)zeW«ŒëGdE„dFejH«ZXGdG„dHejH«ZYdI„ZZGdJ„dKejH«Z[GdL„dMejH«Z\ifdN„Z]e^dOk(rdP„Z_ejÀdQ¬R«yycc}wcc}w)SéN)ÚhexlifyÚ    unhexlify)ÚtobytesÚbordÚbchr)    ÚSHA1ÚSHA224ÚSHA256ÚSHA384ÚSHA512ÚSHA3_224ÚSHA3_256ÚSHA3_384ÚSHA3_512)ÚDSS)ÚDSAÚECC)Úlist_test_cases)Úload_test_vectorsÚload_test_vectors_wycheproof)Ú bytes_to_longÚ long_to_bytescón—|jdd«jdd«}tt|««S)Nú Úú
)Úreplacerr©Ú    hexstringÚwss  õuH:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\Crypto/SelfTest/Signature/test_dss.pyÚt2br"1s0€Ø    ×    Ñ    ˜3 Ó    #×    +Ñ    +¨D°"Ó    5€BÜ ”W˜R“[Ó !Ð!ócó^—|jdd«jdd«}t|d«S)Nrrré)rÚintrs  r!Út2lr'6s-€Ø    ×    Ñ    ˜3 Ó    #×    +Ñ    +¨D°"Ó    5€BÜ ˆr2‹;Ðr#cóF—td|zt«t«dg«S)Nz Crypto.Hash.Únew)Ú
__import__ÚglobalsÚlocals)Ú    hash_names r!Úload_hash_by_namer.;s€Ü n yÑ0´'³)¼V»XÈÀwÓ OÐOr#có—eZdZd„Zd„Zy)ÚStrRNGcób—t|«}d|_tt|«dz
|«|_y)Nré)ÚlenÚ_idxrrÚ _randomness)ÚselfÚ
randomnessÚlengths   r!Ú__init__zStrRNG.__init__As+€ÜZ“ˆØˆŒ    ä(¬°zÓ)BÀQÑ)FÈÓOˆÕr#có|—|j|j|j|z}|xj|z c_|S©N)r5r4)r6ÚnÚouts   r!Ú__call__zStrRNG.__call__Gs2€Ø×јtŸy™y¨¯©°Q©Ð7ˆØ     Š    Q‰    Øˆ
r#N)Ú__name__Ú
__module__Ú __qualname__r9r>©r#r!r0r0?s „òPó r#r0cóž—eZdZdZdZdZdZdZejeeeef«Z
ejeeeeef«Z d„Z d„Z d„Zd    „Zd
„Zd „Zy ) ÚFIPS_DSA_TestslEƒb{1§NV9d`kZ    ->½z“[SQp;Q~ŽKYnÈlwzÝb¾…¸p\KÀjž8Aì\ÐPRIªm-Áyˆvž1Z@ HŽ-[Ss%Z=    •Vª5’tÐ&ÖJL;˜O:v¨+MY2›à|IØ5¼<€4ÎG
l •d*(¨+÷_itñƒzû&¬>álE3~É; .è hÆB$ßM©#Mä6NIi%2Ð|É9QsNýn$®xý|’%ÖKˆp"80‘E=‰SVBâ ­+ª1ˆY>JAiÖ, ol}ªpá=r>As’jæC«]Š[kq+¸xcbw:uot 7OãlA4ô
?K#=\FqÅXýKŠYl :|ÇÑ ¸
W/z1YEm\}lE w}ÿSV@6ê>»FÑz–mðd¬XRWÍ=!]nÊ/^ßczp¼v-`.+@|íD­‡IlB&]ió:ä=ï$gm@W˵p™A¯Rqt‘3´6¾U遯FŸYP$v7Ø!™b@!l~E/*ø:NW"¯gþ    có—y)NzFIPS DSA TestsrB©r6s r!ÚshortDescriptionzFIPS_DSA_Tests.shortDescriptionYs€Ør#cóô—tjd«}tj|jd«}|j    |«}tj|j
d«}|j ||«y©Nótestú
fips-186-3©r r)rÚkey_privÚsignÚkey_pubÚverify©r6Ú
hashed_msgÚsignerÚ    signatureÚverifiers     r!Ú test_loopbackzFIPS_DSA_Tests.test_loopback\óT€Ü—Z‘Z Ó(ˆ
Ü—‘˜Ÿ™¨ Ó5ˆØ—K‘K 
Ó+ˆ    ä—7‘7˜4Ÿ<™<¨Ó6ˆØ‰˜
 IÕ.r#có—ddlm}d|_|j«}t    j|j
d«}|j t|j|«|j t|j|d«y)ú*Verify that unapproved hashes are rejectedr)Ú    RIPEMD160z Unapproved hash (RIPEMD160) testrKó(N)
Ú Crypto.HashrZÚ descriptionr)rrMÚ assertRaisesÚ
ValueErrorrNrP)r6rZÚhash_objrSs    r!Útest_negative_unapproved_hashesz.FIPS_DSA_Tests.test_negative_unapproved_hashesds\€õ    *à=ˆÔØ—=‘=“?ˆÜ—‘˜Ÿ™¨ Ó5ˆØ ×Ñœ* f§k¡k°8Ô<Ø ×Ñœ* f§m¡m°X¸|ÕLr#cóâ—d|_|jttj|j
d«d|_|jttj|j
dd«y©z0Verify that unknown modes/encodings are rejectedzUnknown mode testz
fips-186-0zUnknown encoding testrKÚxmlN©r]r^r_rr)rMrFs r!Ú%test_negative_unknown_modes_encodingsz4FIPS_DSA_Tests.test_negative_unknown_modes_encodingsoóN€ð/ˆÔØ ×Ñœ*¤c§g¡g¨t¯}©}¸lÔKà2ˆÔØ ×Ñœ*¤c§g¡g¨t¯}©}¸lÈEÕRr#cód—d|_tj«}tj|jdd«}|j |«}|j t|d«d«|j||«td«|ddz}|jt|j||«y©    zVerify ASN.1 encodingzASN.1 encoding testrKÚderré0ér2N) r]rr)rrMrNÚ assertEqualrrPrr^r_©r6r`rSrTs    r!Útest_asn1_encodingz!FIPS_DSA_Tests.test_asn1_encodingxs’€ð1ˆÔÜ—8‘8“:ˆÜ—‘˜Ÿ™¨ °eÓ<ˆØ—K‘K Ó)ˆ    ð     ×Ñœ˜i¨™lÓ+¨RÔ0؏ ‰ h     Ô*ô˜“G˜i¨¨˜mÑ+ˆ    Ø ×Ñœ* f§m¡m°X¸yÕIr#cóÄ—d|_tj|jd«}|j    |j ««tj|j d«}|j|j ««    |jtjd««d}|j    d|v«y#t$r}t|«}Yd}~Œ-d}~wwxYw©zVerify public/private methodzcan_sign() testrKsxyzrNzPrivate key is needed) r]rr)rMÚ
assertTrueÚcan_signrOÚ assertFalserNr
Ú    TypeErrorÚstr©r6rSÚmsgÚes    r!Útest_sign_verifyzFIPS_DSA_Tests.test_sign_verifyˆsª€ð-ˆÔÜ—‘˜Ÿ™¨ Ó5ˆØ ‰˜Ÿ™Ó)Ô*ä—‘˜Ÿ™ |Ó4ˆØ ×јŸ™Ó*Ô+ð    Ø K‰KœŸ
™
 6Ó*Ô +ðˆCØ ‰Ð/°3Ð6Õ7øô    ò    Üa“&Cûð    úsÂ$Cà   CÃ
CÃCN)r?r@rAÚPÚQÚGÚXÚYrÚ    constructrOrMrGrVrarfrorzrBr#r!rDrDMsw„ð    K€AØ2€Að    K€AØ2€Að    K€Aàˆcm‰m˜Q  1 a˜LÓ)€G؈s}‰}˜a  A q¨!˜_Ó-€Hò ò/ò    MòSòJó 8r#rDcó —eZdZy)ÚFIPS_DSA_Tests_KATN©r?r@rArBr#r!r‚r‚›ó„Ør#r‚)Ú    SignaturerzFIPS_186_3_SigVer.rspzSignature Verification 186-3Úresultcó—|Sr;rB©Úxs r!ú<lambda>rŠ¢ó€¸Q€r#z1\[mod = L=([0-9]+), N=([0-9]+), ([a-zA-Z0-9-]+)\]éú-rÚpFrKcó(—|j||«yr;©rP©r6rUr`rTs    r!Ú positive_testr’¹ó€Ø‰˜ )Õ,r#cóH—|jt|j||«yr;©r^r_rPr‘s    r!Ú negative_testr–¼ó€Ø ×Ñœ* h§o¡o°xÀÕKr#ztest_verify_positive_%dztest_verify_negative_%dzFIPS_186_3_SigGen.txtzSignature Creation 186-3)ÚrandfunccóF—|j|j|«|«yr;©rmrN©r6rSr`rTs    r!Únew_testrœÞó€Ø ×јŸ™ XÓ.°    Õ:r#z test_sign_%dcó|—eZdZejd¬«Zej «Zd„Zd„Z    d„Z
d„Z d„Z d„Z d    „Zy
) ÚFIPS_ECDSA_TestsúP-256©Úcurvecó—y)NzFIPS ECDSA TestsrBrFs r!rGz!FIPS_ECDSA_Tests.shortDescriptionès€Ø!r#cóô—tjd«}tj|jd«}|j    |«}tj|j
d«}|j ||«yrIrLrQs     r!rVzFIPS_ECDSA_Tests.test_loopbackërWr#có—ddlm}d|_|j«}t    j|j
d«}|j t|j|«|j t|j|d«y)rYr)rzUnapproved hash (SHA-1) testrKr[N)
r\rr]r)rrMr^r_rNrP)r6rr`rSs    r!raz0FIPS_ECDSA_Tests.test_negative_unapproved_hashesós^€õ    %à9ˆÔؐ4—8‘8“:ˆÜ—‘˜Ÿ™¨ Ó5ˆØ ×Ñœ* f§k¡k°8Ô<Ø ×Ñœ* f§m¡m°X¸|ÕLr#có|—tjd¬«}|jttj
|d«y)NÚed25519r¡rK)rÚgenerater^r_rr))r6Úkeys  r!Útest_negative_eddsa_keyz(FIPS_ECDSA_Tests.test_negative_eddsa_keyþs(€Ül‰l Ô+ˆØ ×Ñœ*¤c§g¡g¨s°LÕAr#có,—d|_tj|jd«}|j    |j ««tj|j d«}|j|j ««|jt|jtjd««    |jtjd««d}|j    d|v«y#t$r}t|«}Yd}~Œ-d}~wwxYwrq) r]rr)rMrrrsrOrtr^rurNr
rvrws    r!rzz!FIPS_ECDSA_Tests.test_sign_verifysɀð-ˆÔÜ—‘˜Ÿ™¨ Ó5ˆØ ‰˜Ÿ™Ó)Ô*ä—‘˜Ÿ™ |Ó4ˆØ ×јŸ™Ó*Ô+Ø ×Ñœ) V§[¡[´&·*±*¸VÓ2DÔEð    Ø K‰KœŸ
™
 6Ó*Ô +ðˆCØ ‰Ð/°3Ð6Õ7øô    ò    Üa“&Cûð    úsÂ;$C5Ã5    DÃ> DÄDcóâ—d|_|jttj|j
d«d|_|jttj|j
dd«yrcrerFs r!rfz6FIPS_ECDSA_Tests.test_negative_unknown_modes_encodingsrgr#cód—d|_tj«}tj|jdd«}|j |«}|j t|d«d«|j||«td«|ddz}|jt|j||«yri) r]r
r)rrMrNrmrrPrr^r_rns    r!roz#FIPS_ECDSA_Tests.test_asn1_encodings’€ð1ˆÔÜ—:‘:“<ˆÜ—‘˜Ÿ™¨ °eÓ<ˆØ—K‘K Ó)ˆ    ð     ×Ñœ˜i¨™lÓ+¨RÔ0؏ ‰ h     Ô*ô˜“G˜i¨¨˜mÑ+ˆ    Ø ×Ñœ* f§m¡m°X¸yÕIr#N)r?r@rArr¨rMÚ
public_keyrOrGrVrarªrzrfrorBr#r!rŸrŸãsG„àˆs|‰| 'Ô*€HØ×!Ñ!Ó#€Gò"ò/ò    MòBò8ò&SóJr#rŸcó —eZdZy)ÚFIPS_ECDSA_Tests_KATNrƒrBr#r!r°r°/r„r#r°)r…ÚECDSAz
SigVer.rspz"ECDSA Signature Verification 186-3có—|Sr;rBrˆs r!rŠrŠ6r‹r#có—t|d«S©Nr%©r&rˆs r!rŠrŠ7ó €¼¸QÀ»€r#có—t|d«Sr´rµrˆs r!rŠrŠ8r¶r#)r†ÚqxÚqyzSigVer_TruncatedSHAs.rspcó—|Sr;rBrˆs r!rŠrŠ=r‹r#có—t|d«Sr´rµrˆs r!rŠrŠ>r¶r#có—t|d«Sr´rµrˆs r!rŠrŠ?r¶r#z\[(P-[0-9]+),(SHA-[0-9]+)\]r2é)Ú    SHA512224Ú    SHA512256éýÿÿÿ©Útruncate)r¢Úpoint_xÚpoint_ycó(—|j||«yr;rr‘s    r!r’r’Yr“r#cóH—|jt|j||«yr;r•r‘s    r!r–r–\r—r#z
SigGen.txtÚdcó—t|d«Sr´rµrˆs r!rŠrŠhs €¼¸A¸r»
€r#©r¢rÇcóF—|j|j|«|«yr;ršr›s    r!Ú    sign_testrËxrr#cóF—eZdZdZddgZddddedfdd    d
d edfdd d dedfddddedfdddde    dfddddedfddddedfddddedfddd d!edfdd"d#d$e    dfdd%d&d'ed(fdd)d*d+ed(fdd,d-d.ed(fdd/d0d1ed(fdd2d3d4e    d(fdd5d6d7ed(fdd8d9d:ed(fdd;d<d=ed(fdd>d?d@ed(fddAdBdCe    d(fgZ
dD„Z dE„Z dF„Z yG)HÚ Det_DSA_TestszTests from rfc6979)a4
            86F5CA03DCFEB225063FF830A0C769B9DD9D6153AD91D7CE27F787C43278B447
            E6533B86B18BED6E8A48B784A14C252C5BE0DBF60B86D6385BD2F12FB763ED88
            73ABFD3F5BA2E0A8C0A59082EAC056935E529DAF7C610467899C77ADEDFC846C
            881870B7B19B2B58F9BE0521A17002E3BDD6B86685EE90B3D9A1B02B782B1779Ú(996F967F6C8E388D9E28D01E205FBA957A5698B1a4
            07B0F92546150B62514BB771E2A0C0CE387F03BDA6C56B505209FF25FD3C133D
            89BBCD97E904E09114D9A7DEFDEADFC9078EA544D2E401AEECC40BB9FBBF78FD
            87995A10A1C27CB7789B594BA7EFB5C4326A9FE59A070E136DB77175464ADCA4
            17BE5DCE2F40D10A46A3A3943F26AB7FD9C0398FF8C76EE0A56826A8A88F1DBDÚ(411602CB19A6CCC34494D79D98EF1E7ED5AF25F7a4
            5DF5E01DED31D0297E274E1691C192FE5868FEF9E19A84776454B100CF16F653
            92195A38B90523E2542EE61871C0440CB87C322FC4B4D2EC5E1E7EC766E1BE8D
            4CE935437DC11C3C8FD426338933EBFE739CB3465F4D3668C5E473508253B1E6
            82F65CBDC4FAE93C2EA212390E54905A86E2223170B44EAA7DA5DD9FFCFB7F3BÚDSA1024)ah
            9DB6FB5951B66BB6FE1E140F1D2CE5502374161FD6538DF1648218642F0B5C48
            C8F7A41AADFA187324B87674FA1822B00F1ECF8136943D7C55757264E5A1A44F
            FE012E9936E00C1D3E9310B01C7D179805D3058B2A9F4BB6F9716BFE6117C6B5
            B3CC4D9BE341104AD4A80AD6C94E005F4B993E14F091EB51743BF33050C38DE2
            35567E1B34C3D6A5C0CEAA1A0F368213C3D19843D0B4B09DCB9FC72D39C8DE41
            F1BF14D4BB4563CA28371621CAD3324B6A2D392145BEBFAC748805236F5CA2FE
            92B871CD8F9C36D3292B5509CA8CAA77A2ADFC7BFD77DDA6F71125A7456FEA15
            3E433256A2261C6A06ED3693797E7995FAD5AABBCFBE3EDA2741E375404AE25BÚ@F2C3119374CE76C9356990B465374A17F23F9ED35089BD969F61C6DDE9998C1Fah
            5C7FF6B06F8F143FE8288433493E4769C4D988ACE5BE25A0E24809670716C613
            D7B0CEE6932F8FAA7C44D2CB24523DA53FBE4F6EC3595892D1AA58C4328A06C4
            6A15662E7EAA703A1DECF8BBB2D05DBE2EB956C142A338661D10461C0D135472
            085057F3494309FFA73C611F78B32ADBB5740C361C9F35BE90997DB2014E2EF5
            AA61782F52ABEB8BD6432C4DD097BC5423B285DAFB60DC364E8161F4A2A35ACA
            3A10B1C4D203CC76A470A33AFDCBDD92959859ABD8B56E1725252D78EAC66E71
            BA9AE3F1DD2487199874393CD4D832186800654760E1E34C09E4D155179F9EC0
            DC4473F996BDCE6EED1CABED8B6F116F7AD9CF505DF0F998E34AB27514B0FFE7Ú@69C7548C21D0DFEA6B9A51C9EAD4E27C33D3B3F180316E5BCAB92C933F0E4DBCah
            667098C654426C78D7F8201EAC6C203EF030D43605032C2F1FA937E5237DBD94
            9F34A0A2564FE126DC8B715C5141802CE0979C8246463C40E6B6BDAA2513FA61
            1728716C2E4FD53BC95B89E69949D96512E873B9C8F8DFD499CC312882561ADE
            CB31F658E934C0C197F2C4D96B05CBAD67381E7B768891E4DA3843D24D94CDFB
            5126E9B8BF21E8358EE0E0A30EF13FD6A664C0DCE3731F7FB49A4845A4FD8254
            687972A2D382599C9BAC4E0ED7998193078913032558134976410B89D2C171D1
            23AC35FD977219597AA7D15C1A9A428E59194F75C721EBCBCFAE44696A499AFA
            74E04299F132026601638CB87AB79190D4A0986315DA8EEC6561C938996BEADFÚDSA2048ÚsampleÚ(7BDB6B0FF756E1BB5D53583EF979082F9AD5BD5BÚ(2E1A0C2562B2912CAAF89186FB0F42001585DA55Ú(29EFB6B0AFF2D7A68EB70CA313022253B9A88DF5rÐÚ(562097C06782D60C3037BA7BE104774344687649Ú(4BC3B686AEA70145856814A6F1BB53346F02101EÚ(410697B92295D994D21EDD2F4ADA85566F6F94C1Ú(519BA0546D0C39202A7D34D7DFA5E760B318BCFBÚ(81F2F5850BE5BC123C43F71A3033E9384611C545Ú(4CDD914B65EB6C66A8AAAD27299BEE6B035F5E89Ú(95897CD7BBB944AA932DBC579C1C09EB6FCFC595Ú(07F2108557EE0E3921BC1774F1CA9B410B4CE65AÚ(54DF70456C86FAC10FAB47C1949AB83F2C6F7595Ú(09ECE7CA27D0F5A4DD4E556C9DF1D21D28104F8BÚ(16C3491F9B8C3FBBDD5E7A7B667057F0D8EE8E1BÚ(02C36A127A7B89EDBB72E4FFBC71DABC7D4FC69CÚtestÚ(5C842DF4F9E344EE09F056838B42C7A17F4A6433Ú(42AB2052FD43E123F0607F115052A67DCD9C5C77Ú(183916B0230D45B9931491D4C6B0BD2FB4AAF088Ú(4598B8EFC1A53BC8AECD58D1ABBB0C0C71E67297Ú(6868E9964E36C1689F6037F91F28D5F2C30610F2Ú(49CEC3ACDC83018C5BD2674ECAAD35B8CD22940FÚ(5A67592E8128E03A417B0484410FB72C0B630E1AÚ(22518C127299B0F6FDC9872B282B9E70D0790812Ú(6837EC18F150D55DE95B5E29BE7AF5D01E4FE160Ú(220156B761F6CA5E6C9F1B9CF9C24BE25F98CD89Ú(854CF929B58D73C3CBFDC421E8D5430CD6DB5E66Ú(91D0E0F53E22F898D158380676A871A157CDA622Ú(65D2C2EEB175E370F28C75BFCDC028D22C7DBE9CÚ(8EA47E475BA8AC6F2D821DA3BD212D11A3DEB9A0Ú(7C670C7AD72B6C050C109E1790008097125433E8Ú@888FA6F7738A41BDC9846466ABDB8174C0338250AE50CE955CA16230F9CBD53EÚ@3A1B2DBD7489D6ED7E608FD036C83AF396E290DBD602408E8677DAABD6E7445AÚ@D26FCBA19FA3E3058FFC02CA1596CDBB6E0D20CB37B06054F7E36DED0CDBBCCFrÓÚ@BC372967702082E1AA4FCE892209F71AE4AD25A6DFD869334E6F153BD0C4D806Ú@DC9F4DEADA8D8FF588E98FED0AB690FFCE858DC8C79376450EB6B76C24537E2CÚ@A65A9C3BC7BABE286B195D5DA68616DA8D47FA0097F36DD19F517327DC848CECÚ@8926A27C40484216F052F4427CFD5647338B7B3939BC6573AF4333569D597C52Ú@EACE8BDBBE353C432A795D9EC556C6D021F7A03F42C36E9BC87E4AC7932CC809Ú@7081E175455F9247B812B74583E9E94F9EA79BD640DC962533B0680793A38D53Ú@C345D5AB3DA0A5BCB7EC8F8FB7A7E96069E03B206371EF7D83E39068EC564920Ú@B2DA945E91858834FD9BF616EBAC151EDBC4B45D27D0DD4A7F6A22739F45C00BÚ@19048B63D9FD6BCA1D9BAE3664E1BCB97F7276C306130969F63F38FA8319021BÚ@5A12994431785485B3F5F067221517791B85A597B7A9436995C89ED0374668FCÚ@2016ED092DC5FB669B8EFB3D1F31A91EECB199879BE0CF78F02BA062CB4C942EÚ@D0C76F84B5F091E141572A639A4FB8C230807EEA7D55C8A154A224400AFF2351Ú@6EEA486F9D41A037B2C640BC5645694FF8FF4B98D066A25F76BE641CCB24BA4FÚ@C18270A93CFC6063F57A4DFA86024F700D980E4CF4E2CB65A504397273D98EA0Ú@414F22E5F31A8B6D33295C7539C1C1BA3A6160D7D68D50AC0D3A5BEAC2884FAAÚ@06BD4C05ED74719106223BE33F2D95DA6B3B541DAD7BFBD7AC508213B6DA6670Ú@272ABA31572F6CC55E30BF616B7A265312018DD325BE031BE0CC82AA17870EA3Ú@E9CC286A52CCE201586722D36D1E917EB96A4EBDB47932F9576AC645B3A60806Ú@1D6CE6DDA1C5D37307839CD03AB0A5CBB18E60D800937D67DFB4479AAC8DEAD7Ú@8190012A1969F9957D56FCCAAD223186F423398D58EF5B3CEFD5A4146A4476F0Ú@7452A53F7075D417B4B013B278D1BB8BBD21863F5E7B1CEE679CF2188E1AB19EÚ@206E61F73DBE1B2DC8BE736B22B079E9DACD974DB00EEBBC5B64CAD39CF9F91CÚ@239E66DDBE8F8C230A3D071D601B6FFBDFB5901F94D444C6AF56F732BEB954BEÚ@6BD737513D5E72FE85D1C750E0F73921FE299B945AAD1C802F15C26A43D34961Ú@AFF1651E4CD6036D57AA8B2A05CCF1A9D5A40166340ECBBDC55BE10B568AA0AAÚ@89EC4BB1400ECCFF8E7D9AA515CD1DE7803F2DAFF09693EE7FD1353E90A68307Ú@C9F0BDABCC0D880BB137A994CC7F3980CE91CC10FAF529FC46565B15CEA854E1c    ó¤—ddlm}|dd«}i}|jD])}||ddDcgc] }t|«‘Œc}Ž}|||d<Œ+||_|dd«}g}|jD]Z\}    }
} } } }|t |    «t|
«t | «t | «z| |j|«}|j|«Œ\||_ycc}w)Nr)Ú
namedtupleÚTestKeyz    p q g x yéÿÿÿÿÚTestSigz$message nonce result module test_key)Ú collectionsrÚkeysr'Ú
signaturesrr"Úappend)r6rrÚnew_keysÚkÚyÚtkrÚnew_signaturesÚmessageÚnonceÚrÚsÚmoduleÚtest_keyÚtsigs                r!ÚsetUpzDet_DSA_Tests.setUp]sé€õ    +á˜Y¨ Ó4ˆØˆØ—‘ò    !ˆAÙ¨1¨S¨b¨6Ö2 aœ3˜q6Ò2Ð3ˆBØ ˆHQr‘UŠOð    !ðˆŒ    ñ˜YÐ(NÓOˆØˆØ6:·o±oò    (Ñ 2ˆGU˜A˜q &¨(ÙܘӠܐE“
ܐA“œ˜Q›‘ØØ—    ‘    ˜(Ñ#ó ˆDð × !Ñ ! $Õ 'ð    (ð)ˆùò!3sªC
cóœ—d}d}d|zdz}td||«}tjt|d|«d|||gd«}tj|d«}|j t |j|««d«tjd«j«}|j t |j|««d    «y)
Nl ï%ñ360Š@l /'ÄP‹=àeI+~xÃ\?-)Ïir½r2Fúdeterministic-rfc6979s*009a4d6792295a7f730fc3f2b49cbc0f62e862272fssamples*01795edf0d54db760f156d0dac04c0322b3a204224) Úpowrr€rr)rmrÚ _int2octetsr
ÚdigestÚ _bits2octets)r6Úqr‰rŽrr©rSÚh1s        r!Útest1zDet_DSA_Tests.test1xs»€Ø 7ˆØ 7ˆØ ‰EA‰IˆÜ 1a‹LˆÜm‰mœS  A q›\¨1¨a°°AÐ6¸Ó>ˆÜ—‘˜Ð5Ó6ˆð     ×Ñœ ×!3Ñ!3°AÓ!6Ó7Ø 9ô    ;ôZ‰Z˜    Ó "× )Ñ )Ó +ˆØ ×Ñœ ×!4Ñ!4°RÓ!8Ó9Ø 9õ    ;r#có¨—|jD]Ã}|j}tj|j|j
|j |j|jgd«}tj|d«}|jj|j«}|j|«}|j|j|«ŒÅy)NFr))rr%rr€rÚgrŽr.r‰rr)r$r rNrmr†)r6Úsigrr©rSr`r†s       r!Útest2zDet_DSA_Tests.test2‰s–€à—?‘?ò    1ˆCØ—‘ˆBÜ—-‘- §¡ r§t¡t¨R¯T©T°2·4±4¸¿¹Р>ÀÓFˆCÜ—W‘W˜SÐ"9Ó:ˆFà—z‘z—~‘~ c§k¡kÓ2ˆHØ—[‘[ Ó*ˆFØ × Ñ ˜SŸZ™Z¨Õ 0ñ    1r#N)r?r@rAÚ__doc__rrr    r
r r rr'r0r4rBr#r!rÍrÍ}s$„Ùð ð( ð+5 €DðvØ:Ø:Ø:ØØð  ðØ:Ø:Ø:ØØð  ðØ:Ø:Ø:ØØð  ðØ:Ø:Ø:ØØð  ðØ:Ø:Ø:ØØð  ðØ:Ø:Ø:ØØð  ðØ:Ø:Ø:ØØð  ðØ:Ø:Ø:ØØð  ðØ:Ø:Ø:ØØð  ðØ:Ø:Ø:ØØð  ðØRØRØRØØð  ðØRØRØRØØð  ðØRØRØRØØð  ðØRØRØRØØð  ðØRØRØRØØð  ðØRØRØRØØð  ðØRØRØRØØð  ðØRØRØRØØð  ðØRØRØRØØð  ðØRØRØRØØð  ðsa
€JòF)ò6;ó"    1r#rÍcó˜—eZdZejdd¬«Zej «Zejdd¬«Zej «Z    ejdd¬«Z
e
j «Z ejdd    ¬«Z e j «Z ejd
d ¬«Zej «Zd d ddefd dddefd dddefd dddefd dddefddddefdd d!d"efdd#d$d%efdd&d'd(efdd)d*d+eff
Zd d,d-d.efd d/d0d1efd d2d3d4efd d5d6d7efd d8d9d:efdd;d<d=efdd>d?d@efddAdBdCefddDdEdFefddGdHdIeff
Zd dJdKdLefd dMdNdOefd dPdQdRefd dSdTdUefd dVdWdXefddYdZd[efdd\d]d^efdd_d`daefddbdcddefddedfdgeff
Zd dhdidjefd dkdldmefd dndodpefd dqdrdsefd dtdudvefddwdxdyefddzd{d|efdd}d~defdd€dd‚efddƒd„d…eff
Zd d†d‡dˆefd d‰dŠd‹efd dŒddŽefd ddd‘efd d’d“d”efdd•d–d—efdd˜d™dšefdd›dœdefddždŸd efdd¡d¢d£eff
ZgZeD]8\ZZZZZe e«e!e«e!e«e!e«efZ"ejGe"«Œ:gZ$eD]8\ZZZZZe e«e!e«e!e«e!e«efZ"e$jGe"«Œ:gZ%eD]8\ZZZZZe e«e!e«e!e«e!e«efZ"e%jGe"«Œ:gZ&eD]8\ZZZZZe e«e!e«e!e«e!e«efZ"e&jGe"«Œ:gZ'eD]8\ZZZZZe e«e!e«e!e«e!e«efZ"e'jGe"«Œ:d¤„Z(d¥„Z)d¦„Z*d§„Z+d¨„Z,d©„Z-dª„Z.d«„Z/d¬„Z0d­„Z1d®„Z2y¯)°ÚDet_ECDSA_TestszP-192l ÔÁ}at÷}5KÕV?sš|IÓ$XúrÉzP-224lÁWä€!ô3qc‹>”Q2zl|  ÿ-a͈<r l!g$¬S\'1]Íva(N­cž]
aµf¢NnìT¯IzP-384lõm¥A©'–C_“¹j–Xobáº#ª)÷Rü³<b›>–Y­C[€ã—V=×zP-521l#85p-¦CE`Àq{{}löf(¿E65ƒU}xëQ×yc4nQûcX[Ì;\:m3h_tI]b*Û ërÔÚ037D7CA00D2C7B0E5E412AC03BD44BA837FDD5B28CD3B0021Ú098C6BD12B23EAF5E2A2045132086BE3EB8EBD62ABF6698FFÚ057A22B07DEA9530F8DE9471B1DC6624472E8E2844BC25B64Ú04381526B3FC1E7128F202E194505592F01D5FF4C5AF015D8Ú0A1F00DAD97AEEC91C95585F36200C65F3C01812AA60378F5Ú0E07EC1304C7C6C9DEBBE980B9692668F81D4DE7922A0F97AÚ032B1B6D7D42A05CB449065727A84804FB1A3E34D8F261496Ú04B0B8CE98A92866A2820E20AA6B75B56382E0F9BFD5ECB55Ú0CCDB006926EA9565CBADC840829D8C384E06DE1F1E381B85Ú04730005C4FCB01834C063A7B6760096DBE284B8252EF4311Ú0DA63BF0B9ABCF948FBB1E9167F136145F7A20426DCC287D5Ú0C3AA2C960972BD7A2003A57E1C4C77F0578F8AE95E31EC5EÚ0A2AC7AB055E4F20692D49209544C203A7D1F2C0BFBC75DB1Ú04D60C5AB1996BD848343B31C00850205E2EA6922DAC2E4B8Ú03F6E837448F027A1BF4B34E796E32A811CBB4050908D8F67räÚ0D9CF9C3D3297D3260773A1DA7418DB5537AB8DD93DE7FA25Ú00F2141A0EBBC44D2E1AF90A50EBCFCE5E197B3B7D4DE036DÚ0EB18BC9E1F3D7387500CB99CF5F7C157070A8961E38700B7Ú0F5DC805F76EF851800700CCE82E7B98D8911B7D510059FBEÚ06945A1C1D1B2206B8145548F633BB61CEF04891BAF26ED34Ú0B7FB7FDFC339C0B9BD61A9F5A8EAF9BE58FC5CBA2CB15293Ú05C4CE89CF56D9E7C77C8585339B006B97B5F0680B4306C6CÚ03A718BD8B4926C3B52EE6BBE67EF79B18CB6EB62B1AD97AEÚ05662E6848A4A19B1F1AE2F72ACD4B8BBE50F1EAC65D9124FÚ05AFEFB5D3393261B828DB6C91FBC68C230727B030C975693Ú0B234B60B4DB75A733E19280A7A6034BD6B1EE88AF5332367Ú07994090B2D59BB782BE57E74A44C9A1C700413F8ABEFE77AÚ00758753A5254759C7CFBAD2E2D9B0792EEE44136C9480527Ú0FE4F4AE86A58B6507946715934FE2D8FF9D95B6B098FE739Ú074CF5605C98FBA0E1EF34D4B5A1577A7DCF59457CAE52290Ú87EEFADD91110D8DE6C2C470831387C50D3357F7F4D477054B8B426BCÚ822226F9D40A96E19C4A301CE5B74B115303C0F3A4FD30FC257FB57ACÚ866D1CDD83E3AF75605DD6E2FEFF196D30AA7ED7A2EDF7AF475403D69Ú8C1D1F2F10881088301880506805FEB4825FE09ACB6816C36991AA06DÚ81CDFE6662DDE1E4A1EC4CDEDF6A1F5A2FB7FBD9145C12113E6ABFD3EÚ8A6694FD7718A21053F225D3F46197CA699D45006C06F871808F43EBCÚ8AD3029E0278F80643DE33917CE6908C70A8FF50A411F06E41DEDFCDCÚ861AA3DA010E8E8406C656BC477A7A7189895E7E840CDFE8FF42307BAÚ8BC814050DAB5D23770879494F9E0A680DC1AF7161991BDE692B10101Ú852B40F5A9D3D13040F494E83D3906C6079F29981035C7BD51E5CAC40Ú80B115E5E36F0F9EC81F1325A5952878D745E19D7BB3EABFABA77E953Ú8830F34CCDFE826CCFDC81EB4129772E20E122348A2BBD889A1B1AF1DÚ89DB103FFEDEDF9CFDBA05184F925400C1653B8501BAB89CEA0FBEC14Ú8074BD1D979D5F32BF958DDC61E4FB4872ADCAFEB2256497CDAC30397Ú8A4CECA196C3D5A1FF31027B33185DC8EE43F288B21AB342E5D8EB084Ú82519178F82C3F0E4F87ED5883A4E114E5B7A6E374043D8EFD329C253Ú8DEAA646EC2AF2EA8AD53ED66B2E2DDAA49A12EFD8356561451F3E21CÚ895987796F6CF2062AB8135271DE56AE55366C045F6D9593F53787BD2Ú8DF8B38D40DCA3E077D0AC520BF56B6D565134D9B5F2EAE0D34900524Ú8C441CE8E261DED634E4CF84910E4C5D1D22C5CF3B732BB204DBEF019Ú8902F42847A63BDC5F6046ADA114953120F99442D76510150F372A3F4Ú8FF86F57924DA248D6E44E8154EB69F0AE2AEBAEE9931D0B5A969F904Ú8AD04DDE87B84747A243A631EA47A1BA6D1FAA059149AD2440DE6FBA6Ú8178D49B1AE90E3D8B629BE3DB5683915F4E8C99FDF6E666CF37ADCFDÚ87046742B839478C1B5BD31DB2E862AD868E1A45C863585B5F22BDC2DÚ8389B92682E399B26518A95506B52C03BC9379A9DADF3391A21FB0EA4Ú8414A718ED3249FF6DBC5B50C27F71F01F070944DA22AB1F78F559AABÚ8E39C2AA4EA6BE2306C72126D40ED77BF9739BB4D6EF2BBB1DCB6169DÚ8049F050477C5ADD858CAC56208394B5A55BAEBBE887FDF765047C17CÚ8077EB13E7005929CEFA3CD0403C7CDCC077ADF4E44F3C41B2F60ECFFÚ@882905F1227FD620FBF2ABF21244F0BA83D0DC3A9103DBBEE43A1FB858109DB4Ú@61340C88C3AAEBEB4F6D667F672CA9759A6CCAA9FA8811313039EE4A35471D32Ú@6D7F147DAC089441BB2E2FE8F7A3FA264B9C475098FDCF6E00D7C996E1B8B7EBÚ@103F90EE9DC52E5E7FB5132B7033C63066D194321491862059967C715985D473Ú@53B2FFF5D1752B2C689DF257C04C40A587FABABB3F6FC2702F1343AF7CA9AA3FÚ@B9AFB64FDC03DC1A131C7D2386D11E349F070AA432A4ACC918BEA988BF75C74CÚ@A6E3C57DD01ABE90086538398355DD4C3B17AA873382B0F24D6129493D8AAD60Ú@EFD48B2AACB6A8FD1140DD9CD45E81D69D2C877B56AAF991C34D0EA84EAF3716Ú@F7CB1C942D657C41D436C7A1B6E29F65F3E900DBB9AFF4064DC4AB2F843ACDA8Ú@09F634B188CEFD98E7EC88B1AA9852D734D0BC272F7D2A47DECC6EBEB375AAD4Ú@0EAFEA039B20E9B42309FB1D89E213057CBF973DC0CFC8F129EDDDC800EF7719Ú@4861F0491E6998B9455193E34E7B0D284DDD7149A74B95B9261F13ABDE940954Ú@5FA81C63109BADB88C1F367B47DA606DA28CAD69AA22C4FE6AD7DF73A7173AA5Ú@8496A60B5E9B47C825488827E0495B0E3FA109EC4568FD3F8D1097678EB97F00Ú@2362AB1ADBE2B8ADF9CB9EDAB740EA6049C028114F2460F96554F61FAE3302FEÚ@8C9520267C55D6B980DF741E56B4ADEE114D84FBFA2E62137954164028632A2EÚ@0CBCC86FD6ABD1D99E703E1EC50069EE5C0B4BA4B9AC60E409E8EC5910D81A89Ú@01B9D7B73DFAA60D5651EC4591A0136F87653E0FD780C3B1BC872FFDEAE479B1Ú@669F4426F2688B8BE0DB3A6BD1989BDAEFFF84B649EEB84F3DD26080F667FAA7Ú@C37EDB6F0AE79D47C3C27E962FA269BB4F441770357E114EE511F662EC34A692Ú@C820053A05791E521FCAAD6042D40AEA1D6B1A540138558F47D0719800E18F2DÚ@D16B6AE827F17175E040871A1C7EC3500192C4C92677336EC2537ACAEE0008E0Ú@F1ABB023518351CD71D881567B1EA663ED3EFCF6C5132B354F28D3B0B7D38367Ú@019F4113742A2B14BD25926B49C649155F267E60D3814B4C0CC84250E46F0083Ú@16AEFFA357260B04B1DD199693960740066C1A8F3E8EDD79070AA914D361B3B8Ú@83910E8B48BB0C74244EBDF7F07A1C5413D61472BD941EF3920E623FBCCEBEB6Ú@8DDBEC54CF8CD5874883841D712142A56A8D0F218F5003CB0296B6B509619F2CÚ@6915D11632ACA3C40D5D51C08DAF9C555933819548784480E93499000D9F0B7FÚ@461D93F31B6540894788FD206C07CFA0CC35F46FA3C91816FFF1040AD1581A04Ú@39AF9F15DE0DB8D97E72719C74820D304CE5226E32DEDAE67519E840D1194E55Ú`4471EF7518BB2C7C20F62EAE1C387AD0C5E8E470995DB4ACF694466E6AB096630F29E5938D25106C3C340045A2DB01A7Ú`EC748D839243D6FBEF4FC5C4859A7DFFD7F3ABDDF72014540C16D73309834FA37B9BA002899F6FDA3A4A9386790D4EB2Ú`A3BCFA947BEEF4732BF247AC17F71676CB31A847B9FF0CBC9C9ED4C1A5B3FACF26F49CA031D4857570CCB5CA4424A443Ú`A4E4D2F0E729EB786B31FC20AD5D849E304450E0AE8E3E341134A5C1AFA03CAB8083EE4E3C45B06A5899EA56C51B5879Ú`42356E76B55A6D9B4631C865445DBE54E056D3B3431766D0509244793C3F9366450F76EE3DE43F5A125333A6BE060122Ú`9DA0C81787064021E78DF658F2FBB0B042BF304665DB721F077A4298B095E4834C082C03D83028EFBF93A3C23940CA8DÚ`180AE9F9AEC5438A44BC159A1FCB277C7BE54FA20E7CF404B490650A8ACC414E375572342863C899F9F2EDF9747A9B60Ú`21B13D1E013C7FA1392D03C5F99AF8B30C570C6F98D4EA8E354B63A21D3DAA33BDE1E888E63355D92FA2B3C36D8FB2CDÚ`F3AA443FB107745BF4BD77CB3891674632068A10CA67E3D45DB2266FA7D1FEEBEFDC63ECCD1AC42EC0CB8668A4FA0AB0Ú`94ED910D1A099DAD3254E9242AE85ABDE4BA15168EAF0CA87A555FD56D10FBCA2907E3E83BA95368623B8C4686915CF9Ú`94EDBB92A5ECB8AAD4736E56C691916B3F88140666CE9FA73D64C4EA95AD133C81A648152E44ACF96E36DD1E80FABE46Ú`99EF4AEB15F178CEA1FE40DB2603138F130E740A19624526203B6351D0A3A94FA329C145786E679E7B82C71A38628AC8Ú`92FC3C7183A883E24216D1141F1A8976C5B0DD797DFA597E3D7B32198BD35331A4E966532593A52980D0E3AAA5E10EC3Ú`ED0959D5880AB2D869AE7F6C2915C6D60F96507F9CB3E047C0046861DA4A799CFE30F35CC900056D7C99CD7882433709Ú`512C8CCEEE3890A84058CE1E22DBC2198F42323CE8ACA9135329F03C068E5112DC7CC3EF3446DEFCEB01A45C2667FDD5Ú`66CC2C8F4D303FC962E5FF6A27BD79F84EC812DDAE58CF5243B64A4AD8094D47EC3727F3A3C186C15054492E30698497Ú`4BC35D3A50EF4E30576F58CD96CE6BF638025EE624004A1F7789A8B8E43D0678ACD9D29876DAF46638645F7F404B11C7Ú`D5A6326C494ED3FF614703878961C0FDE7B2C278F9A65FD8C4B7186201A2991695BA1C84541327E966FA7B50F7382282Ú`18FA39DB95AA5F561F30FA3591DC59C0FA3653A80DAFFA0B48D1A4C6DFCBFF6E3D33BE4DC5EB8886A8ECD093F2935726Ú`E8C9D0B6EA72A0E7837FEA1D14A1A9557F29FAA45D3E7EE888FC5BF954B5E62464A9A817C47FF78B8C11066B24080E72Ú`07041D4A7A0379AC7232FF72E6F77B6DDB8F09B16CCE0EC3286B2BD43FA8C6141C53EA5ABEF0D8231077A04540A96B66Ú`0CFAC37587532347DC3389FDC98286BBA8C73807285B184C83E62E26C401C0FAA48DD070BA79921A3457ABFF2D630AD7Ú`6D6DEFAC9AB64DABAFE36C6BF510352A4CC27001263638E5B16D9BB51D451559F918EEDAF2293BE5B475CC8F0188636BÚ`2D46F3BECBCC523D5F1A1256BF0C9B024D879BA9E838144C8BA6BAEB4B53B47D51AB373F9845C0514EEFB14024787265Ú`015EE46A5BF88773ED9123A5AB0807962D193719503C527B031B4C2D225092ADA71F4A459BC0DA98ADB95837DB8312EAÚ`8203B63D3C853E8D77227FB377BCF7B7B772E97892A80F36AB775D509D7A5FEB0542A7F0812998DA8F1DD3CA3CF023DBÚ`DDD0760448D42D8A43AF45AF836FCE4DE8BE06B485E9B61B827C2F13173923E06A739F040649A667BF3B828246BAA5A5Ú`3780C4F67CB15518B6ACAE34C9F83568D2E12E47DEAB6C50A4E4EE5319D1E8CE0E2CC8A136036DC4B9C00E6888F66B6CÚ`A0D5D090C9980FAF3C2CE57B7AE951D31977DD11C775D314AF55F76C676447D06FB6495CD21B4B6E340FC236584FB277Ú`976984E59B4C77B0E8E4460DCA3D9F20E07B9BB1F63BEEFAF576F6B2E8B224634A2092CD3792E0159AD9CEE37659C736ڄ0089C071B419E1C2820962321787258469511958E80582E95D8378E0C2CCDB3CB42BEDE42F50E3FA3C71F5A76724281D31D9C89F0F91FC1BE4918DB1C03A5838D0F9ڄ00343B6EC45728975EA5CBA6659BBB6062A5FF89EEA58BE3C80B619F322C87910FE092F7D45BB0F8EEE01ED3F20BABEC079D202AE677B243AB40B5431D497C55D75Dڄ00E7B0E675A9B24413D448B8CC119D2BF7B2D2DF032741C096634D6D65D0DBE3D5694625FB9E8104D3B842C1B0E2D0B98BEA19341E8676AEF66AE4EBA3D5475D5D16ڄ0121415EC2CD7726330A61F7F3FA5DE14BE9436019C4DB8CB4041F3B54CF31BE0493EE3F427FB906393D895A19C9523F3A1D54BB8702BD4AA9C99DAB2597B92113F3ڄ01776331CFCDF927D666E032E00CF776187BC9FDD8E69D0DABB4109FFE1B5E2A30715F4CC923A4A5E94D2503E9ACFED92857B7F31D7152E0F8C00C15FF3D87E2ED2Eڄ0050CB5265417FE2320BBB5A122B8E1A32BD699089851128E360E620A30C7E17BA41A666AF126CE100E5799B153B60528D5300D08489CA9178FB610A2006C254B41Fڄ00EDF38AFCAAECAB4383358B34D67C9F2216C8382AAEA44A3DAD5FDC9C32575761793FEF24EB0FC276DFC4F6E3EC476752F043CF01415387470BCBD8678ED2C7E1A0ڄ01511BB4D675114FE266FC4372B87682BAECC01D3CC62CF2303C92B3526012659D16876E25C7C1E57648F23B73564D67F61C6F14D527D54972810421E7D87589E1A7ڄ004A171143A83163D6DF460AAF61522695F207A58B95C0644D87E52AA1A347916E4F7A72930B1BC06DBE22CE3F58264AFD23704CBB63B29B931F7DE6C9D949A7ECFCڄ01546A108BC23A15D6F21872F7DED661FA8431DDBD922D0DCDB77CC878C8553FFAD064C95A920A750AC9137E527390D2D92F153E66196966EA554D9ADFCB109C4211ڄ01EA842A0E17D2DE4F92C15315C63DDF72685C18195C2BB95E572B9C5136CA4B4B576AD712A52BE9730627D16054BA40CC0B8D3FF035B12AE75168397F5D50C67451ڄ01F21A3CEE066E1961025FB048BD5FE2B7924D0CD797BABE0A83B66F1E35EEAF5FDE143FA85DC394A7DEE766523393784484BDF3E00114A1C857CDE1AA203DB65D61ڄ01DAE2EA071F8110DC26882D4D5EAE0621A3256FC8847FB9022E2B7D28E6F10198B1574FDD03A9053C08A1854A168AA5A57470EC97DD5CE090124EF52A2F7ECBFFD3ڄ00C328FAFCBD79DD77850370C46325D987CB525569FB63C5D3BC53950E6D4C5F174E25A1EE9017B5D450606ADD152B534931D7D4E8455CC91F9B15BF05EC36E377FAڄ00617CCE7CF5064806C467F678D3B4080D6F1CC50AF26CA209417308281B68AF282623EAA63E5B5C0723D8B8C37FF0777B1A20F8CCB1DCCC43997F1EE0E44DA4A67Aڄ00BB9F2BF4FE1038CCF4DABD7139A56F6FD8BB1386561BD3C6A4FC818B20DF5DDBA80795A947107A1AB9D12DAA615B1ADE4F7A9DC05E8E6311150F47F5C57CE8B222ڄ013BAD9F29ABE20DE37EBEB823C252CA0F63361284015A3BF430A46AAA80B87B0693F0694BD88AFE4E661FC33B094CD3B7963BED5A727ED8BD6A3A202ABE009D0367ڄ01E9BB81FF7944CA409AD138DBBEE228E1AFCC0C890FC78EC8604639CB0DBDC90F717A99EAD9D272855D00162EE9527567DD6A92CBD629805C0445282BBC916797FFڄ0040D09FCF3C8A5F62CF4FB223CBBB2B9937F6B0577C27020A99602C25A01136987E452988781484EDBBCF1C47E554E7FC901BC3085E5206D9F619CFF07E73D6F706ڄ01C7ED902E123E6815546065A2C4AF977B22AA8EADDB68B2C1110E7EA44D42086BFE4A34B67DDC0E17E96536E358219B23A706C6A6E16BA77B65E1C595D43CAE17FBڄ0177336676304FCB343CE028B38E7B4FBA76C1C1B277DA18CAD2A8478B2A9A9F5BEC0F3BA04F35DB3E4263569EC6AADE8C92746E4C82F8299AE1B8F1739F8FD519A4ڄ001DE74955EFAABC4C4F17F8E84D881D1310B5392D7700275F82F145C61E843841AF09035BF7A6210F5A431A6A9E81C9323354A9E69135D44EBD2FCAA7731B909258ڄ000E871C4A14F993C6C7369501900C4BC1E9C7B0B4BA44E04868B30B41D8071042EB28C4C250411D0CE08CD197E4188EA4876F279F90B3D8D74A3C76E6F1E4656AA8ڄ00CD52DBAA33B063C3A6CD8058A1FB0A46A4754B034FCC644766CA14DA8CA5CA9FDE00E88C1AD60CCBA759025299079D7A427EC3CC5B619BFBC828E7769BCD694E86ڄ01F1FC4A349A7DA9A9E116BFDD055DC08E78252FF8E23AC276AC88B1770AE0B5DCEB1ED14A4916B769A523CE1E90BA22846AF11DF8B300C38818F713DADD85DE0C88ڄ014BEE21A18B6D8B3C93FAB08D43E739707953244FDBE924FA926D76669E7AC8C89DF62ED8975C2D8397A65A49DCC09F6B0AC62272741924D479354D74FF6075578Cڄ0133330865C067A0EAF72362A65E2D7BC4E461E8C8995C3B6226A21BD1AA78F0ED94FE536A0DCA35534F0CD1510C41525D163FE9D74D134881E35141ED5E8E95B979ڄ016200813020EC986863BEDFC1B121F605C1215645018AEA1A7B215A564DE9EB1B38A67AA1128B80CE391C4FB71187654AAA3431027BFC7F395766CA988C964DC56Dڄ013E99020ABF5CEE7525D16B69B229652AB6BDF2AFFCAEF38773B4B7D08725F10CDB93482FDCC54EDCEE91ECA4166B2A7C6265EF0CE2BD7051B7CEF945BABD47EE6Dڄ01FBD0013C674AA79CB39849527916CE301C66EA7CE8B80682786AD60F98F7E78A19CA69EFF5C57400E3B3A0AD66CE0978214D13BAF4E9AC60752F7B155E2DE4DCE3có—y)NzDeterministic ECDSA TestsrBrFs r!rGz Det_ECDSA_Tests.shortDescription/s€Ø*r#cóô—tjd«}tj|jd«}|j    |«}tj|j
d«}|j ||«y©NrJr))r r)rÚ key_priv_p192rNÚ key_pub_p192rPrQs     r!Útest_loopback_p192z"Det_ECDSA_Tests.test_loopback_p1922óZ€Ü—Z‘Z Ó(ˆ
Ü—‘˜×+Ñ+Ð-DÓEˆØ—K‘K 
Ó+ˆ    ä—7‘7˜4×,Ñ,Ð.EÓFˆØ‰˜
 IÕ.r#cóô—tjd«}tj|jd«}|j    |«}tj|j
d«}|j ||«yrÐ)r r)rÚ key_priv_p224rNÚ key_pub_p224rPrQs     r!Útest_loopback_p224z"Det_ECDSA_Tests.test_loopback_p224:rÔr#cóô—tjd«}tj|jd«}|j    |«}tj|j
d«}|j ||«yrÐ)r r)rÚ key_priv_p256rNÚ key_pub_p256rPrQs     r!Útest_loopback_p256z"Det_ECDSA_Tests.test_loopback_p256BrÔr#cóô—tjd«}tj|jd«}|j    |«}tj|j
d«}|j ||«yrÐ)r r)rÚ key_priv_p384rNÚ key_pub_p384rPrQs     r!Útest_loopback_p384z"Det_ECDSA_Tests.test_loopback_p384JrÔr#cóô—tjd«}tj|jd«}|j    |«}tj|j
d«}|j ||«yrÐ)r r)rÚ key_priv_p521rNÚ key_pub_p521rPrQs     r!Útest_loopback_p521z"Det_ECDSA_Tests.test_loopback_p521RrÔr#cóà—tj|jd«}|jD]?\}}}}}|j|«}|j    |«}|j ||z|«ŒAy©Nr))rr)rÑÚsignatures_p192rNrm©    r6rSr rr"r#r$r`r†s             r!Útest_data_rfc6979_p192z&Det_ECDSA_Tests.test_data_rfc6979_p192Zói€Ü—‘˜×+Ñ+Ð-DÓEˆØ(,×(<Ñ(<ò    ,Ñ $ˆGQ˜˜1˜fØ—z‘z 'Ó*ˆHØ—[‘[ Ó*ˆFØ × Ñ ˜Q ™U FÕ +ñ    ,r#cóà—tj|jd«}|jD]?\}}}}}|j|«}|j    |«}|j ||z|«ŒAyræ)rr)rÖÚsignatures_p224rNrmrès             r!Útest_data_rfc6979_p224z&Det_ECDSA_Tests.test_data_rfc6979_p224arêr#cóà—tj|jd«}|jD]?\}}}}}|j|«}|j    |«}|j ||z|«ŒAyræ)rr)rÚÚsignatures_p256rNrmrès             r!Útest_data_rfc6979_p256z&Det_ECDSA_Tests.test_data_rfc6979_p256hrêr#cóà—tj|jd«}|jD]?\}}}}}|j|«}|j    |«}|j ||z|«ŒAyræ)rr)rÞÚsignatures_p384rNrmrès             r!Útest_data_rfc6979_p384z&Det_ECDSA_Tests.test_data_rfc6979_p384orêr#cóà—tj|jd«}|jD]?\}}}}}|j|«}|j    |«}|j ||z|«ŒAyræ)rr)râÚsignatures_p521rNrmrès             r!Útest_data_rfc6979_p521z&Det_ECDSA_Tests.test_data_rfc6979_p521vrêr#N)3r?r@rArr€rÑr®rÒrÖr×rÚrÛrÞrßrârãrr    r
r r Úsignatures_p192_Úsignatures_p224_Úsignatures_p256_Úsignatures_p384_Úsignatures_p521_rçÚaÚbÚcrÇryrrÚnew_tvrrìrïròrõrGrÓrØrÜràrärérírðrórörBr#r!r7r7•sM„à!C—M‘M¨Ð3eÔf€MØ ×+Ñ+Ó-€Là!C—M‘M¨Ð3mÔn€MØ ×+Ñ+Ó-€Là!C—M‘M¨Ð3uÔv€MØ ×+Ñ+Ó-€Là!C—M‘M¨ð4VôW€MØ ×+Ñ+Ó-€Là!C—M‘M¨ð4yôz€MØ ×+Ñ+Ó-€Lð Ø >Ø >Ø >Ø ð     
ð Ø >Ø >Ø >Ø ð     
ð Ø >Ø >Ø >Ø ð     
ð Ø >Ø >Ø >Ø ð     
ð Ø >Ø >Ø >Ø ð     
ð Ø >Ø >Ø >Ø ð     
ð Ø >Ø >Ø >Ø ð     
ð Ø >Ø >Ø >Ø ð     
ð Ø >Ø >Ø >Ø ð     
ð Ø >Ø >Ø >Ø ð     
ðAGÐðV Ø FØ FØ FØ ð     
ð Ø FØ FØ FØ ð     
ð Ø FØ FØ FØ ð     
ð Ø FØ FØ FØ ð     
ð Ø FØ FØ FØ ð     
ð Ø FØ FØ FØ ð     
ð Ø FØ FØ FØ ð     
ð Ø FØ FØ FØ ð     
ð Ø FØ FØ FØ ð     
ð Ø FØ FØ FØ ð     
ðAGÐðV Ø NØ NØ NØ ð     
ð Ø NØ NØ NØ ð     
ð Ø NØ NØ NØ ð     
ð Ø NØ NØ NØ ð     
ð Ø NØ NØ NØ ð     
ð Ø NØ NØ NØ ð     
ð Ø NØ NØ NØ ð     
ð Ø NØ NØ NØ ð     
ð Ø NØ NØ NØ ð     
ð Ø NØ NØ NØ ð     
ðAGÐðV Ø nØ nØ nØ ð     
ð Ø nØ nØ nØ ð     
ð Ø nØ nØ nØ ð     
ð Ø nØ nØ nØ ð     
ð Ø nØ nØ nØ ð     
ð Ø nØ nØ nØ ð     
ð Ø nØ nØ nØ ð     
ð Ø nØ nØ nØ ð     
ð Ø nØ nØ nØ ð     
ð Ø nØ nØ nØ ð     
ðAGÐðV ð Sð Sð SØ ð     
ð ð Sð Sð SØ ð     
ð ð Sð Sð SØ ð     
ð ð Sð Sð SØ ð     
ð ð Sð Sð SØ ð     
ð ð Sð Sð SØ ð     
ð ð Sð Sð SØ ð     
ð ð Sð Sð SØ ð     
ð ð Sð Sð SØ ð     
ð ð Sð Sð SØ ð     
ðAGÐðR€OØ)ò'‰ ˆˆ1ˆaAÙ˜!“*™i¨›l©I°a«L¹)ÀA»,ÈÐJˆØ×јvÕ&ð'ð€OØ)ò'‰ ˆˆ1ˆaAÙ˜!“*™i¨›l©I°a«L¹)ÀA»,ÈÐJˆØ×јvÕ&ð'ð€OØ)ò'‰ ˆˆ1ˆaAÙ˜!“*™i¨›l©I°a«L¹)ÀA»,ÈÐJˆØ×јvÕ&ð'ð€OØ)ò'‰ ˆˆ1ˆaAÙ˜!“*™i¨›l©I°a«L¹)ÀA»,ÈÐJˆØ×јvÕ&ð'ð€OØ)ò'‰ ˆˆ1ˆaAÙ˜!“*™i¨›l©I°a«L¹)ÀA»,ÈÐJˆØ×јvÕ&ð'ò+ò/ò/ò/ò/ò/ò,ò,ò,ò,ó,r#r7có|—|dk(rt}|S|dk(rtjd¬«}|S|dk(rtjd¬«}|S|dk(rt}|S|dk(rt}|S|d    k(rt}|S|d
k(rt
}|S|d k(rt }|S|d k(rt}|S|d k(rt}|S|dk(rt}|Std|z«‚)NzSHA-512z SHA-512/224Ú224rÁz SHA-512/256Ú256zSHA-384zSHA-256zSHA-224zSHA-1zSHA3-224zSHA3-256zSHA3-384zSHA3-512zUnknown hash algorithm: ) r r)r r
r    rr rrrr_)r-Ú hash_modules  r!Úget_hash_moduler~s"€ØIÒ܈ ð. Ðð-
mÒ    #Ü—j‘j¨%Ô0ˆ ð* Ðð)
mÒ    #Ü—j‘j¨%Ô0ˆ ð& Ðð%
iÒ    Üˆ ð" Ðð!
iÒ    Üˆ ð Ðð
iÒ    Üˆ ð Ðð
gÒ    Üˆ ð Ðð
jÒ     Üˆ ð Ðð
jÒ     Üˆ ð Ðð
jÒ     Üˆ ð
Ðð    
jÒ     Üˆ ð ÐôÐ3°iÑ?Ó@Ð@r#có0—eZdZd„Zd„Zd„Zd„Zd„Zd„Zy)ÚTestVectorsDSAWycheproofcóz—tjj|«||_||_d|_g|_y©NÚNone)ÚunittestÚTestCaser9Ú_wycheproof_warningsÚ _slow_testsÚ_idÚtv©r6Úwycheproof_warningsÚ
slow_testss   r!r9z!TestVectorsDSAWycheproof.__init__œs4€Ü×Ñ×"Ñ" 4Ô(Ø$7ˆÔ!Ø%ˆÔ؈ŒØˆr#c    óf—d„}d„}d„}tddd|||dœ¬«}|xj|z c_y)    Ncó2—tj|d«S)NÚkeyPem)rÚ
import_key©Úgroups r!Ú
filter_dsaz2TestVectorsDSAWycheproof.setUp.<locals>.filter_dsa¥s€Ü—>‘> %¨¡/Ó2Ð 2r#có—t|d«S©NÚsha©rrs r!Ú
filter_shaz2TestVectorsDSAWycheproof.setUp.<locals>.filter_sha¨ó€Ü" 5¨¡<Ó0Ð 0r#có6—|d}|dk7rtd|z«‚|S)NÚtypeÚ    DsaVerifyúUnknown signature type ©r_)rÚsig_types  r!Ú filter_typez3TestVectorsDSAWycheproof.setUp.<locals>.filter_type«s)€Ø˜V‘}ˆHؘ;Ò&Ü Ð!:¸XÑ!EÓFÐF؈Or#©r…Ú
wycheproofz dsa_test.jsonzWycheproof DSA signature)r©rr%©Ú    group_tag©rr)r6rrr&r†s     r!r'zTestVectorsDSAWycheproof.setUp£sF€ò    3ò    1ò    ô .Ð.IØ.=Ø.HØ@JØHRØEPñ9RôSˆð      Š6ÑŽr#có—|jSr;©rrFs r!rGz)TestVectorsDSAWycheproof.shortDescription¹ó €Øx‰xˆr#có˜—|jr>|jr1ddl}|jd|j›d|j
›d«yyy©NrzWycheproof warning: z (ú)©Úwarningr ÚwarningsÚwarnrÚcomment©r6rr4s   r!r5zTestVectorsDSAWycheproof.warn¼ó4€Ø :Š:˜$×3Ò3Û Ø MŠM¸4¿8»8ÀRÇZÃZÐPÕ Qð4ˆ:r#có®—dt|j«z|_|jj    |j
«}t j|jdd¬«}    |j||j«}|jsJ‚|j|«y#t$r)}|jrYd}~y|jrJ‚Yd}~yd}~wwxYw)NzWycheproof DSA Test #rKrj©Úencoding)rvÚidrrr)rxrr©rPr3Úvalidr5r_r3©r6rrRrSrTrys      r!Ú test_verifyz$TestVectorsDSAWycheproof.test_verifyÁsŸ€Ø*¬S°·±«ZÑ7ˆŒà—^‘^×'Ñ'¨¯©Ó/ˆ
Ü—‘˜Ÿ™ ¸Ô>ˆð    ØŸ ™  j°"·&±&Ó9ˆIð —8’8ˆO8Ø I‰IbMøô ò     ØzŠzÜØ—x’xÐ <”xûð     úsÁ&B"Â"    CÂ+ CÂ<CÃCcóH—|jD]}|j|«Œyr;©rr?©r6rs  r!ÚrunTestz TestVectorsDSAWycheproof.runTestÐó#€Ø—'‘'ò    !ˆBØ × Ñ ˜RÕ  ñ    !r#N)    r?r@rAr9r'rGr5r?rCrBr#r!rršs!„òòò,òRò
ó!r#rcó6—eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z    y)    ÚTestVectorsECDSAWycheproofcól—tjj|«||_||_d|_yr)r
r r9r r rrs   r!r9z#TestVectorsECDSAWycheproof.__init__×s-€Ü×Ñ×"Ñ" 4Ô(Ø$7ˆÔ!Ø%ˆÔ؈r#c    ól—d„}d„}d„}td|d|z|||dœ¬«}|xj|z c_y)NcóH—|dddvrytj|d«S)Nr©r¢) Ú    secp224k1Ú    secp256k1ÚbrainpoolP224r1ÚbrainpoolP224t1ÚbrainpoolP256r1ÚbrainpoolP256t1ÚbrainpoolP320r1ÚbrainpoolP320t1ÚbrainpoolP384r1ÚbrainpoolP384t1ÚbrainpoolP512r1ÚbrainpoolP512t1r)rrrs r!Ú
filter_eccz8TestVectorsECDSAWycheproof.add_tests.<locals>.filter_eccßs0€àU‰|˜GÑ$ð)+ñ+ðÜ—>‘> %¨¡/Ó2Ð 2r#có—t|d«Srrrs r!rz8TestVectorsECDSAWycheproof.add_tests.<locals>.filter_shaërr#có@—|d}|dk(ry|dk(rytd|z«‚)Nr!Ú EcdsaVerifyrjÚEcdsaP1363VerifyÚbinaryr#r$)rÚ encoding_names  r!Úfilter_encodingz=TestVectorsECDSAWycheproof.add_tests.<locals>.filter_encodingîs3€Ø! &™MˆMØ  Ò-ØØÐ"4Ò4Øä Ð!:¸]Ñ!JÓKÐKr#r'zWycheproof ECDSA signature (%s))r©rr;r)r+)r6ÚfilenamerVrr]r†s      r!Ú    add_testsz$TestVectorsECDSAWycheproof.add_testsÝsK€ò
    3ò    1ò    Lô.Ð.IØ.6Ø.OÐRZÑ.ZØ@JØHRØETñ9;ô<ˆð     Š6ÑŽr#cóΗg|_|jd«|jd«|jrÌ|jd«|jd«|jd«|jd«|jd«|jd«|jd    «|jd
«|jd «|jd «|jd «|jd«|jd«|jrU|jd«|jd«|jd«|jd«|jd«|jd«|jr"|jd«|jd«|jd«|jd«|jd«y)Nz&ecdsa_secp224r1_sha224_p1363_test.jsonz ecdsa_secp224r1_sha224_test.jsonz&ecdsa_secp224r1_sha256_p1363_test.jsonz ecdsa_secp224r1_sha256_test.jsonz"ecdsa_secp224r1_sha3_224_test.jsonz"ecdsa_secp224r1_sha3_256_test.jsonz"ecdsa_secp224r1_sha3_512_test.jsonz&ecdsa_secp224r1_sha512_p1363_test.jsonz ecdsa_secp224r1_sha512_test.jsonz&ecdsa_secp256r1_sha256_p1363_test.jsonz ecdsa_secp256r1_sha256_test.jsonz"ecdsa_secp256r1_sha3_256_test.jsonz"ecdsa_secp256r1_sha3_512_test.jsonz&ecdsa_secp256r1_sha512_p1363_test.jsonz ecdsa_secp256r1_sha512_test.jsonz"ecdsa_secp384r1_sha3_384_test.jsonz"ecdsa_secp384r1_sha3_512_test.jsonz&ecdsa_secp384r1_sha384_p1363_test.jsonz ecdsa_secp384r1_sha384_test.jsonz&ecdsa_secp384r1_sha512_p1363_test.jsonz ecdsa_secp384r1_sha512_test.jsonz"ecdsa_secp521r1_sha3_512_test.jsonz&ecdsa_secp521r1_sha512_p1363_test.jsonz ecdsa_secp521r1_sha512_test.jsonzecdsa_test.jsonzecdsa_webcrypto_test.json)rr_r rFs r!r'z TestVectorsECDSAWycheproof.setUpsv€ØˆŒØ ‰Ð?Ô@Ø ‰Ð9Ô:Ø × Ò Ø N‰NÐCÔ DØ N‰NÐ=Ô >Ø N‰NÐ?Ô @Ø N‰NÐ?Ô @Ø N‰NÐ?Ô @Ø N‰NÐCÔ DØ N‰NÐ=Ô >Ø N‰NÐCÔ DØ N‰NÐ=Ô >Ø N‰NÐ?Ô @Ø N‰NÐ?Ô @Ø N‰NÐCÔ DØ ‰Ð9Ô:Ø × Ò Ø N‰NÐ?Ô @Ø N‰NÐ?Ô @Ø N‰NÐCÔ DØ N‰NÐ=Ô >Ø N‰NÐCÔ DØ ‰Ð9Ô:Ø × Ò Ø N‰NÐ?Ô @Ø N‰NÐCÔ DØ ‰Ð9Ô:Ø ‰Ð(Ô)Ø ‰Ð2Õ3r#có—|jSr;r-rFs r!rGz+TestVectorsECDSAWycheproof.shortDescription r.r#có˜—|jr>|jr1ddl}|jd|j›d|j
›d«yyyr0r2r7s   r!r5zTestVectorsECDSAWycheproof.warn#r8r#có —d|j|j|jfz|_|j€y|j
j |j«}tj |jd|j¬«}    |j||j«}|jsJ‚|j|«y#t$r=}|jrYd}~y|jdk(rYd}~y|jrJ‚Yd}~yd}~wwxYw)Nz"Wycheproof ECDSA Test #%d (%s, %s)rKr:zk*G has a large x-coordinate)r<r6r^rr©rr)rxrr;rPr3r=r5r_r3r>s      r!r?z&TestVectorsECDSAWycheproof.test_verify(s̀Ø7¸2¿5¹5À"Ç*Á*ÈbÏkÉkÐ:ZÑZˆŒð 6‰6ˆ>Ø à—^‘^×'Ñ'¨¯©Ó/ˆ
Ü—‘˜Ÿ™ ¸¿ ¹ ÔDˆð
    ØŸ ™  j°"·&±&Ó9ˆIð—8’8ˆO8Ø I‰IbMøôò     ØzŠzÜØz‰zÐ;Ò;ÜØ—x’xÐ <”xûð      ús$ Cà   D à DÃ!DÃ5DÄD cóH—|jD]}|j|«Œyr;rArBs  r!rCz"TestVectorsECDSAWycheproof.runTest=rDr#N)
r?r@rAr9r_r'rGr5r?rCrBr#r!rFrFÕs(„òò !òF4ò@òRò
ó*!r#rFcój—|jd«}g}|tt«z }|tt«z }|tt«z }|tt
«z }|jd«}|r$|tt «z }|tt«z }|t||«gz }|t||«gz }|S)Nrr)
ÚgetrrDrŸrÍr7r‚r°rrF)ÚconfigrÚtestsrs    r!Ú    get_testsriBs¶€Ø Ÿ*™*Ð%:Ó;Ðà €EØ    Œ_œ^Ó ,Ñ,€EØ    Œ_Ô-Ó .Ñ.€EØ    Œ_œ]Ó +Ñ+€EØ    Œ_œ_Ó -Ñ-€Eà—‘˜LÓ)€JÙØ ”Ô!3Ó4Ñ4ˆØ ”Ô!5Ó6Ñ6ˆà    Ô&Ð':¸JÓGÐ HÑH€EØ    Ô(Ð)<¸jÓIÐ JÑJ€Eà €Lr#Ú__main__có<—tjt««Sr;)r
Ú    TestSuiterirBr#r!ÚsuitermWs€Ü×!Ñ!¤)£+Ó.Ð.r#rm)Ú defaultTest)aÚrer
ÚbinasciirrÚCrypto.Util.py3compatrrrr\rr    r
r r r rrrÚCrypto.SignaturerÚCrypto.PublicKeyrrÚCrypto.SelfTest.st_commonrÚCrypto.SelfTest.loaderrrÚCrypto.Util.numberrrr"r'r.r0r rDr‚Útest_vectors_verifyÚ    enumerateÚidxrÚ
isinstancervÚmatchÚresrrr-rÚhasattrrŽÚmodulusr2Ú    generatorr.Úsuborderr)rxr`rÚcompsr€r©rUr"r#r’r–r†ÚsetattrÚtest_vectors_signr‰Ú    comps_dsarrSrœrŸr°Ú
curve_namerÂr¸r¹Úecc_keyÚ
startswithrÇrËrÍr7rrrFrir?rmÚmainrˆs0r!ú<module>r‰sâðóD
Ûß'ç5Ñ5÷A÷AõAå ß%Ý5ßRß;ò"ò
ò
P÷ ñ ôK8X×&Ñ&ôK8ô\    ˜×*Ñ*ô    ñ(Ð(<Ø(?Ø(FØ)1±;Ð(?óAòGðEGðñ
Ð,Ó-óTG€Cˆá"cÔØˆbh‰hÐKÈRÓPˆÙˆ ˆsØ—I‘I˜a“L×(Ñ(¨¨bÓ1ˆ    Ù'¨    Ó2ˆ Øáˆr3ÔØ—$‘$ˆØ—D‘Dˆ    Ø—4‘4ˆØà‰˜rŸv™vÓ&€Hà(*¯©¨i¸À(Ð'KÖ L !‰]˜1Õ Ò L€EØ
ˆ#-‰-˜˜uÓ
%€C؈sw‰ws˜LÓ)€Hà%-¸ÈBÏDÉDÐQS×QUÑQUÉIó-ð&.¸ÈBÏDÉDÐQS×QUÑQUÉIóLð
‡yyCÒÙÐ"Ð$=ÀÑ$CÀ]ÖSáÐ"Ð$=ÀÑ$CÀ]ÖSð=TñB&Ð&:Ø(?Ø(BØ(*ó,ò2ð02ðñ
Ð*Ó+ó@G€Cˆá"cÔØˆbh‰hÐKÈRÓPˆÙˆ ˆsØ—I‘I˜a“L×(Ñ(¨¨bÓ1ˆ    Ù'¨    Ó2ˆ Øáˆr3ÔØ—$‘$ˆØ—D‘Dˆ    Ø—4‘4ˆØà‰˜rŸv™vÓ&€HØ,.¯D©D°)¸WÀhÐPR×PTÑPTÐ+UÖV a‘˜qÕ!ÒV€IØ
ˆ#-‰-˜     5Ó
)€CØ ˆSW‰WS˜,±¸¿¹³Ô >€Fà$¨xÀ2Ç4Á4ÈÏÉÁ9ó;á Ð  °Ñ 4°hÖ?ð-@ô2IJx×(Ñ(ôIJôX    ˜8×,Ñ,ô    ñ(Ð(>Ø(4Ø(LÙ3>Ù/CÙ/Cñ)*ó+ò1ð /1ð ðÑ(Ð)?Ø(BØ(LÙ3>Ù/CÙ/Cñ)*ó+ò1ð /1ñ 1ÐñÐ,Ó-óVG€Cˆá"cÔØˆbh‰hÐ5°rÓ:ˆÙˆ
ˆsØ—Y‘Y˜q“\ˆ
Ø—I‘I˜a“L×(Ñ(¨¨bÓ1ˆ    Ø Ð2Ñ 2Ø   ~ˆHØ! # 2˜‰IàˆHÙ'¨    Ó2ˆ ØàÐØ—?‘? 2§6¡6Ó*‰à—?‘? 2§6¡6°H?Ó=ˆØˆcm‰m *°b·e±eÀRÇUÁUÔK€G؈sw‰ww  Ó-€Hà%-¸ÈBÏDÉDÐQS×QUÑQUÉIó-ð&.¸ÈBÏDÉDÐQS×QUÑQUÉIóLð
‡yy×јCÔ ÙÐ$Ð&?À#Ñ&EÀ}ÖUáÐ$Ð&?À#Ñ&EÀ}ÖUð?VñD&Ð&<Ø(4Ø(LØ),Ñ.BÐ(CóEòKðIKðñ
Ð*Ó+òCG€Cˆá"cÔØˆbh‰hÐ5°rÓ:ˆÙˆ
ˆsØ—Y‘Y˜q“\ˆ
Ø—I‘I˜a“L×(Ñ(¨¨bÓ1ˆ    Ù'¨    Ó2ˆ Øà‰˜rŸv™vÓ&€H؈cm‰m *°·±Ô5€GØ ˆSW‰WW˜l±V¸B¿D¹D³\Ô B€Fà%°ÀBÇDÁDÈÏÉÁIó;á Ð   .°3Ñ"6¸    ÕBð!Cô&U1H×%Ñ%ôU1ôpf,h×'Ñ'ôf,òRô88!˜x×0Ñ0ô8!ôvj! ×!2Ñ!2ôj!ðZóð( ˆzÒò/à€H‡MM˜gÖ&ðùòC% MùòJWs ÅZËZ