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
Ë
ž¬`iÐã    óŠ—ddlZddlmZddlmZddlmZddlmZddl    m
Z
m Z m Z ddl mZGd„d    ej«ZGd
„d ej«ZGd „d ej«ZGd„dej«ZGd„dej«ZGd„dej«ZGd„dej«Zedddd„d„d„dœ«xsgZeD]>Zej2ej4ej6fd„Zeedej<ze«Œ@Gd„d ej«Zedd!d"d#„d$„d%„dœ«xsgZeD]>Zej2ej4ej6fd&„Zeedej<ze«Œ@Gd'„d(ej«Z edd)d*d+„d,„d-„dœ«xsgZeD]>Zej2ej4ej6fd.„Zee dej<ze«Œ@Gd/„d0ej«Z!edd1d2d3„d4„d5„dœ«xsgZeD]>Zej2ej4ej6fd6„Zee!dej<ze«Œ@Gd7„d8ej«Z"edd9d:d;„d<„d=„dœ«xsgZeD]>Zej2ej4ej6fd>„Zee"dej<ze«Œ@Gd?„d@ej«Z#GdA„dBej«Z$GdC„dDej«Z%GdE„dFej«Z&GdG„dHej«Z'GdI„dJej«Z(GdK„dLej«Z)GdM„dNej«Z*GdO„dPej«Z+GdQ„dRej«Z,ifdS„Z-e.dTk(rdU„Z/ej`dV¬W«yy)XéN)Ú    unhexlify)Úlist_test_cases)Úload_test_vectors)ÚECC)ÚEccPointÚ_curvesÚEccKey)ÚIntegercó—eZdZd„Zd„Zy)Ú TestEccPointcó°—tjd¬«j}tjd¬«j}    ||zJ‚#t$r}dt    |«vsJ‚Yd}~nd}~wwxYw    ||z }J‚#t$r}dt    |«vsJ‚Yd}~nd}~wwxYwGd„d«}|j ||«k(«|j ||«k7«y)NúP-256©ÚcurveúP-384znot on the same curvecó —eZdZy)ú+TestEccPoint.test_mix.<locals>.OtherKeyTypeN)Ú__name__Ú
__module__Ú __qualname__©óõzH:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\Crypto/SelfTest/PublicKey/test_ECC_NIST.pyÚ OtherKeyTyper>s„Ø rr)rÚgenerateÚpointQÚ
ValueErrorÚstrÚ assertFalseÚ
assertTrue)ÚselfÚp1Úp2Úers     rÚtest_mixzTestEccPoint.test_mix-sƀä \‰\ Ô (× /Ñ /ˆÜ \‰\ Ô (× /Ñ /ˆð    5Ø ŠGØ 5øÜò    5Ø*¬c°!«fÑ4Ð 4Õ4ûð    5úð    5Ø "‰HˆBØ 5øÜò    5Ø*¬c°!«fÑ4Ð 4Õ4ûð    5ú÷    ñ    ð     ×ј™|›~Ñ-Ô.Ø ‰˜™l›nÑ,Õ-s0ÁA    Á        A+ÁA&Á&A+Á/A6Á6    BÁ?BÂBcól—tjdddd¬«}|jt|«d«y)Nrl}     &_ni9½ ñâ]}!Š5$7­Pµ%^-Ù&l-
ík%jµÛ&*/ný;[jÁHÝ**À7
Ãi/v{-l] W]ßÏ[@ið¤MmlQ¤;i?XU,®p)rÚdÚpoint_xÚpoint_yaEccKey(curve='NIST P-256', point_x=20573031766139722500939782666697015100983491952082159880539639074939225934381, point_y=108863130203210779921520632367477406025152638284581252625277850513266505911389, d=75467964919405407085864614198393977741148485328036093939970922195112333446269))rÚ    constructÚ assertEqualÚrepr)r!r"s  rÚ    test_reprzTestEccPoint.test_reprDs9€Ü ]‰] ØjØ#pØ#qôsˆð     ×Ñœ˜b›ð$@õ    ArN)rrrr%r-rrrr r +s „ò.ó.Arr cóx—eZdZdZeddd¬«Zeddd¬«Zd„Zd    „Zd
„Z    d „Z
d „Z d „Z d„Z d„Zd„Zd„Zy)ÚTestEccPoint_NIST_P192ztTests defined in section 4.1 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdfl ø,/}H5iÎH´ Î\žD>GE l ;_ !‘3µöo3ànk3>
6@‚I%Úp192rl ¤S.7l·pP·a7öng>=}„Tb"l y5R]2vNúAö>RmKwYfe«% !dcóP—|j|jjd«y)Nú
NIST P-192©r+ÚpointSr©r!s rÚtest_curve_attributez+TestEccPoint_NIST_P192.test_curve_attributeYó€Ø ×јŸ™×*Ñ*¨LÕ9rcóŠ—tdd«}|j|j«|j||j«y©Nr©rÚsetr4r+©r!ÚpointWs  rÚtest_setzTestEccPoint_NIST_P192.test_set\ó1€Ü˜!˜Q“ˆØ
‰
4—;‘;ÔØ ×ј §¡Õ-rcó*—|jj«}|j||j«|j|j«|j||j«|j |j|j«y©N©r4Úcopyr+r;ÚpointTÚassertNotEqualr<s  rÚ    test_copyz TestEccPoint_NIST_P192.test_copyaód€Ø—‘×!Ñ!Ó#ˆØ ×ј §¡Ô-؏
‰
4—;‘;ÔØ ×ј §¡Ô-Ø ×јDŸK™K¨¯©Õ5rcó—|j }|j|z}|j||jj««yrA©r4r+Úpoint_at_infinity©r!ÚnegSÚsums   rÚ test_negatez"TestEccPoint_NIST_P192.test_negatehó8€Ø— ‘ ˆ|ˆØk‰k˜DÑ ˆØ ×ј˜dŸk™k×;Ñ;Ó=Õ>rcó¨—d}d}|j|jz}|j|j|«|j|j|«|j «}|j|z}|j||j«||jz}|j||j«||z}|j||«y©Nl š<Sb!tX?w|xh©\7®% Žl K*m/_JÖS‘l(U û[¯yåq;}©r4rDr+ÚxÚyrJ©r!ÚpointRxÚpointRyÚpointRÚpais     rÚ test_additionz$TestEccPoint_NIST_P192.test_additionms·€ØDˆØDˆà—‘˜tŸ{™{Ñ*ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+à×&Ñ&Ó(ˆð—‘˜sÑ"ˆØ ×ј §¡Ô-ðt—{‘{Ñ"ˆØ ×ј §¡Ô-ðs‘ˆØ ×ј Õ%rcó(—d}d}|jj«}||jz }|j|j|«|j|j
|«|j «}|jj«}||z }|j||j«|j«}||jz }|j||j«|j«}||z }|j||«yrQ©r4rCrDr+rSrTrJrUs     rÚtest_inplace_additionz,TestEccPoint_NIST_P192.test_inplace_additionƒsè€ØDˆØDˆà—‘×!Ñ!Ó#ˆØ$—+‘+ÑˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+à×&Ñ&Ó(ˆð—‘×!Ñ!Ó#ˆØ#‰ ˆØ ×ј §¡Ô-ð—‘“ˆØ$—+‘+ÑˆØ ×ј §¡Ô-ð—‘“ˆØ#‰ ˆØ ×ј Õ%rcó—d}d}|jj«}|j«|j|j|«|j|j
|«|jj «}|j«}|j«|j||«|jj«}||z }|j|j|«|j|j
|«y)Nl biÜ~hIRë ±w¹YTSD{1.ã- l Ï    ±£%Y^Û-<ü6×Ä!N    q¥pÝ©r4rCÚdoubler+rSrTrJrUs     rÚ test_doublingz$TestEccPoint_NIST_P192.test_doublings̀ØDˆØDˆà—‘×!Ñ!Ó#ˆØ ‰ ŒØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+ðk‰k×+Ñ+Ó-ˆØ—‘“ˆØ ‰ ŒØ ×ј Ô%ð—‘×!Ñ!Ó#ˆØ&ÑˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcóv‡—d}d}d}‰j|z}‰j|j|«‰j|j|«‰jj    «}‰jdz}‰j||«‰j t ˆfd„«|‰jz}‰j|j|«‰j|j|«t|«‰jz}‰j|j|«‰j|j|«y)Nì ît˜lkd©¨cH(éL j] Øu‚5Qx
l 1m~K¥T4¦IwxIG-Íi!wúl {Áú5Òsyq- B³‰KBioÿrcó"•—‰jdzS©Néÿÿÿÿ©r4r5s€rú<lambda>z=TestEccPoint_NIST_P192.test_scalar_multiply.<locals>.<lambda>Á󸀍d¯k©k¸BÑ.>€r©r4r+rSrTrJÚ assertRaisesrr
©r!r'rVrWrXrYs`     rÚtest_scalar_multiplyz+TestEccPoint_NIST_P192.test_scalar_multiply²süø€Ø >ˆØDˆØDˆà—‘˜q‘ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+ðk‰k×+Ñ+Ó-ˆØ—‘˜q‘ˆØ ×ј Ô%ð     ×Ñœ*Ó&>Ô?ðT—[‘[‘ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+䘓˜dŸk™kÑ)ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcó—d}d}d}d}|j|z|j|zz}|j|j|«|j|j|«y)Nrcl ¼rr 6O^‰h™oª3ô&ga°OêqK l Þ[o…ge¦?“/° õo·r6uc;'{l D6 vMcã'Åà~™vLz« 6bHe©r4rDr+rSrT©r!r'r$rVrWrXs      rÚtest_joint_scalar_multiplyz1TestEccPoint_NIST_P192.test_joint_scalar_multiplyÌsX€Ø >ˆØ >ˆØDˆØDˆà—‘˜q‘ 4§;¡;°¡?Ñ2ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcó¬—|j|jj«d«|j|jj«d«y)NéÀé©r+r4Ú size_in_bitsÚ size_in_bytesr5s rÚ
test_sizesz!TestEccPoint_NIST_P192.test_sizesÖó<€Ø ×јŸ™×1Ñ1Ó3°SÔ9Ø ×јŸ™×2Ñ2Ó4°bÕ9rN)rrrÚ__doc__rr4rDr6r>rFrNrZr]rarmrqrxrrrr/r/Ls_„Ù~á ØBØBØô€Fñ
ØBØBØô€Fò
:ò.ò
6ò?ò
&ò,&ò4,ò*,ò4,ó:rr/cóx—eZdZdZeddd¬«Zeddd¬«Zd„Zd    „Zd
„Z    d „Z
d „Z d „Z d„Z d„Zd„Zd„Zy)ÚTestEccPoint_NIST_P224ztTests defined in section 4.2 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdfl[;!4ºEï7<_1*¥vK6ÝN9!˜TY:)P²l"?¯I­q.pGA26'Ü,ò X«-ä–p/iÒ;Úp224rlm=Mp@2ÍiÅ#ÞM#Y´BÐ/#nX\jµdÊ-l4 âiÐ"nQÁ)N}Ì:î{    hkÆ-xBISIQ
1cóP—|j|jjd«y)Nú
NIST P-224r3r5s rr6z+TestEccPoint_NIST_P224.test_curve_attributeèr7rcóŠ—tdd«}|j|j«|j||j«yr9r:r<s  rr>zTestEccPoint_NIST_P224.test_setër?rcó*—|jj«}|j||j«|j|j«|j||j«|j |j|j«yrArBr<s  rrFz TestEccPoint_NIST_P224.test_copyðrGrcó—|j }|j|z}|j||jj««yrArIrKs   rrNz"TestEccPoint_NIST_P224.test_negate÷rOrcó¨—d}d}|j|jz}|j|j|«|j|j|«|j «}|j|z}|j||j«||jz}|j||j«||z}|j||«y©Nl}¥Që+±ª|y%›w<Ô{ VÝu{a„ÛdÛlpZv–8µ)_¹z-hK    GÕ^Ñ 6gyO9rRrUs     rrZz$TestEccPoint_NIST_P224.test_additionüs·€ØLˆØLˆà—‘˜tŸ{™{Ñ*ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+à×&Ñ&Ó(ˆð—‘˜sÑ"ˆØ ×ј §¡Ô-ðt—{‘{Ñ"ˆØ ×ј §¡Ô-ðs‘ˆØ ×ј Õ%rcó(—d}d}|jj«}||jz }|j|j|«|j|j
|«|j «}|jj«}||z }|j||j«|j«}||jz }|j||j«|j«}||z }|j||«yr„r\rUs     rr]z,TestEccPoint_NIST_P224.test_inplace_additionsè€ØLˆØLˆà—‘×!Ñ!Ó#ˆØ$—+‘+ÑˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+à×&Ñ&Ó(ˆð—‘×!Ñ!Ó#ˆØ#‰ ˆØ ×ј §¡Ô-ð—‘“ˆØ$—+‘+ÑˆØ ×ј §¡Ô-ð—‘“ˆØ#‰ ˆØ ×ј Õ%rcó—d}d}|jj«}|j«|j|j|«|j|j
|«|jj «}|j«}|j«|j||«|jj«}||z }|j|j|«|j|j
|«y)NlÇ_¹§x²xRhĶ>7ZëPÐJòIw}ä-r*l}]¿o`}ýMô H^Ê>A0’Z]Sv>÷L1|+r_rUs     rraz$TestEccPoint_NIST_P224.test_doubling,s̀ØLˆØLˆà—‘×!Ñ!Ó#ˆØ ‰ ŒØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+ðk‰k×+Ñ+Ó-ˆØ—‘“ˆØ ‰ ŒØ ×ј Ô%ð—‘×!Ñ!Ó#ˆØ&ÑˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcóv‡—d}d}d}‰j|z}‰j|j|«‰j|j|«‰jj    «}‰jdz}‰j||«‰j t ˆfd„«|‰jz}‰j|j|«‰j|j|«t|«‰jz}‰j|j|«‰j|j|«y)Nì;WãUŽ ó'uoZÁw]o]em82~P¬†ã)l¤<Nä0VmoLBmœ_»JÛ+'"ü/¹F*iKl©%lmG[nWh8Üz{hbIŠ €U_OxâQB)àJãrcó"•—‰jdzSrergr5s€rrhz=TestEccPoint_NIST_P224.test_scalar_multiply.<locals>.<lambda>Prirrjrls`     rrmz+TestEccPoint_NIST_P224.test_scalar_multiplyAsüø€Ø FˆØLˆØLˆà—‘˜q‘ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+ðk‰k×+Ñ+Ó-ˆØ—‘˜q‘ˆØ ×ј Ô%ð     ×Ñœ*Ó&>Ô?ðT—[‘[‘ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+䘓˜dŸk™kÑ)ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcó—d}d}d}d}|j|z|j|zz}|j|j|«|j|j|«y)Nrˆl6W¦]éUDúwyptq>®3”d²d|?)5l>HEK5\
5¶F2Ê~?jÏTÀm{ +Eÿ6l‹1÷(à^V‡KUC¡†?Ì++ý'*XÃ:pCÔ rorps      rÚtest_joing_scalar_multiplyz1TestEccPoint_NIST_P224.test_joing_scalar_multiply[sX€Ø FˆØ FˆØLˆØLˆà—‘˜q‘ 4§;¡;°¡?Ñ2ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcó¬—|j|jj«d«|j|jj«d«y)Néàérur5s rrxz!TestEccPoint_NIST_P224.test_sizeseryrN©rrrrzrr4rDr6r>rFrNrZr]rarmr‹rxrrrr|r|Ûs_„Ù~á ØJØJØô€Fñ
ØJØJØô€Fò
:ò.ò
6ò?ò
&ò,&ò4,ò*,ò4,ó:rr|cóp—eZdZdZedd«Zedd«Zd„Zd„Zd„Z    d    „Z
d
„Z d „Z d „Z d „Zd„Zd„Zy)ÚTestEccPoint_NIST_P256ztTests defined in section 4.3 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdflɵæ,å; zQCÈlŒ:a*N<x“n.hÜ&#/_"$^lV"…`,¨1kWØyÔôpYÌLG+- ÀpJÛ|?W“@lkÁk¸dg\[W9r*9.B,LI5/f‰:hcX¨UlCdc'·2«gs1–E ö»+Á.ƒŽ- 'a!TcóP—|j|jjd«y)Nú
NIST P-256r3r5s rr6z+TestEccPoint_NIST_P256.test_curve_attributeur7rcóŠ—tdd«}|j|j«|j||j«yr9r:r<s  rr>zTestEccPoint_NIST_P256.test_setxr?rcó*—|jj«}|j||j«|j|j«|j||j«|j |j|j«yrArBr<s  rrFz TestEccPoint_NIST_P256.test_copy}rGrcó—|j }|j|z}|j||jj««yrArIrKs   rrNz"TestEccPoint_NIST_P256.test_negate„rOrcó¨—d}d}|j|jz}|j|j|«|j|j|«|j «}|j|z}|j||j«||jz}|j||j«||z}|j||«y©Nl~´(iMç)E=íkdHpit 3&¯ EpmR ê±rldB•hE@    hF¹TVL‰à Ä.‹E $uúd„K].X rRrUs     rrZz$TestEccPoint_NIST_P256.test_addition‰s·€ØTˆØTˆà—‘˜tŸ{™{Ñ*ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+à×&Ñ&Ó(ˆð—‘˜sÑ"ˆØ ×ј §¡Ô-ðt—{‘{Ñ"ˆØ ×ј §¡Ô-ðs‘ˆØ ×ј Õ%rcó(—d}d}|jj«}||jz }|j|j|«|j|j
|«|j «}|jj«}||z }|j||j«|j«}||jz }|j||j«|j«}||z }|j||«yr˜r\rUs     rr]z,TestEccPoint_NIST_P256.test_inplace_additionŸóè€ØTˆØTˆà—‘×!Ñ!Ó#ˆØ$—+‘+ÑˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+à×&Ñ&Ó(ˆð—‘×!Ñ!Ó#ˆØ#‰ ˆØ ×ј §¡Ô-ð—‘“ˆØ$—+‘+ÑˆØ ×ј §¡Ô-ð—‘“ˆØ#‰ ˆØ ×ј Õ%rcó—d}d}|jj«}|j«|j|j|«|j|j
|«|jj «}|j«}|j«|j||«|jj«}||z }|j|j|«|j|j
|«y)Nl°'Â6ó?0T‚.ì<6ß3˜€GwG:Ç]HsivlÇPÃ6 eÞ#` ³{yO8^g^w{9lžJ±@‡zr_rUs     rraz$TestEccPoint_NIST_P256.test_doubling¹s̀ØTˆØTˆà—‘×!Ñ!Ó#ˆØ ‰ ŒØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+ðk‰k×+Ñ+Ó-ˆØ—‘“ˆØ ‰ ŒØ ×ј Ô%ð—‘×!Ñ!Ó#ˆØ&ÑˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcóv‡—d}d}d}‰j|z}‰j|j|«‰j|j|«‰jj    «}‰jdz}‰j||«‰j t ˆfd„«|‰jz}‰j|j|«‰j|j|«t|«‰jz}‰j|j|«‰j|j|«y)Nìýö_,)¶NÌ$ÔcÐ hKf-5lk<X÷k©#El? ÙnDfÚ>1xó0öæú6Ä6”OPK¯FÐQlÕAöTU*ö-sX)>~|Nè\}TÕ9¶%ÕDýbu4îurcó"•—‰jdzSrergr5s€rrhz=TestEccPoint_NIST_P256.test_scalar_multiply.<locals>.<lambda>Ýrirrjrls`     rrmz+TestEccPoint_NIST_P256.test_scalar_multiplyÎsüø€Ø NˆØTˆØTˆà—‘˜q‘ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+ðk‰k×+Ñ+Ó-ˆØ—‘˜q‘ˆØ ×ј Ô%ð     ×Ñœ*Ó&>Ô?ðT—[‘[‘ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+䘓˜dŸk™kÑ)ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcó—d}d}d}d}|j|z|j|zz}|j|j|«|j|j|«y)Nrl·T«À:X›uMKt^5~ø{å"/ŒTœ3G1Sl¸vƒba½Bÿ>Y5O¬gïEÄà‘I# ˆd3ZgXluRÂ`/ª.Ó Êû³5EŽSµ6Ò¼p* Prrorps      rr‹z1TestEccPoint_NIST_P256.test_joing_scalar_multiplyèsX€Ø NˆØ NˆØTˆØTˆà—‘˜q‘ 4§;¡;°¡?Ñ2ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcó¬—|j|jj«d«|j|jj«d«y)Néé rur5s rrxz!TestEccPoint_NIST_P256.test_sizesòryrNrrrrr‘r‘js[„Ù~á ØRØRóT€FñØRØRóT€Fò:ò.ò
6ò?ò
&ò,&ò4,ò*,ò4,ó:rr‘cót—eZdZdZeddd«Zeddd«Zd„Zd„Zd    „Z    d
„Z
d „Z d „Z d „Z d„Zd„Zd„Zy)ÚTestEccPoint_NIST_P384ztTests defined in section 4.4 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdflKç<´L‰æµ3ÑY UëH[¢Am]8$_-'óDM.Ã/ææ8é;V~Ho \"÷lE^Pj’WvMÕ0M7b£KLþ8¢4\mn&J
 
"[Œ!×66p#y|@éz~WÛ~¿Úp384lQ°'è"Ûf 4åOcéE-X¾J¼9i×ja>:¿¨}¤@ˆ…ØsøMöLUl’P–}Û&zI…ÜyŒ$ÔGYÁ9×Q¯%?p×a(šFÍvÒ|E…Oî{šcóP—|j|jjd«y)Nú
NIST P-384r3r5s rr6z+TestEccPoint_NIST_P384.test_curve_attributer7rcóŒ—tddd«}|j|j«|j||j«y)Nrr¥r:r<s  rr>zTestEccPoint_NIST_P384.test_sets4€Ü˜!˜Q Ó'ˆØ
‰
4—;‘;ÔØ ×ј §¡Õ-rcó*—|jj«}|j||j«|j|j«|j||j«|j |j|j«yrArBr<s  rrFz TestEccPoint_NIST_P384.test_copy rGrcó—|j }|j|z}|j||jj««yrArIrKs   rrNz"TestEccPoint_NIST_P384.test_negaterOrcó¨—d}d}|j|jz}|j|j|«|j|j|«|j «}|j|z}|j||j«||jz}|j||j«||z}|j||«y)Nlí^\—m¼LH\Ð%sz.    €_èQHp)wB 'Ü2øh\|Sz9Y‰0ñ7Ös\\%l°$    rQ4 ú1ml w{g~ÓOMwrÏ6bLLU–;ó8*$ô0xÇrs,rRrUs     rrZz$TestEccPoint_NIST_P384.test_additions·€ØtˆØtˆà—‘˜tŸ{™{Ñ*ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+à×&Ñ&Ó(ˆð—‘˜sÑ"ˆØ ×ј §¡Ô-ðt—{‘{Ñ"ˆØ ×ј §¡Ô-ðs‘ˆØ ×ј Õ%rcó(—d}d}|jj«}||jz }|j|j|«|j|j
|«|j «}|jj«}||z }|j||j«|j«}||jz }|j||j«|j«}||z }|j||«yr˜r\rUs     rÚ_test_inplace_additionz-TestEccPoint_NIST_P384._test_inplace_addition.ršrcó—d}d}|jj«}|j«|j|j|«|j|j
|«|jj «}|j«}|j«|j||«|jj«}||z }|j|j|«|j|j
|«y)NlLP‚ íeroBr§0_nCYw°~êÂs¿7xIµ|°ñZ¨:Zøe¢*ðX!TlÝ]ìeö§^A|™\‡" Rn0çWÍWCsò(Óšhß}    c5J÷B€N©näN=.ôr_rUs     rraz$TestEccPoint_NIST_P384.test_doublingHs̀ØtˆØtˆà—‘×!Ñ!Ó#ˆØ ‰ ŒØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+ðk‰k×+Ñ+Ó-ˆØ—‘“ˆØ ‰ ŒØ ×ј Ô%ð—‘×!Ñ!Ó#ˆØ&ÑˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcóH‡—d}d}d}‰j|z}‰j|j|«‰j|j|«‰jj    «}‰jdz}‰j||«‰j t ˆfd„«y)Nì€4°.vÚ0Z:–z;ODK#ÄGv)ÀZ5mXÓC˜Ds³:’fÓrÊkIlòR@òdžV]9£"O/´'5r}©]ö~þA…YøwHoY4±ü-ÿ?~wÉlfò9;Y?5.þ¿³BieXcXtžqÏMéDb7‚ÏK6Xú}1ì î}Xrcó"•—‰jdzSrergr5s€rrhz=TestEccPoint_NIST_P384.test_scalar_multiply.<locals>.<lambda>lrir©r4r+rSrTrJrkrrls`     rrmz+TestEccPoint_NIST_P384.test_scalar_multiply]s‹ø€Ø nˆØtˆØtˆà—‘˜q‘ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+ðk‰k×+Ñ+Ó-ˆØ—‘˜q‘ˆØ ×ј Ô%ð     ×Ñœ*Ó&>Õ?rcó—d}d}d}d}|j|z|j|zz}|j|j|«|j|j|«y)Nr°l]8ê|$ÞW‚!&%TxF«gqeÏÑY„ÕTKeM80½,YÍˆO_lÜtdvéÇO*;q/Ü $L]Š0    È}pn<x&÷"öFFÑe5hYæE¢~"l†q!jäB%~²^ÐY7yïKÐ\+5¬{S—WýµxÈFJRÏ1D´wšJÑA6g÷)4rorps      rr‹z1TestEccPoint_NIST_P384.test_joing_scalar_multiplynsX€Ø nˆØ nˆØtˆØtˆà—‘˜q‘ 4§;¡;°¡?Ñ2ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcó¬—|j|jj«d«|j|jj«d«y)Ni€é0rur5s rrxz!TestEccPoint_NIST_P384.test_sizesxryrN)rrrrzrr4rDr6r>rFrNrZr­rarmr‹rxrrrr¤r¤÷s`„Ù~á ØrØrØó€Fñ
ØrØrØó€Fò
:ò.ò
6ò?ò
&ò,&ò4,ò*@ò",ó:rr¤cót—eZdZdZeddd«Zeddd«Zd„Zd„Zd    „Z    d
„Z
d „Z d „Z d „Z d„Zd„Zd„Zy)ÚTestEccPoint_NIST_P521ztTests defined in section 4.5 of https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.204.9073&rep=rep1&type=pdfl#´A«5Û;˜LKà5N…Ž}W,* nø<ÿUP%¸ hA=Cb?iOtiLÐÀ ¢ù1à!ë@vlv' Wl##€5˜kS7¦?ÜI]·*[nùnðªkYŽià[²7 .     Åd 9½‘MT3X=TPƒ5ó_ Icc    înÚp521l#ÕG‘J¦oñ7$ÆØ=õ?>”Dð^`bXkN¶oå    tG÷å`xwÀ-dg!;I7‹ >S{)w™h¸\.,å#Ðl#cËae.ÓtDffI*"Òa%ÂA&4ªhö#W±w5Š%D2Ð>n<!Ë}6Þ@fNÐvFñ$>8œv„p÷cóP—|j|jjd«y)Nú
NIST P-521r3r5s rr6z+TestEccPoint_NIST_P521.test_curve_attributeŠr7rcóŠ—tdd«}|j|j«|j||j«yr9r:r<s  rr>zTestEccPoint_NIST_P521.test_setr?rcó*—|jj«}|j||j«|j|j«|j||j«|j |j|j«yrArBr<s  rrFz TestEccPoint_NIST_P521.test_copy’rGrcó—|j }|j|z}|j||jj««yrArIrKs   rrNz"TestEccPoint_NIST_P521.test_negate™rOrcó¨—d}d}|j|jz}|j|j|«|j|j|«|j «}|j|z}|j||j«||jz}|j||j«||z}|j||«y©Nl#éY[V=xÝÜCmu¢OÜFálÜõ*²sg    Nüp¨)±giD>u{9gh0!cK-OpÍ-¹ ^NºÂ™l#U,ÏR&Ù9³/ @Ýa}#Ð>ï;cdÙ{cl@­E»' 98k•h~a­7›Ó  ?!-œ(ÄO+ŽSŠrRrUs     rrZz$TestEccPoint_NIST_P521.test_additionžs½€ð]ˆð]ˆà—‘˜tŸ{™{Ñ*ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+à×&Ñ&Ó(ˆð—‘˜sÑ"ˆØ ×ј §¡Ô-ðt—{‘{Ñ"ˆØ ×ј §¡Ô-ðs‘ˆØ ×ј Õ%rcó(—d}d}|jj«}||jz }|j|j|«|j|j
|«|j «}|jj«}||z }|j||j«|j«}||jz }|j||j«|j«}||z }|j||«yr¿r\rUs     rr]z,TestEccPoint_NIST_P521.test_inplace_addition´sî€ð]ˆð]ˆà—‘×!Ñ!Ó#ˆØ$—+‘+ÑˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+à×&Ñ&Ó(ˆð—‘×!Ñ!Ó#ˆØ#‰ ˆØ ×ј §¡Ô-ð—‘“ˆØ$—+‘+ÑˆØ ×ј §¡Ô-ð—‘“ˆØ#‰ ˆØ ×ј Õ%rcó—d}d}|jj«}|j«|j|j|«|j|j
|«|jj «}|j«}|j«|j||«|jj«}||z }|j|j|«|j|j
|«y)Nl#Æk†'¯“¤<˜JÇ €cmòtW9ïT@¯%T$¬SD!kæ»dlPgc×iSWÇ_÷%3byF`($/ˆr¡l#C5™APS?( ˜w8OoXxÐ
e¿\ú**Ló3 tµX@ŸÖ7ÓN&Žx©rZ7ü}r.…8QIar_rUs     rraz$TestEccPoint_NIST_P521.test_doublingÎsӀð]ˆð]ˆà—‘×!Ñ!Ó#ˆØ ‰ ŒØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+ðk‰k×+Ñ+Ó-ˆØ—‘“ˆØ ‰ ŒØ ×ј Ô%ð—‘×!Ñ!Ó#ˆØ&ÑˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcóH‡—d}d}d}‰j|z}‰j|j|«‰j|j|«‰jj    «}‰jdz}‰j||«‰j t ˆfd„«y)Nì#±\??7‡gßf@YK j”r¸R)PÔ6 _Ér”    [<lSfPL3ZôM¡
TUæÄU¤3ŒýTM|K\x­l#»ÝQUx• Á2¡?z=è[nÆ WÄq 06&Ã7ômû ænktûztX;Ia^R‰m<9-þTeР   ºbFl#[Ö}¨5]v²3én€L¥IYjzÖQ`:¯½„G•k`O×<Y¡[w‚ `5Q*ö*×e7ÚUá5ñqÃrcó"•—‰jdzSrergr5s€rrhz=TestEccPoint_NIST_P521.test_scalar_multiply.<locals>.<lambda>òrirr²rls`     rrmz+TestEccPoint_NIST_P521.test_scalar_multiplyãs”ø€ð Wˆð]ˆð]ˆà—‘˜q‘ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Ô+ðk‰k×+Ñ+Ó-ˆØ—‘˜q‘ˆØ ×ј Ô%ð     ×Ñœ*Ó&>Õ?rcóƗd}d}d}d}|j|z}||j|zz }|j|j|«|j|j|«y)NrÃl#ãß|T‘B¼)I%_
#wUV6C9c´1z7÷bn“lú<#qIœ"fuÊ#0    Xaêjép©x8=nMßl#=et¹EK9ù¶JÙBad•ZYÛx¥
./j…¸Va’@3hŒM–hAÿä]_`s}Jõ+dptl#XM`®Wi&ðGÿgwH"Œ!áe+oeÈG$,oQ„ Tk’é9P >Ý¥@5{U':cø0'=ÓNçD†H?rorps      rr‹z1TestEccPoint_NIST_P521.test_joing_scalar_multiplyôsi€ð Wˆð Wˆð]ˆð]ˆà—‘˜q‘ˆØ$—+‘+ ‘/Ñ!ˆØ ×јŸ™ 7Ô+Ø ×јŸ™ 7Õ+rcó¬—|j|jj«d«|j|jj«d«y)Ni    éBrur5s rrxz!TestEccPoint_NIST_P521.test_sizesÿryrNrrrrr·r·}sl„Ù~á ð[ð[Øó€Fñ
ð[ð[Øó€Fò
:ò.ò
6ò?ò
&ò,&ò4,ò*@ò"    ,ó:rr·cóV—eZdZdZedZeejejd«Z    y)ÚTestEccPoint_PAI_P192ú9Test vectors from http://point-at-infinity.org/ecc/nisttvr0N©
rrrrzrrrÚGxÚGyÚpointGrrrrÉrÉó$„ÙCà F‰O€EÙ e—h‘h §¡¨&Ó 1FrrÉ)Ú    PublicKeyrzpoint-at-infinity.org-P192.txtz&P-192 tests from point-at-infinity.orgcó—t|«SrA©Úint©Úks rrhrhó
€¤C¨£F€rcó—t|d«S©NérÒ©rSs rrhrhó €¤C¨¨2£J€rcó—t|d«SrØrÒ©rTs rrhrhrÛr)rÕrSrTcó’—|j|z}|j|j|«|j|j|«yrA©rÎr+rSrT©r!ÚscalarrSrTÚresults     rÚnew_testrãó8€Ø—‘˜vÑ%ˆØ ×јŸ™ 1Ô%Ø ×јŸ™ 1Õ%rztest_%dcóV—eZdZdZedZeejejd«Z    y)ÚTestEccPoint_PAI_P224rÊr}NrËrrrrærærÏrræzpoint-at-infinity.org-P224.txtz&P-224 tests from point-at-infinity.orgcó—t|«SrArÒrÔs rrhrh#rÖrcó—t|d«SrØrÒrÚs rrhrh$rÛrcó—t|d«SrØrÒrÝs rrhrh%rÛrcó’—|j|z}|j|j|«|j|j|«yrArßràs     rrãrã'rärcóV—eZdZdZedZeejejd«Z    y)ÚTestEccPoint_PAI_P256rÊÚp256NrËrrrrìrì.rÏrrìzpoint-at-infinity.org-P256.txtz&P-256 tests from point-at-infinity.orgcó—t|«SrArÒrÔs rrhrh8rÖrcó—t|d«SrØrÒrÚs rrhrh9rÛrcó—t|d«SrØrÒrÝs rrhrh:rÛrcó’—|j|z}|j|j|«|j|j|«yrArßràs     rrãrã<rärcóV—eZdZdZedZeejejd«Z    y)ÚTestEccPoint_PAI_P384rÊr¥NrËrrrróróCrÏrrózpoint-at-infinity.org-P384.txtz&P-384 tests from point-at-infinity.orgcó—t|«SrArÒrÔs rrhrhMrÖrcó—t|d«SrØrÒrÚs rrhrhNrÛrcó—t|d«SrØrÒrÝs rrhrhOrÛrcó’—|j|z}|j|j|«|j|j|«yrArßràs     rrãrãQrärcóV—eZdZdZedZeejejd«Z    y)ÚTestEccPoint_PAI_P521rÊr¸NrËrrrrùrùXrÏrrùzpoint-at-infinity.org-P521.txtz&P-521 tests from point-at-infinity.orgcó—t|«SrArÒrÔs rrhrhbrÖrcó—t|d«SrØrÒrÚs rrhrhcrÛrcó—t|d«SrØrÒrÝs rrhrhdrÛrcó’—|j|z}|j|j|«|j|j|«yrArßràs     rrãrãfrärcó6—eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z    y)    ÚTestEccKey_P192cóΗtdd¬«}|j|jd«|j|j    ««|j|j
j tdj«|j|j
jtdj«ttdjtdjd¬«}tdd|¬«}|j|jd«|j|j    ««|j|j
|«tdd¬«}tdd¬«}y)    NúP-192é©rr'r0r©rr'ÚpointÚ    secp192r1Ú
prime192v1© r    r+r'r Ú has_privaterrSrrÌrTrÍr©r!Úkeyrs   rÚtest_private_keyz TestEccKey_P192.test_private_keyoóþ€ä˜7 aÔ(ˆØ ×јŸ™ Ô"Ø ‰˜Ÿ™Ó)Ô*Ø ×јŸ™Ÿ™¤w¨v¡×'9Ñ'9Ô:Ø ×јŸ™Ÿ™¤w¨v¡×'9Ñ'9Ô:䜠™×+Ñ+¬W°V©_×-?Ñ-?ÀwÔOˆÜ˜7 a¨uÔ5ˆØ ×јŸ™ Ô"Ø ‰˜Ÿ™Ó)Ô*Ø ×јŸ™ UÔ+ô˜;¨!Ô,ˆÜ˜<¨1Ô-‰rcóô—ttdjtdjd¬«}t    d|¬«}|j |j ««|j|j|«y)Nr0rr©rr©    rrrÌrÍr    rr    r+r©r!rr s   rÚtest_public_keyzTestEccKey_P192.test_public_keyóY€äœ ™×+Ñ+¬W°V©_×-?Ñ-?ÀwÔOˆÜ˜7¨%Ô0ˆØ ×јŸ™Ó*Ô+Ø ×јŸ™ UÕ+rcóȗtdd¬«}|j«}|j|j««|j    |j
|j
«y)Nrér©r    Ú
public_keyrr    r+r©r!Úpriv_keyÚpub_keys   rÚtest_public_key_derivedz'TestEccKey_P192.test_public_key_derivedˆóK€ä ¨1Ô-ˆØ×%Ñ%Ó'ˆØ ×ј×,Ñ,Ó.Ô/Ø ×јŸ™¨'¯.©.Õ9rcó2—|jtd„«y)Ncó—tdd¬«S)NzP-193rr©r    rrrrhz4TestEccKey_P192.test_invalid_curve.<locals>.<lambda>ó €¬f¸7ÀaÔ.H€r©rkrr5s rÚtest_invalid_curvez"TestEccKey_P192.test_invalid_curveó€Ø ×Ñœ*Ñ&HÕIrcó`—|jtd„«|jtd„«y)Ncó—tdd¬«S)Nrrrrrrrrhz0TestEccKey_P192.test_invalid_d.<locals>.<lambda>“r rcó>—tdtdj¬«S)Nrr0r©r    rÚorderrrrrhz0TestEccKey_P192.test_invalid_d.<locals>.<lambda>”ó€¬f¸7Ü7>¸v±×7LÑ7Lô/N€rr!r5s rÚtest_invalid_dzTestEccKey_P192.test_invalid_d’ó*€Ø ×Ñœ*Ñ&HÔIØ ×Ñœ*ñ'Nõ    Orcó¢—tjdd¬«}tjdd¬«}tjdd¬«}|j«}|j«}|j«}|j||«|j    ||«|j||«|j    ||«|j    ||«y)Nrr©r'ré©rr*rr+rE©r!Ú private_keyÚ private_key2Ú private_key3rÚ public_key2Ú public_key3s       rÚ test_equalityzTestEccKey_P192.test_equality—ó¬€ä—m‘m a¨wÔ7ˆ Ü—}‘} q°Ô8ˆ Ü—}‘} q°Ô8ˆ à ×+Ñ+Ó-ˆ
Ø"×-Ñ-Ó/ˆ Ø"×-Ñ-Ó/ˆ à ×ј lÔ3Ø ×јK¨Ô6à ×ј [Ô1Ø ×јJ¨ Ô4à ×јJ¨ Õ4rcóò—tjd¬«}|jdt|««|j    |j
d«|j    |j «j
d«y)Nr0rzcurve='NIST P-192'r2©rrÚassertInr,r+rr©r!r s  rÚtest_name_consistencyz%TestEccKey_P192.test_name_consistency©óT€Ül‰l Ô(ˆØ  ‰ Ð*¬D°«IÔ6Ø ×јŸ™ LÔ1Ø ×јŸ™Ó)×/Ñ/°Õ>rN©
rrrr rrr"r*r6r<rrrrÿrÿmó'„ò.ò$,ò:òJòOò
5ó$?rrÿcó6—eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z    y)    ÚTestEccKey_P224cóΗtdd¬«}|j|jd«|j|j    ««|j|j
j tdj«|j|j
jtdj«ttdjtdjd¬«}tdd|¬«}|j|jd«|j|j    ««|j|j
|«tdd¬«}tdd¬«}y)    NúP-224rrr}rrÚ    secp224r1Ú
prime224v1rr
s   rr z TestEccKey_P224.test_private_key²r rcóô—ttdjtdjd¬«}t    d|¬«}|j |j ««|j|j|«y)Nr}rCrrrrs   rrzTestEccKey_P224.test_public_keyÄrrcóȗtdd¬«}|j«}|j|j««|j    |j
|j
«y)NrCrrrrs   rrz'TestEccKey_P224.test_public_key_derivedËrrcó2—|jtd„«y)Ncó—tdd¬«S)NzP-225rrrrrrrhz4TestEccKey_P224.test_invalid_curve.<locals>.<lambda>Ór rr!r5s rr"z"TestEccKey_P224.test_invalid_curveÒr#rcó`—|jtd„«|jtd„«y)Ncó—tdd¬«S)NrCrrrrrrrhz0TestEccKey_P224.test_invalid_d.<locals>.<lambda>Ör rcó>—tdtdj¬«S)NrCr}rr'rrrrhz0TestEccKey_P224.test_invalid_d.<locals>.<lambda>×r)rr!r5s rr*zTestEccKey_P224.test_invalid_dÕr+rcó¢—tjdd¬«}tjdd¬«}tjdd¬«}|j«}|j«}|j«}|j||«|j    ||«|j||«|j    ||«|j    ||«y)NrrCr-r.r/r0s       rr6zTestEccKey_P224.test_equalityÚr7rcóò—tjd¬«}|jdt|««|j    |j
d«|j    |j «j
d«y)Nr}rzcurve='NIST P-224'rr9r;s  rr<z%TestEccKey_P224.test_name_consistencyìr=rNr>rrrrArA°r?rrAcó6—eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z    y)    ÚTestEccKey_P256có—tdd¬«}|j|jd«|j|j    ««|j|j
j tdj«|j|j
jtdj«ttdjtdj«}tdd|¬«}|j|jd«|j|j    ««|j|j
|«tdd¬«}tdd¬«}|jttdd¬    «y)
NrrrrírÚ    secp256r1Ú
prime256v1s HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)rÚseed)r    r+r'r r    rrSrrÌrTrÍrrkrr
s   rr z TestEccKey_P256.test_private_keyõs€ä˜7 aÔ(ˆØ ×јŸ™ Ô"Ø ‰˜Ÿ™Ó)Ô*Ø ×јŸ™Ÿ™¤w¨v¡×'9Ñ'9Ô:Ø ×јŸ™Ÿ™¤w¨v¡×'9Ñ'9Ô:䜠™×+Ñ+¬W°V©_×-?Ñ-?Ó@ˆÜ˜7 a¨uÔ5ˆØ ×јŸ™ Ô"Ø ‰˜Ÿ™Ó)Ô*Ø ×јŸ™ UÔ+ô˜;¨!Ô,ˆÜ˜<¨1Ô-ˆð     ×Ñœ*¤f°FÀÐÕIrcóð—ttdjtdj«}t    d|¬«}|j |j ««|j|j|«y)Nrírrrrs   rrzTestEccKey_P256.test_public_key
sW€äœ ™×+Ñ+¬W°V©_×-?Ñ-?Ó@ˆÜ˜7¨%Ô0ˆØ ×јŸ™Ó*Ô+Ø ×јŸ™ UÕ+rcóȗtdd¬«}|j«}|j|j««|j    |j
|j
«y)Nrrrrrs   rrz'TestEccKey_P256.test_public_key_derivedrrcó2—|jtd„«y)Ncó—tdd¬«S)NzP-257rrrrrrrhz4TestEccKey_P256.test_invalid_curve.<locals>.<lambda>r rr!r5s rr"z"TestEccKey_P256.test_invalid_curver#rcó`—|jtd„«|jtd„«y)Ncó—tdd¬«S)Nrrrrrrrrhz0TestEccKey_P256.test_invalid_d.<locals>.<lambda>r rcó>—tdtdj¬«S)Nrrírr'rrrrhz0TestEccKey_P256.test_invalid_d.<locals>.<lambda>s€¬f¸7ÄgÈfÁo×F[ÑF[Ô.\€rr!r5s rr*zTestEccKey_P256.test_invalid_ds$€Ø ×Ñœ*Ñ&HÔIØ ×Ñœ*Ñ&\Õ]rcó¢—tjdd¬«}tjdd¬«}tjdd¬«}|j«}|j«}|j«}|j||«|j    ||«|j||«|j    ||«|j    ||«y)Nrrr-r.r/r0s       rr6zTestEccKey_P256.test_equalityr7rcóò—tjd¬«}|jdt|««|j    |j
d«|j    |j «j
d«y)Nrírzcurve='NIST P-256'r“r9r;s  rr<z%TestEccKey_P256.test_name_consistency1r=rNr>rrrrPrPós(„òJò*,ò:òJò^ò5ó$?rrPcó6—eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z    y)    ÚTestEccKey_P384cóÀ—td}tdd¬«}|j|jd«|j    |j ««|j|j j|j«|j|j j|j«t|j|jd«}tdd|¬«}|j|jd«|j    |j ««|j|j |«tdd¬«}tdd¬«}tdd¬«}y)Nr¥rrrrÚ    secp384r1Ú
prime384v1© rr    r+r'r r    rrSrÌrTrÍr)r!r¥r rs    rr z TestEccKey_P384.test_private_key:óû€äv‰ˆä˜7 aÔ(ˆØ ×јŸ™ Ô"Ø ‰˜Ÿ™Ó)Ô*Ø ×јŸ™Ÿ™ t§w¡wÔ/Ø ×јŸ™Ÿ™ t§w¡wÔ/䘟™ $§'¡'¨6Ó2ˆÜ˜7 a¨uÔ5ˆØ ×јŸ™ Ô"Ø ‰˜Ÿ™Ó)Ô*Ø ×јŸ™ UÔ+ô˜6 QÔ'ˆÜ˜;¨!Ô,ˆÜ˜<¨1Ô-‰rcóè—td}t|j|jd«}t    d|¬«}|j |j ««|j|j|«y)Nr¥rr©    rrrÌrÍr    rr    r+r)r!r¥rr s    rrzTestEccKey_P384.test_public_keyOóV€äv‰ˆÜ˜Ÿ™ $§'¡'¨6Ó2ˆÜ˜7¨%Ô0ˆØ ×јŸ™Ó*Ô+Ø ×јŸ™ UÕ+rcóȗtdd¬«}|j«}|j|j««|j    |j
|j
«y)Nrrrrrs   rrz'TestEccKey_P384.test_public_key_derivedWrrcó2—|jtd„«y)Ncó—tdd¬«S)NzP-385rrrrrrrhz4TestEccKey_P384.test_invalid_curve.<locals>.<lambda>_r rr!r5s rr"z"TestEccKey_P384.test_invalid_curve^r#rcó`—|jtd„«|jtd„«y)Ncó—tdd¬«S)Nrrrrrrrrhz0TestEccKey_P384.test_invalid_d.<locals>.<lambda>br rcó>—tdtdj¬«S)Nrr¥rr'rrrrhz0TestEccKey_P384.test_invalid_d.<locals>.<lambda>cr)rr!r5s rr*zTestEccKey_P384.test_invalid_dar+rcó¢—tjdd¬«}tjdd¬«}tjdd¬«}|j«}|j«}|j«}|j||«|j    ||«|j||«|j    ||«|j    ||«y)Nrrr-r.r/r0s       rr6zTestEccKey_P384.test_equalityfr7rcóò—tjd¬«}|jdt|««|j    |j
d«|j    |j «j
d«y)Nr¥rzcurve='NIST P-384'r§r9r;s  rr<z%TestEccKey_P384.test_name_consistencyxr=rNr>rrrr_r_8ó'„ò.ò*,ò:òJòOò
5ó$?rr_có6—eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z    y)    ÚTestEccKey_P521cóÀ—td}tdd¬«}|j|jd«|j    |j ««|j|j j|j«|j|j j|j«t|j|jd«}tdd|¬«}|j|jd«|j    |j ««|j|j |«tdd¬«}tdd¬«}tdd¬«}y)Nr¸úP-521rrrÚ    secp521r1Ú
prime521v1rc)r!r¸r rs    rr z TestEccKey_P521.test_private_keyrdrcóè—td}t|j|jd«}t    d|¬«}|j |j ««|j|j|«y)Nr¸rrrf)r!r¸rr s    rrzTestEccKey_P521.test_public_key–rgrcóȗtdd¬«}|j«}|j|j««|j    |j
|j
«y)Nrtrrrrs   rrz'TestEccKey_P521.test_public_key_derivedžrrcó2—|jtd„«y)Ncó—tdd¬«S)NzP-522rrrrrrrhz4TestEccKey_P521.test_invalid_curve.<locals>.<lambda>¦r rr!r5s rr"z"TestEccKey_P521.test_invalid_curve¥r#rcó`—|jtd„«|jtd„«y)Ncó—tdd¬«S)Nrtrrrrrrrhz0TestEccKey_P521.test_invalid_d.<locals>.<lambda>©r rcó>—tdtdj¬«S)Nrtr¸rr'rrrrhz0TestEccKey_P521.test_invalid_d.<locals>.<lambda>ªr)rr!r5s rr*zTestEccKey_P521.test_invalid_d¨r+rcó¢—tjdd¬«}tjdd¬«}tjdd¬«}|j«}|j«}|j«}|j||«|j    ||«|j||«|j    ||«|j    ||«y)Nrrtr-r.r/r0s       rr6zTestEccKey_P521.test_equality­r7rcóò—tjd¬«}|jdt|««|j    |j
d«|j    |j «j
d«y)Nr¸rzcurve='NIST P-521'rºr9r;s  rr<z%TestEccKey_P521.test_name_consistency¿r=rNr>rrrrrrrrprrrcó—eZdZd„Zd„Zd„Zy)ÚTestEccModule_P192cót—tjd¬«}|j|j««|j    |j
t tdjtdjd«|jzd«tjd¬«tjd¬«y)Nrrr0rr© rrr r    r+rrrrÌrÍr'r;s  rÚ test_generatez TestEccModule_P192.test_generateÈó…€äl‰l Ô)ˆØ ‰˜Ÿ™Ó)Ô*Ø ×јŸ™¤X¬g°f©o×.@Ñ.@Ü.5°f©o×.@Ñ.@Ø.5ó&7à9<¿¹ñ&?ð/5ô    6ô       ‰ ˜;Õ'Ü  ‰ ˜<Ö(rcó`—tjdd¬«}|j|j««|j    |j
t dj«tjdt djt dj¬«}|j|j««|j    |j
t dj«tjdd¬«tjdd¬«tjdd¬«y)Nrrrr0©rr(r)rr© rr*r r    r+rrÚGrÌrÍrr;s  rÚtest_constructz!TestEccModule_P192.test_constructÕóˀäm‰m '¨QÔ/ˆØ ‰˜Ÿ™Ó)Ô*Ø ×јŸ™¤W¨V¡_×%6Ñ%6Ô7äm‰m '´7¸6±?×3EÑ3EÜ$+¨F¡O×$6Ñ$6ô8ˆà ×јŸ™Ó*Ô+Ø ×јŸ™¤W¨V¡_×%6Ñ%6Ô7ô      ‰ ˜F aÕ(Ü  ‰ ˜K¨1Õ-Ü  ‰ ˜L¨AÖ.rcó—tdd¬«}ttdjtdj¬«}|jt
t jfddi|¤Ž|jt
t jfdddœ|¤Žy)    Né
r.©r(r)r0rrér©ÚdictrrÌrÍrkrrr*©r!ÚcoordÚcoordGs   rÚtest_negative_constructz*TestEccModule_P192.test_negative_constructåóp€Ü˜R¨Ô+ˆÜœg f™o×0Ñ0¼'À&¹/×:LÑ:LÔMˆàˆ×Ñœ*¤c§m¡mÑL¸7ÐLÀeÒL؈×Ñœ*¤c§m¡mÐR¸7ÀaÑRÈ6ÓRrN©rrrr„rŠr•rrrrrÆó„ò )ò/ó Srrcó—eZdZd„Zd„Zd„Zy)ÚTestEccModule_P224cót—tjd¬«}|j|j««|j    |j
t tdjtdjd«|jzd«tjd¬«tjd¬«y)NrCrr}rDrErƒr;s  rr„z TestEccModule_P224.test_generateïr…rcó`—tjdd¬«}|j|j««|j    |j
t dj«tjdt djt dj¬«}|j|j««|j    |j
t dj«tjdd¬«tjdd¬«tjdd¬«y)NrCrrr}r‡rDrErˆr;s  rrŠz!TestEccModule_P224.test_constructür‹rcó—tdd¬«}ttdjtdj¬«}|jt
t jfddi|¤Ž|jt
t jfdddœ|¤Žy)    Nrr.rŽr}rrCrrrr’s   rr•z*TestEccModule_P224.test_negative_construct r–rNr—rrrršršír˜rršcó—eZdZd„Zd„Zd„Zy)ÚTestEccModule_P256cór—tjd¬«}|j|j««|j    |j
t tdjtdj«|jzd«tjd¬«tjd¬«y)NrrrírRrSrƒr;s  rr„z TestEccModule_P256.test_generates‚€äl‰l Ô)ˆØ ‰˜Ÿ™Ó)Ô*Ø ×јŸ™¤X¬g°f©o×.@Ñ.@Ü.5°f©o×.@Ñ.@ó&BØDGÇEÁEñ&Jà.4ô    6ô
      ‰ ˜;Õ'Ü  ‰ ˜<Ö(rcó`—tjdd¬«}|j|j««|j    |j
t dj«tjdt djt dj¬«}|j|j««|j    |j
t dj«tjdd¬«tjdd¬«tjdd¬«y)Nrrrrír‡rRrSrˆr;s  rrŠz!TestEccModule_P256.test_construct"r‹rcó—tdd¬«}ttdjtdj¬«}|jt
t jfddi|¤Ž|jt
t jfdddœ|¤Žy)    Nrr.rŽrírrrrrr’s   rr•z*TestEccModule_P256.test_negative_construct2r–rNr—rrrrŸrŸs„ò
)ò/ó SrrŸcó—eZdZd„Zd„Zd„Zy)ÚTestEccModule_P384cóh—td}tjd¬«}|j|j    ««|j |j t|j|jd«|jz«tjd¬«tjd¬«y)Nr¥rrrarb© rrrr r    r+rrrÌrÍr'©r!rr s   rr„z TestEccModule_P384.test_generate<ót€ä˜‘ˆÜl‰l Ô)ˆØ ‰˜Ÿ™Ó)Ô*Ø ×јŸ™¤X¨e¯h©h¸¿¹À&Ó%IÈCÏEÉEÑ%QÔRô      ‰ ˜;Õ'Ü  ‰ ˜<Ö(rcóH—td}tjdd¬«}|j|j    ««|j |j tdj«tjd|j|j¬«}|j|j    ««|j |j |j«tjdd¬«tjdd¬«tjdd¬«y)Nr¥rrrr‡rarb© rrr*r r    r+rr‰rÌrÍrr§s   rrŠz!TestEccModule_P384.test_constructGó¿€ä˜‘ˆÜm‰m '¨QÔ/ˆØ ‰˜Ÿ™Ó)Ô*Ø ×јŸ™¤W¨V¡_×%6Ñ%6Ô7äm‰m '°5·8±8ÀUÇXÁXÔNˆØ ×јŸ™Ó*Ô+Ø ×јŸ™ U§W¡WÔ-ô      ‰ ˜F aÕ(Ü  ‰ ˜K¨1Õ-Ü  ‰ ˜L¨AÖ.rcó—tdd¬«}ttdjtdj¬«}|jt
t jfddi|¤Ž|jt
t jfdddœ|¤Žy)    Nrr.rŽr¥rrrrrr’s   rr•z*TestEccModule_P384.test_negative_constructWr–rNr—rrrr¤r¤:ó„ò    )ò/ó Srr¤có—eZdZd„Zd„Zd„Zy)ÚTestEccModule_P521cóh—td}tjd¬«}|j|j    ««|j |j t|j|jd«|jz«tjd¬«tjd¬«y)Nr¸rtrrurvr¦r§s   rr„z TestEccModule_P521.test_generatear¨rcóH—td}tjdd¬«}|j|j    ««|j |j tdj«tjd|j|j¬«}|j|j    ««|j |j |j«tjdd¬«tjdd¬«tjdd¬«y)Nr¸rtrrr‡rurvrªr§s   rrŠz!TestEccModule_P521.test_constructlr«rcó—tdd¬«}ttdjtdj¬«}|jt
t jfddi|¤Ž|jt
t jfdddœ|¤Žy)    Nrr.rŽr¸rrtrrrr’s   rr•z*TestEccModule_P521.test_negative_construct|r–rNr—rrrr¯r¯_r­rr¯cóþ—g}|tt«z }|tt«z }|tt«z }|tt«z }|tt
«z }|tt «z }|tt«z }|tt«z }|tt«z }|tt«z }|tt«z }|tt«z }|tt«z }|tt«z }|tt«z }|tt «z }|tt"«z }|tt$«z }|tt&«z }|tt(«z }|tt*«z }|SrA)rr r/r|r‘r¤r·rÉrærìrórùrÿrArPr_rrrršrŸr¤r¯)ÚconfigÚtestss  rÚ    get_testsr¶„sV€Ø €EØ    Œ_œ\Ó *Ñ*€EØ    Œ_Ô3Ó 4Ñ4€EØ    Œ_Ô3Ó 4Ñ4€EØ    Œ_Ô3Ó 4Ñ4€EØ    Œ_Ô3Ó 4Ñ4€EØ    Œ_Ô3Ó 4Ñ4€EØ    Œ_Ô2Ó 3Ñ3€EØ    Œ_Ô2Ó 3Ñ3€EØ    Œ_Ô2Ó 3Ñ3€EØ    Œ_Ô2Ó 3Ñ3€EØ    Œ_Ô2Ó 3Ñ3€EØ    Œ_œ_Ó -Ñ-€EØ    Œ_œ_Ó -Ñ-€EØ    Œ_œ_Ó -Ñ-€EØ    Œ_œ_Ó -Ñ-€EØ    Œ_œ_Ó -Ñ-€EØ    Œ_Ô/Ó 0Ñ0€EØ    Œ_Ô/Ó 0Ñ0€EØ    Œ_Ô/Ó 0Ñ0€EØ    Œ_Ô/Ó 0Ñ0€EØ    Œ_Ô/Ó 0Ñ0€EØ €LrÚ__main__có<—tjt««SrA)ÚunittestÚ    TestSuiter¶rrrrhrhŸs€”H×&Ñ&¤y£{Ó3€rÚsuite)Ú defaultTest)1r¹ÚbinasciirÚCrypto.SelfTest.st_commonrÚCrypto.SelfTest.loaderrÚCrypto.PublicKeyrÚCrypto.PublicKey.ECCrrr    ÚCrypto.Math.Numbersr
ÚTestCaser r/r|r‘r¤r·rÉÚtv_paiÚtvrÕrSrTrãÚsetattrÚcountrærìrórùrÿrArPr_rrrršrŸr¤r¯r¶rr»Úmainrrrú<module>rÉs4ðó>Ýå5Ý4å ß:Ñ:å'ôA8×$Ñ$ôAôBL:˜X×.Ñ.ôL:ô^L:˜X×.Ñ.ôL:ô^J:˜X×.Ñ.ôJ:ôZC:˜X×.Ñ.ôC:ôLD:˜X×.Ñ.ôD:ôN2˜H×-Ñ-ô2ñ
Ð/Ø4Ø<Ù*Ù.Ù.ñ0ó
1ò
57ð ð òC€BØ Ÿd™d b§d¡d¨b¯d©dó&ñ Ð ! 9¨r¯x©xÑ#7¸ÕBð Cô2˜H×-Ñ-ô2ñ
Ð/Ø4Ø<Ù*Ù.Ù.ñ0ó
1ò
57ð ð òC€BØ Ÿd™d b§d¡d¨b¯d©dó&ñ Ð ! 9¨r¯x©xÑ#7¸ÕBð Cô2˜H×-Ñ-ô2ñ
Ð/Ø4Ø<Ù*Ù.Ù.ñ0ó
1ò
57ð ð òC€BØ Ÿd™d b§d¡d¨b¯d©dó&ñ Ð ! 9¨r¯x©xÑ#7¸ÕBð Cô2˜H×-Ñ-ô2ñ
Ð/Ø4Ø<Ù*Ù.Ù.ñ0ó
1ò
57ð ð òC€BØ Ÿd™d b§d¡d¨b¯d©dó&ñ Ð ! 9¨r¯x©xÑ#7¸ÕBð Cô2˜H×-Ñ-ô2ñ
Ð/Ø4Ø<Ù*Ù.Ù.ñ0ó
1ò
57ð ð òC€BØ Ÿd™d b§d¡d¨b¯d©dó&ñ Ð ! 9¨r¯x©xÑ#7¸ÕBð Cô@?h×'Ñ'ô@?ôF@?h×'Ñ'ô@?ôFB?h×'Ñ'ôB?ôJD?h×'Ñ'ôD?ôND?h×'Ñ'ôD?ôN$S˜×*Ñ*ô$SôN$S˜×*Ñ*ô$SôN#S˜×*Ñ*ô#SôL"S˜×*Ñ*ô"SôJ"S˜×*Ñ*ô"SðJóð4 ˆzÒÙ 3€EØ€H‡MM˜gÖ&ðr