hyb
2026-01-30 44480e71b27aa9d4cb8441f50c873f1b110e9691
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
Ë
ž¬`iS•ãóЗddlmZddlZddlmZddlmZddlmZm    Z    ddl
m Z m Z ddl mZddlmZmZdd    lmZd
„ZGd „d ej*«ZGd „dej*«ZGd„dej*«ZGd„dej*«ZGd„dej*«ZGd„dej*«Zeddddd„i«xsgZeeddddd„i«xsgz Zee«D].\ZZe ee!«rŒefd„Z"e#ed eze"«e#ed eze"«Œ0Gd!„d"ej*«Z$Gd#„d$ej*«Z%ifd%„Z&e'd&k(rd'„Z(ejRd(¬)«yy)*é)Úprint_functionN)Ú    unhexlify)Úlist_test_cases)Úload_test_vectorsÚload_test_vectors_wycheproof)ÚtobytesÚbchr)ÚAES)ÚSHAKE128ÚSHA256)Ústrxorcó^—tjt|«¬«j|«S)N)Údata)r ÚnewrÚread)ÚtagÚlengths  õrH:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\Crypto/SelfTest/Cipher/test_GCM.pyÚget_tag_randomr.s €Ü <‰<œW S›\Ô *× /Ñ /°Ó 7Ð7ócó´—eZdZedd«Zedd«Zedd«Zd„Zd„Zd    „Z    d
„Z
d „Z d „Z d „Z d„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zy)ÚGcmTestsÚkey_128éÚ    nonce_128é ré€cól—tj|jtj|j¬«}t dd«}|j |«}tj|jtj|j¬«}|j|«}|j||«y)N©ÚnonceÚ    plaintexti@)    r
rrÚMODE_GCMÚnonce_96rÚencryptÚdecryptÚ assertEqual)ÚselfÚcipherÚptÚctÚpt2s     rÚtest_loopback_128zGcmTests.test_loopback_1288sv€Ü—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆÜ ˜K¨Ó 2ˆØ ^‰^˜BÓ ˆä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØn‰n˜RÓ ˆØ ×ј˜SÕ!rcóÒ—tj|jtj«tj|jtj|j«}|j |j «}tj|jtj|j¬«}|j||j |j ««y©Nr)r
rrr"r#r$rr&)r'r(r*s   rÚ
test_noncezGcmTests.test_nonceAsƒ€ä ‰— ‘ œcŸl™lÔ+ä—‘˜Ÿ™¤s§|¡|°T·]±]ÓCˆØ ^‰^˜DŸI™IÓ &ˆä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ×ј˜VŸ^™^¨D¯I©IÓ6Õ7rcó„—|jttj|jtj
d¬«y)NÚ test12345678r)Ú assertRaisesÚ    TypeErrorr
rrr"©r's rÚtest_nonce_must_be_bytesz!GcmTests.test_nonce_must_be_bytesKs,€Ø ×Ñœ)¤S§W¡W¨d¯l©l¼C¿L¹LØ /ð    õ    1rcóR—|jttj|jtj
d¬«t dd«D]X}tj|jtj
td«|z¬«}|jtd««ŒZy)Nrrér)    r2Ú
ValueErrorr
rrr"Úranger    r$)r'Úxr(s   rÚtest_nonce_lengthzGcmTests.test_nonce_lengthOsu€à ×Ñœ*¤c§g¡g¨t¯|©|¼S¿\¹\Ø #ð    ô    %ôq˜#“ò    $ˆAÜ—W‘W˜TŸ\™\¬3¯<©<¼tÀA»wȹ{ÔKˆFØ N‰Nœ4 ›7Õ #ñ    $rcó̗tj|jtj|j¬«}|j |j tj «yr.)r
rrr"r#r&Ú
block_size©r'r(s  rÚtest_block_size_128zGcmTests.test_block_size_128Xs:€Ü—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ×ј×*Ñ*¬C¯N©NÕ;rcóþ—tj|jtj|j¬«}|j |j |j«tj|jtj«j }tj|jtj«j }|j t|«d«|j||«y)Nrr)    r
rrr"r#r&r ÚlenÚassertNotEqual)r'r(Únonce1Únonce2s    rÚtest_nonce_attributezGcmTests.test_nonce_attribute\sš€Ü—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ×јŸ™ t§}¡}Ô5ô—‘˜Ÿ™¤s§|¡|Ó4×:Ñ:ˆÜ—‘˜Ÿ™¤s§|¡|Ó4×:Ñ:ˆØ ×Ñœ˜V› bÔ)Ø ×јF FÕ+rcó¤—|jttj|jtj
|j d«|jttj|jtj
|j d¬«tj|jtj
|j d¬«y)Né)r ÚunknownF)r Ú    use_aesni)r2r3r
rrr"r#r4s rÚtest_unknown_parametersz GcmTests.test_unknown_parametersfs€€Ø ×Ñœ)¤S§W¡W¨d¯l©l¼C¿L¹LØŸ-™-¨ô    ,à ×Ñœ)¤S§W¡W¨d¯l©l¼C¿L¹LØ $§ ¡ °qð    ô    :ô
     ‰— ‘ œcŸl™l°$·-±-Øö    !rcóΗdD]`}tj|jtj|j¬«}t ||«d«}|j |d«Œby)N©r$r%rr)r
rrr"r#Úgetattrr&)r'Úfuncr(Úresults    rÚtest_null_encryption_decryptionz(GcmTests.test_null_encryption_decryptionqsR€Ø(ò    *ˆDÜ—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFØ*”W˜V TÓ*¨3Ó/ˆFØ × Ñ ˜V SÕ )ñ    *rcó´—tj|jtj|j¬«}|j d«|j t|jd«tj|jtj|j¬«}|jd«|j t|j
d«y)Nrr)    r
rrr"r#r$r2r3r%r>s  rÚtest_either_encrypt_or_decryptz'GcmTests.test_either_encrypt_or_decryptws‚€Ü—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ‰sÔØ ×Ñœ) V§^¡^°SÔ9ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ‰sÔØ ×Ñœ) V§^¡^°SÕ9rcóp—tj|jtj|j¬«}|j t |jd«tj|jtj|j¬«}|j t |jd«y)Nrztest1234567890-*)    r
rrr"r#r2r3r$r%r>s  rÚtest_data_must_be_bytesz GcmTests.test_data_must_be_bytes€sl€Ü—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ×Ñœ) V§^¡^Ð5HÔIä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ×Ñœ) V§^¡^Ð5HÕIrcó —|jttj|jtj
|j d¬«|jttj|jtj
|j d¬«tdd«D]v}tj|jtj
|j |¬«}|j|j«\}}|jt|«|«Œxtj|jtj
|j ¬«}|j|j«\}}|jt|«d«y)Né)r Úmac_lenéérr) r2r8r
rrr"r#r9Úencrypt_and_digestrr&rA)r'rWr(Ú_Úmacs     rÚ test_mac_lenzGcmTests.test_mac_len‡s€à ×Ñœ*¤c§g¡g¨t¯|©|¼S¿\¹\Ø $§ ¡ °qð    ô    :à ×Ñœ*¤c§g¡g¨t¯|©|¼S¿\¹\Ø $§ ¡ °tð    ô    =ô˜Q Ó'ò    0ˆGÜ—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}Ø%,ô.ˆFà×.Ñ.¨t¯y©yÓ9‰FˆAˆsØ × Ñ œS ›X wÕ /ð        0ô—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ×*Ñ*¨4¯9©9Ó5‰ˆˆ3Ø ×Ñœ˜S› 2Õ&rcóŠ—ddlm}tj|jtj
|j ¬«}|j|j«\}}||d«}tj|jtj
|j ¬«}|jt|j||«y)Nr)Ústrxor_crr7) ÚCrypto.Util.strxorr_r
rrr"r#rZrr2r8Údecrypt_and_verify)r'r_r(r*r\Ú invalid_macs      rÚtest_invalid_maczGcmTests.test_invalid_macšs‚€Ý/Ü—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ×+Ñ+¨D¯I©IÓ6‰ˆˆCá˜s DÓ)ˆ ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ×Ñœ* f×&?Ñ&?ÀØ%õ    'rcó€—tj|jtj|j¬«}|j «}|j |j«t|««tj|jtj|j¬«}|j|«yr.)
r
rrr"r#Ú    hexdigestr&ÚdigestrÚ    hexverify)r'r(Úmac_hexs   rÚ test_hex_maczGcmTests.test_hex_mac¥su€Ü—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ×"Ñ"Ó$ˆØ ×јŸ™›¬)°GÓ*<Ô=ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ×јÕ!rcó²—tdd«}tdd«}tj|jtj|j
¬«}|j |«|j|«\}}d„}dD]¢}tj|jtj|j
¬«}|||«D]}|j |«Œd}    |||«D]}|    |j|«z }    Œ|j||    «|j|«Œ¤dD]±}tj|jtj|j
¬«}|||«D]}|j |«Œd}
|||«D]}|
|j|«z }
Œ|j||
«|j|j«|«Œ³y)Nzauthenticated dataér!rcó`—tdt|«|«Dcgc]
}||||z‘Œ c}Scc}w)Nr)r9rA)rÚ chunk_lengthÚis   rÚbreak_upz.GcmTests.test_message_chunks.<locals>.break_up¸s9€Ü49¸!¼SÀ»YØ ó5"ö#¨qD˜˜1˜\™>Ò*ò#ð #ùò#s™+)
r7érVrGé
é ré(éPrr) rr
rrr"r#ÚupdaterZr%r&Úverifyr$rf) r'Ú    auth_datar!r(Ú
ciphertextÚref_macrormÚchunkr+Úct2s            rÚtest_message_chunkszGcmTests.test_message_chunks­s£€ô#Ð#7¸Ó=ˆ    Ü" ;°Ó4ˆ    ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ‰ iÔ Ø$×7Ñ7¸    ÓBш
Gò    #ð
@ò
    #ˆLä—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFá! )¨\Ó:ò %Ø— ‘ ˜eÕ$ð %àˆCÙ! *¨lÓ;ò -Øv—~‘~ eÓ,Ñ,‘ð -à × Ñ ˜Y¨Ô ,Ø M‰M˜'Õ "ð
    #ð@ò
    7ˆLä—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFá! )¨\Ó:ò %Ø— ‘ ˜eÕ$ð %àˆCÙ! )¨\Ó:ò -Øv—~‘~ eÓ,Ñ,‘ð -à × Ñ ˜Z¨Ô -Ø × Ñ ˜VŸ]™]›_¨gÕ 6ñ
    7rcó¤—t|j«}t|j«}t|j«}t|j«}t    j
|jtj |j¬«}|j|j«|j|j«}|j«}t    j
|tj |¬«}d|ddd|dd|j|«d|dd|j|«}    d|dd|j«}
|j||    «|j||
«|j|j|j«t|j«}t|j«}t|j«}~t    j
|tj |¬«} d|ddd|dd| j|«d|dd| jt|    «t|
««} |j|j| «y©NrsÿÿÿrV) Ú    bytearrayrr#rr
rr"rur$rfr&r ra) r'Úkey_baÚnonce_baÚ    header_baÚdata_baÚcipher1r*rÚcipher2Úct_testÚtag_testÚcipher4Úpt_tests              rÚtest_bytearrayzGcmTests.test_bytearrayÖsÜ€ô˜4Ÿ<™<Ó(ˆÜ˜TŸ]™]Ó+ˆÜ˜dŸi™iÓ(ˆ    Ü˜DŸI™IÓ&ˆä—'‘'˜$Ÿ,™,ÜŸ,™,Ø $§ ¡ ô/ˆð    ‰t—y‘yÔ!Ø _‰_˜TŸY™YÓ 'ˆØn‰nÓˆä—'‘'˜&ÜŸ,™,Ø (ô*ˆð%ˆˆrˆ
Ø&ˆ!ˆ ؏‰yÔ!Ø'ˆ    "1ˆ Ø—/‘/ 'Ó*ˆØ%ˆˆ Ø—>‘>Ó#ˆà ×ј˜WÔ%Ø ×ј˜hÔ'Ø ×јŸ™¨¯ © Ô6ô˜4Ÿ<™<Ó(ˆÜ˜TŸ]™]Ó+ˆÜ˜dŸi™iÓ(ˆ    Ø ä—'‘'˜&ÜŸ,™,Ø (ô*ˆð%ˆˆrˆ
Ø&ˆ!ˆ ؏‰yÔ!Ø'ˆ    "1ˆ Ø×,Ñ,¬Y°wÓ-?ÄÈ8ÓATÓUˆà ×јŸ™ GÕ,rcó"—tt|j««}tt|j««}tt|j««}tt|j««}t j |jt
j|j¬«}|j|j«|j|j«}|j«}t j |t
j|¬«}d|ddd|dd|j|«d|dd|j|«}    d|dd|j«}
|j||    «|j||
«|j|j|j«tt|j««}tt|j««}tt|j««}~t j |t
j|¬«} d|ddd|dd| j|«d|dd| jt|    «t|
««} |j|j| «yr~)Ú
memoryviewrrr#rr
rr"rur$rfr&r ra) r'Úkey_mvÚnonce_mvÚ    header_mvÚdata_mvr„r*rr…r†r‡rˆr‰s              rÚtest_memoryviewzGcmTests.test_memoryviewsÿ€ôœI d§l¡lÓ3Ó4ˆÜœi¨¯ © Ó6Ó7ˆÜœy¨¯©Ó3Ó4ˆ    ÜœY t§y¡yÓ1Ó2ˆä—'‘'˜$Ÿ,™,ÜŸ,™,Ø $§ ¡ ô/ˆð    ‰t—y‘yÔ!Ø _‰_˜TŸY™YÓ 'ˆØn‰nÓˆä—'‘'˜&ÜŸ,™,Ø (ô*ˆð%ˆˆrˆ
Ø&ˆ!ˆ ؏‰yÔ!Ø'ˆ    "1ˆ Ø—/‘/ 'Ó*ˆØ%ˆˆ Ø—>‘>Ó#ˆà ×ј˜WÔ%Ø ×ј˜hÔ'Ø ×јŸ™¨¯ © Ô6ôœI d§l¡lÓ3Ó4ˆÜœi¨¯ © Ó6Ó7ˆÜœy¨¯©Ó3Ó4ˆ    Ø ä—'‘'˜&ÜŸ,™,Ø (ô*ˆð%ˆˆrˆ
Ø&ˆ!ˆ ؏‰yÔ!Ø'ˆ    "1ˆ Ø×,Ñ,¬Z¸Ó-@Ä*ÈXÓBVÓWˆà ×јŸ™ GÕ,rcóˆ—d}tj|jtj|j¬«}|j |«}|j «}td«}tj|jtj|j¬«}|j ||¬«}|j||«|j|d«tj|jtj|j¬«}|j||¬«}|j||«|j|d«tj|jtj|j¬«}|j||¬«\}}|j||«|j|d«|j||«tj|jtj|j¬«}|j|||¬«}|j||«|j|d«y©Ns€55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555rr©Úoutput) r
rrr"r#r$rfrr&r%rZra)r'r)r(r*rr•ÚresÚtag_outs        rÚtest_output_paramzGcmTests.test_output_param4s£€à ˆÜ—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ^‰^˜BÓ ˆØm‰m‹oˆä˜3“ˆÜ—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØn‰n˜R¨ˆnÓ/ˆØ ×ј˜VÔ$Ø ×ј˜dÔ#ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØn‰n˜R¨ˆnÓ/ˆØ ×ј˜VÔ$Ø ×ј˜dÔ#ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ×0Ñ0°¸FÐ0ÓC‰ ˆˆWØ ×ј˜VÔ$Ø ×ј˜dÔ#Ø ×ј˜gÔ&ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ×'Ñ'¨¨C¸Ð'Ó?ˆØ ×ј˜VÔ$Ø ×ј˜dÕ#rcóB—d}tj|jtj|j¬«}|j |«}t td««}tj|jtj|j¬«}|j ||¬«|j||«tj|jtj|j¬«}|j||¬«|j||«yr“)
r
rrr"r#r$rŒrr&r%)r'r)r(r*r•s     rÚtest_output_param_memoryviewz%GcmTests.test_output_param_memoryviewQs½€à ˆÜ—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ^‰^˜BÓ ˆäœI c›NÓ+ˆÜ—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ‰r &ˆÔ)Ø ×ј˜VÔ$ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ‰r &ˆÔ)Ø ×ј˜VÕ$rcó¸—d}d|z}tj|jtj|j¬«}|j |«}tj|jtj|j¬«}|j t|j
|d|z¬«tj|jtj|j¬«}|j t|j|d|z¬«t|dz
«}tj|jtj|j¬«}|j t|j
||¬«tj|jtj|j¬«}|j t|j||¬«y)Nró5ró0r”r7) r
rrr"r#r$r2r3r%rr8)r'ÚLEN_PTr)r(r*Úshorter_outputs      rÚtest_output_param_negzGcmTests.test_output_param_neg`s6€Øˆà F‰]ˆÜ—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ^‰^˜BÓ ˆä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ×Ñœ) V§^¡^°RÀÀvÁ ÐÔNä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ×Ñœ) V§^¡^°RÀÀvÁ ÐÔNä" 6¨A¡:Ó.ˆÜ—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ×Ñœ* f§n¡n°bÀÐÔPÜ—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ×Ñœ* f§n¡n°bÀÐÕPrN)Ú__name__Ú
__module__Ú __qualname__rrr#rr,r/r5r;r?rErJrPrRrTr]rcrir|rŠr‘r˜ršr ©rrrr2sŠ„á˜Y¨Ó+€GÙ˜k¨2Ó.€HÙ ˜& #Ó &€Dò"ò8ò1ò$ò<ò,ò    !ò*ò :òJò'ò&    'ò"ò'7òR--ò^--ò^$ò: %óQrrcó„—eZdZedd«Zedd«Zedd«Zd„Zd„Zd    „Z    d
„Z
d „Z d „Z d „Z d„Zd„Zd„Zd„Zy)Ú GcmFSMTestsrrrrrrcó†—tj|jtj|j¬«}|j |j «}|j«}tj|jtj|j¬«}|j|«|j|«yr.)
r
rrr"r#r$rrfr%rv©r'r(r*r\s    rÚ-test_valid_init_encrypt_decrypt_digest_verifyz9GcmFSMTests.test_valid_init_encrypt_decrypt_digest_verifyzs}€ô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ^‰^˜DŸI™IÓ &ˆØm‰m‹oˆô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà‰rÔØ ‰ cÕrcóš—tj|jtj|j¬«}|j |j «|j«}tj|jtj|j¬«}|j |j «|j|«yr.)    r
rrr"r#rurrfrv©r'r(r\s   rÚ$test_valid_init_update_digest_verifyz0GcmFSMTests.test_valid_init_update_digest_verifyˆs€ô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ‰ d—i‘iԠ؏m‰m‹oˆô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ‰ d—i‘iԠ؏ ‰ cÕrcóò—tj|jtj|j¬«}|j |j «|j|j «}|j«}tj|jtj|j¬«}|j |j «|j|«|j|«yr.) r
rrr"r#rurr$rfr%rvr¨s    rÚtest_valid_full_pathz GcmFSMTests.test_valid_full_path–s€ô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ‰ d—i‘iÔ Ø ^‰^˜DŸI™IÓ &ˆØm‰m‹oˆô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ‰ d—i‘iԠ؏‰rÔØ ‰ cÕrcó˜—tj|jtj|j¬«}|j «yr.)r
rrr"r#rfr>s  rÚtest_valid_init_digestz"GcmFSMTests.test_valid_init_digest¦s)€ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ‰ rcó.—tj|jtj|j¬«}|j «}tj|jtj|j¬«}|j |«yr.)r
rrr"r#rfrvr«s   rÚtest_valid_init_verifyz"GcmFSMTests.test_valid_init_verify«sU€ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØm‰m‹oˆä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ‰ cÕrcó¸—dD]Õ}dd|j|jdzfD]³}|€d}n t|«}tj|jtj
|j ¬«}||j|«t||«}||j«||j«||j«||j«ŒµŒ×y)NrLs333ó3r)    rrAr
rrr"r#rurM)r'Ú method_namerwÚ    assoc_lenr(Úmethods      rÚ&test_valid_multiple_encrypt_or_decryptz2GcmFSMTests.test_valid_multiple_encrypt_or_decrypt³s¼€Ø/ò    "ˆKØ" F¨D¯I©IØ"Ÿi™i¨$Ñ.ð0ò "    àÐ$Ø $‘Iä # I£IÜŸ™ §¡¬s¯|©|Ø'+§}¡}ô6àÐ(Ø—M‘M )Ô,Ü  ¨Ó5Ùt—y‘yÔ!ِt—y‘yÔ!ِt—y‘yÔ!ِt—y‘yÕ!ñ "ñ    "rcó—tj|jtj|j¬«}|j |j «|j«}td«D]"}|j||j««Œ$tj|jtj|j¬«}|j |j «td«D]}|j|«Œy)NrérY) r
rrr"r#rurrfr9r&rv)r'r(Ú    first_macr:s    rÚ$test_valid_multiple_digest_or_verifyz0GcmFSMTests.test_valid_multiple_digest_or_verifyÅs³€ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ‰ d—i‘iÔ Ø—M‘M“Oˆ    Üq“ò    9ˆAØ × Ñ ˜Y¨¯ © «Õ 8ð    9ô—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ‰ d—i‘iԠܐq“ò    %ˆAØ M‰M˜)Õ $ñ    %rcóð—tj|jtj|j¬«}|j |j «|j|j «\}}tj|jtj|j¬«}|j |j «|j||«}|j|j |«yr.)
r
rrr"r#rurrZrar&)r'r(r*r\r)s     rÚ0test_valid_encrypt_and_digest_decrypt_and_verifyz<GcmFSMTests.test_valid_encrypt_and_digest_decrypt_and_verifyÓsž€ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ‰ d—i‘iÔ Ø×+Ñ+¨D¯I©IÓ6‰ˆˆCô—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ‰ d—i‘iÔ Ø × &Ñ & r¨3Ó /ˆØ ×јŸ™ BÕ'rc    ób—dD]ª\}}dD] }tj|jtj|j¬«}|r|j |j «t||«|j «|jtt||«|j «Œ¢Œ¬y)N)rL)r%r$)TFr)
r
rrr"r#rurrMr2r3)r'Ú method1_nameÚ method2_nameÚassoc_data_presentr(s     rÚ#test_invalid_mixing_encrypt_decryptz/GcmFSMTests.test_invalid_mixing_encrypt_decryptßs’€ð+Cò        -Ñ &ˆL˜,à&3ò -Ð"ÜŸ™ §¡¬s¯|©|Ø'+§}¡}ô6á%Ø—M‘M $§)¡)Ô,Ø-”˜  Ó-¨d¯i©iÔ8Ø×!Ñ!¤)¬W°V¸\Ó-JØ"&§)¡)õ-ñ  -ñ        -rcóÜ—dD]ç}tj|jtj|j¬«}|j |j «|j«|jtt||«|j «tj|jtj|j¬«}|j|j «Œéy)N)r$rur) r
rrr"r#r$rrfr2r3rMrZ)r'rµr(s   rÚ+test_invalid_encrypt_or_update_after_digestz7GcmFSMTests.test_invalid_encrypt_or_update_after_digestìsš€Ø.ò    1ˆKÜ—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFØ N‰N˜4Ÿ9™9Ô %Ø M‰MŒOØ × Ñ œi¬°¸Ó)EØ"Ÿi™iô )ô—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFØ × %Ñ % d§i¡iÕ 0ñ    1rcóÜ—tj|jtj|j¬«}|j |j «}|j«}dD]}tj|jtj|j¬«}|j|«|j|«|jtt||«|j «tj|jtj|j¬«}|j||«|jtt||«|j «Œy)Nr)r%ru)r
rrr"r#r$rrfr%rvr2r3rMra)r'r(r*r\rµs     rÚ+test_invalid_decrypt_or_update_after_verifyz7GcmFSMTests.test_invalid_decrypt_or_update_after_verify÷sò€Ü—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ^‰^˜DŸI™IÓ &ˆØm‰m‹oˆà.ó
    )ˆKÜ—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFØ N‰N˜2Ô Ø M‰M˜#Ô Ø × Ñ œi¬°¸Ó)EØ"Ÿi™iô )ô—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFØ × %Ñ % b¨#Ô .Ø × Ñ œi¬°¸Ó)EØ"Ÿi™iö )ñ
    )rN)r¡r¢r£rrr#rr©r¬r®r°r²r¸r¼r¾rÃrÅrÇr¤rrr¦r¦ts]„á˜Y¨Ó+€GÙ˜k¨2Ó.€HÙ ˜& #Ó &€Dò ò òò ò
ò"ò$ %ò
(ò -ò    1ó)rr¦c ó’—eZdZdZgd¢ZeDcgc]}|Dcgc] }t |«‘Œc}‘Œc}}}}Zd„Zycc}wcc}}}}w)Ú TestVectorsz‘Class exercising the GCM test vectors found in
       http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-revised-spec.pdf))ÚrÊrÊÚ 58e2fccefa7e3061367f1d57a4e7455aÚ 00000000000000000000000000000000Ú000000000000000000000000)rÊrÌÚ 0388dace60b6a392f328c2b971b2fe78Ú ab6e47d42cec13bdf53a67b21257bddfrÌrÍ)rÊڀd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255ڀ42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e21d514b25466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091473f5985Ú 4d5c2af327cd64a62cf35abd2ba6fab4Ú feffe9928665731c6d6a8f9467308308Úcafebabefacedbaddecaf888)Ú(feedfacedeadbeeffeedfacedeadbeefabaddad2Úxd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39Úx42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e21d514b25466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091Ú 5bc94fbc3221a5db94fae95ae7121a47rÓrÔ)rÕrÖÚx61353b4c2806934a777ff51fa22a4755699b2a714fcdc6f83766e5f97b6c742373806900e49f24b22b097544d4896b424989b5e1ebac0f07c23f4598Ú 3612d2e79e3b0785561be14aaca2fccbrÓÚcafebabefacedbad)rÕrÖÚx8ce24998625615b603a033aca13fb894be9112a5c3a211a8ba262a3cca7e2ca701e4a9a4fba43c90ccdcb281d48c7c6fd62875d2aca417034c34aee5Ú 619cc5aefffe0bfa462af43c1699d050rÓÚx9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b)rÊrÊrÊÚ cd33b28ac773f74ba00ed1f312572435Ú0000000000000000000000000000000000000000000000000rÍ)rÊrÌÚ 98e7247c07f0fe411c267e4384b0f600Ú 2ff58d80033927ab8ef4d4587514f0fbràrÍ)rÊrÐڀ3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c7d773d00c144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710acade256Ú 9924a7c8587336bfb118024db8674a14Ú0feffe9928665731c6d6a8f9467308308feffe9928665731crÔ)rÕrÖÚx3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c7d773d00c144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710Ú 2519498e80f1478f37ba55bd6d27618crårÔ)rÕrÖÚx0f10f599ae14a154ed24b36e25324db8c566632ef2bbb34f8347280fc4507057fddc29df9a471f75c66541d4d4dad1c9e93a19a58e8b473fa0f062f7Ú 65dcc57fcf623a24094fcca40d3533f8rårÛ)rÕrÖÚxd27e88681ce3243c4830165a8fdcf9ff1de9a1d8e6b447ef6ef7b79828666e4581e79012af34ddd9e2f037589b292db3e67c036745fa22e7e9b7373bÚ dcf566ff291c25bbb8568fc3d376a6d9rårÞ)rÊrÊrÊÚ 530f8afbc74536b9a963b4f1c4cb738bÚ@0000000000000000000000000000000000000000000000000000000000000000rÍ)rÊrÌÚ cea7403d4d606b6e074ec5d3baf39d18Ú d0d1c8a799996bf0265b98b5d48ab919rírÍ)rÊrÐڀ522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662898015adÚ b094dac5d93471bdec1a502270e3cc6cÚ@feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308rÔ)rÕrÖÚx522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662Ú 76fc6ece0f4e1768cddf8853bb2d551bròrÔ)rÕrÖÚxc3762df1ca787d32ae47c13bf19844cbaf1ae14d0b976afac52ff7d79bba9de0feb582d33934a4f0954cc2363bc73f7862ac430e64abe499f47c9b1fÚ 3a337dbf46a792c45e454913fe2ea8f2ròrÛ)rÕrÖÚx5a8def2f0c9e53f1f75d7853659e2a20eeb2b22aafde6419a058ab4f6f746bf40fc0c3b780f244452da3ebf1c5d82cdea2418997200ef82e44ae7e3fÚ a44a8266ee1c8eb0c8b5d4cf5ae9f19aròrÞc    óð—|jD]ç\}}}}}}tj|tj|t    |«¬«}|j |«|j |«\}}    |j||«|j||    «tj|tj|t    |«¬«}|j |«|j||«}
|j||
«Œéy)N)rW)    Ú test_vectorsr
rr"rArurZr&ra) r'Ú
assoc_datar)r*r\Úkeyr r(r{Úmac2r+s            rÚrunTestzTestVectors.runTestÆs΀Ø37×3DÑ3Dò     &Ñ /ˆJ˜˜B  S¨%ô—W‘W˜S¤#§,¡,°¼sÀ3»xÔHˆFØ M‰M˜*Ô %Ø×1Ñ1°"Ó5‰IˆCØ × Ñ ˜R Ô %Ø × Ñ ˜S $Ô 'ô—W‘W˜S¤#§,¡,°¼sÀ3»xÔHˆFØ M‰M˜*Ô %Ø×+Ñ+¨B°Ó4ˆCØ × Ñ ˜R Õ %ñ     &rN)r¡r¢r£Ú__doc__Útest_vectors_hexrrúrþ)Ú.0Útvr:rs0000rrÉrÉ    sD„ñfònÐð`:J×JÑJ°2¨2Ö. a”Y˜q•\Ô.ÕJ€Ló&ùò/ùÕJs’    A
›<­A
¼A
rÉcó—eZdZdZd„Zd„Zy)ÚTestVectorsGueronKrasnovz¦Class exercising the GCM test vectors found in
       'The fragility of AES-GCM authentication algorithm', Gueron, Krasnov
       https://eprint.iacr.org/2013/157.pdfcó—td«}td«}td«}td«}tj|tj|«j    |«}|j ||j ««y)NÚ 3da6c536d6295579c0959a7043efb503Ú2b926197d34e091ef722db94Ú 00000000000000000000000000000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3fÚ 69dd586555ce3fcc89663801a71d957b)rr
rr"rur&rf)r'rüÚivÚaadrfr(s      rÚtest_1zTestVectorsGueronKrasnov.test_1Üsk€ÜÐ:Ó;ˆÜÐ2Ó3ˆÜð;ó<ˆô
Ð=Ó>ˆä—‘˜œcŸl™l¨BÓ/×6Ñ6°sÓ;ˆØ ×ј §¡£Õ1rcó`—td«}td«}td«}td«}td«}td«}tj|tj|«j    |«}|j |«\}}    |j ||«|j ||    «y)NÚ 843ffcf5d2b72694d19ed01d01249412Údbcca32ebf9b804617c3aa9eÚ@00000000000000000000000000000000101112131415161718191a1b1c1d1e1fÚ 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4fÚ 6268c6fa2a80b2d137467f092f657ac04d89be2beaa623d61b5a868c8f03ff95d3dcee23ad2f1ab3a6c80eaf4b140eb05de3457f0fbc111a6b43d0763aa422a3013cf1dc37fe417d1fbfc449b75d4cc5Ú 3b629ccfbc1119b7319e1dce2cd6fd6d)rr
rr"rurZr&)
r'rür
r r)r*rfr(r{Údigest2s
          rÚtest_2zTestVectorsGueronKrasnov.test_2és©€ÜÐ:Ó;ˆÜÐ2Ó3ˆÜð;ó<ˆäð;ó<ˆô
ð;ó<ˆô
Ð=Ó>ˆä—‘˜œcŸl™l¨BÓ/×6Ñ6°sÓ;ˆØ×0Ñ0°Ó4‰ ˆˆWà ×ј˜SÔ!Ø ×ј Õ)rN)r¡r¢r£rÿr rr¤rrrr×s„ñ/ò 2ó*rrcó—eZdZd„Zy)ÚNISTTestVectorsGCMcóR—d|_tjj||«y)NT©Ú    use_clmulÚunittestÚTestCaseÚ__init__©r'Úas  rrzNISTTestVectorsGCM.__init__s€ØˆŒÜ×Ñ×"Ñ" 4¨Õ+rN©r¡r¢r£rr¤rrrró„ó,rrcó—eZdZd„Zy)ÚNISTTestVectorsGCM_no_clmulcóR—d|_tjj||«y)NFrrs  rrz$NISTTestVectorsGCM_no_clmul.__init__
s€ØˆŒÜ×Ñ×"Ñ" 4¨Õ+rNr r¤rrr#r#r!rr#)ÚCipherr
zgcmDecrypt128.rspz GCM decryptÚcountcó—t|«S©N©Úint©r:s rú<lambda>r,ó
€¬C°«F€rzgcmEncryptExtIV128.rspz GCM encryptcó—t|«Sr(r)r+s rr,r,r-rcó—|j|_tj|jtj
|j t|j«|j¬«}|j|j«d|jvr7|jt|j|j |j«y|j|j |j«}|j#||j$«y)N)r rWrÚFAIL)ÚdescÚ descriptionr
rrür"r
rArrrur Úothersr2r8rar*r&r))r'rr(r)s    rÚ single_testr4!s±€àŸ7™7ˆÔÜ—‘˜Ÿ™¤§¡°R·U±UÜ%(¨¯©£[¸D¿N¹NôLˆà ‰ b—f‘fÔØ R—Y‘YÑ Ø × Ñ œj¨&×*CÑ*CØ"$§%¡%¨¯©õ 1ð×*Ñ*¨2¯5©5°"·&±&Ó9ˆBØ × Ñ ˜R §¡Õ 'rztest_%dcó<—eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
y    )
ÚTestVectorsWycheproofc ól—tjj|«||_||_d|_y)NÚNone)rrrÚ_wycheproof_warningsÚ _extra_paramsÚ_id)r'Úwycheproof_warningsÚ extra_paramss   rrzTestVectorsWycheproof.__init__4s-€Ü×Ñ×"Ñ" 4Ô(Ø$7ˆÔ!Ø)ˆÔ؈rcó6—d„}tdddd|i¬«|_y)Ncó—|ddzS)NÚtagSizeér¤)Úgroups rÚ
filter_tagz/TestVectorsWycheproof.setUp.<locals>.filter_tag<s€Ø˜Ñ# qÑ(Ð (r)r%Ú
wycheproofzaes_gcm_test.jsonzWycheproof GCMÚtag_size)Ú    group_tag)rr)r'rCs  rÚsetUpzTestVectorsWycheproof.setUp:s'€ò    )ô/Ð/GØ/BØ/?Ø:DÀjÐ9QôSˆrcó—|jSr()r;r4s rÚshortDescriptionz&TestVectorsWycheproof.shortDescriptionDs €Øx‰xˆrcó˜—|jr>|jr1ddl}|jd|j›d|j
›d«yyy)NrzWycheproof warning: z (ú))Úwarningr9ÚwarningsÚwarnr;Úcomment)r'rrMs   rrNzTestVectorsWycheproof.warnGs4€Ø :Š:˜$×3Ò3Û Ø MŠM¸4¿8»8ÀRÇZÃZÐPÕ Qð4ˆ:rcóx—dt|j«z|_    tj|j
tj |jfd|ji|j¤Ž}|j|j«|j|j«\}}|j rJ|j#||j$«|j#||j&«|j)|«yy#t$r1}t|j«dk(rdt|«vrYd}~y|‚d}~wwxYw)NzWycheproof Encrypt GCM Test #rWrúNonce cannot be empty)ÚstrÚidr;r
rrür"r
rEr:r8rArur rZÚmsgÚvalidr&r*rrN)r'rr(Úer*rs      rÚ test_encryptz"TestVectorsWycheproof.test_encryptLsò€Ø2´S¸¿¹³ZÑ?ˆŒð    Ü—W‘W˜RŸV™V¤S§\¡\°2·5±5ñ.À"Ç+Á+ð.Ø×,Ñ,ñ.ˆFð     ‰ b—f‘fÔØ×+Ñ+¨B¯F©FÓ3‰ˆˆCØ 8Š8Ø × Ñ ˜R §¡Ô 'Ø × Ñ ˜S "§&¡&Ô )Ø I‰IbMð øôò    Ü2—5‘5‹z˜QŠÐ#:¼cÀ!»fÑ#DÜØˆGûð    úsŸAC?Ã?    D9Ä%D4Ä2D4Ä4D9cóŽ—dt|j«z|_    tj|j
tj |jfd|ji|j¤Ž}|j|j«    |j|j|j «}|j"sJ‚|j%||j&«|j)|«y#t$r1}t|j«dk(rdt|«vrYd}~y|‚d}~wwxYw#t$r|j"rJ‚YywxYw)NzWycheproof Decrypt GCM Test #rWrrQ)rRrSr;r
rrür"r
rEr:r8rArur rar*rrUr&rTrN)r'rr(rVr)s     rÚ test_decryptz"TestVectorsWycheproof.test_decrypt^s€Ø2´S¸¿¹³ZÑ?ˆŒð    Ü—W‘W˜RŸV™V¤S§\¡\°2·5±5ñ.À"Ç+Á+ð.Ø×,Ñ,ñ.ˆFð     ‰ b—f‘fÔð    Ø×*Ñ*¨2¯5©5°"·&±&Ó9ˆBð—8’8ˆO8Ø × Ñ ˜R §¡Ô (Ø I‰IbMøôò    Ü2—5‘5‹z˜QŠÐ#:¼cÀ!»fÑ#DÜØˆGûð    ûôò     Ø—x’xÐ <‘xð     ús0ŸAC- &D*Ã-    D'Ã6%D"Ä D"Ä"D'Ä*EÅEcó2—dt|j«z|_t|j«dk(st|j
«dkryt j|jt j|jfd|ji|j¤Ž}|j|j«t|j
dt|j
«dz
zdz«}|jt |j"||j$«y)Nz%Wycheproof Corrupt Decrypt GCM Test #rr7rWóó)rRrSr;rAr
r*r
rrür"rEr:rur r r2r8rar)r'rr(Ú
ct_corrupts    rÚtest_corrupt_decryptz*TestVectorsWycheproof.test_corrupt_decryptssÀØ:¼SÀÇÁ»ZÑGˆŒÜ ˆru‰u‹:˜Š?œc "§%¡%›j¨1šnØ Ü—‘˜Ÿ™¤§¡¨r¯u©uñ*¸b¿k¹kð*Ø×(Ñ(ñ*ˆà ‰ b—f‘fÔܘBŸE™E 7¬c°"·%±%«j¸1©nÑ#=ÀÑ#GÓHˆ
Ø ×Ñœ* f×&?Ñ&?ÀÈRÏVÉVÕTrcóŒ—|jD]5}|j|«|j|«|j|«Œ7yr()rrWrYr^)r'rs  rrþzTestVectorsWycheproof.runTest}s?€à—'‘'ò    *ˆBØ × Ñ ˜bÔ !Ø × Ñ ˜bÔ !Ø × %Ñ % bÕ )ñ    *rN) r¡r¢r£rrGrIrNrWrYr^rþr¤rrr6r62s-„òò SòòRò
ò$ò*Uó*rr6có—eZdZd„Zd„Zy)ÚTestVariableLengthc óP—tjj|«||_yr()rrrr:)r'r=s  rrzTestVariableLength.__init__‡s€Ü×Ñ×"Ñ" 4Ô(Ø)ˆÕrcóº—d}tj«}td«D]—}dj|«j    d«}t |«|z}t j|t jfd|i|j¤Ž}|j|«\}}|j|«|j|«Œ™|j|j«d«y)Ns0000000000000000é z{0:04d}zutf-8r Ú@7b7eb1ffbe67a2e53a912067c0ec8e62ebc7ce4d83490ea7426941349811bdf4) r rr9ÚformatÚencoder    r
r"r:rZrur&re)    r'rüÚhrr rr(r*rs             rrþzTestVariableLength.runTest‹sµ€ØˆÜ J‰J‹Lˆä˜C“jò    ˆFØ×$Ñ$ VÓ,×3Ñ3°GÓ<ˆEܘ“< &Ñ(ˆDÜ—W‘W˜S¤#§,¡,ÑR°eÐR¸t×?QÑ?QÑRˆFØ×/Ñ/°Ó5‰GˆBØ H‰HRŒLØ H‰HSMð     ð     ×јŸ™›Ð(jÕkrN)r¡r¢r£rrþr¤rrrara…s „ò*ó lrracó—ddlm}|jd«}g}|tt«z }|tt
«z }|t «gz }|t|«gz }|tt«z }|t«gz }|jd«r|tt«z }|j«rF|t|d¬«gz }|td¬«gz }|jd«r|tt«z }|Std«|S)Nr)Ú _cpu_featuresr<Ú
slow_testsF)rz%Skipping test of PCLMULDQD in AES GCM)Ú Crypto.UtilrjÚgetrrr¦rÉr6rrarÚ
have_clmulr#Úprint)Úconfigrjr<Útestss    rÚ    get_testsrršsÿ€Ý)à Ÿ*™*Ð%:Ó;Ðà €EØ    Œ_œXÓ &Ñ&€EØ    Œ_œ[Ó )Ñ)€EØ    Œk‹mˆ_Ñ€EØ    Ô#Ð$7Ó8Ð 9Ñ9€EØ    Œ_Ô5Ó 6Ñ6€EØ    Ô Ó"Ð #Ñ#€EØ ‡zz,ÔØ ”Ô!3Ó4Ñ4ˆà×ÑÔ!Ø Ô'Ð(;ÀuÔMÐNÑNˆØ Ô$¨uÔ5Ð6Ñ6ˆØ :‰:lÔ #Ø ”_Ô%@ÓAÑ AˆEð €Lô    Ð5Ô6à €LrÚ__main__có>—tjt««yr()rÚ    TestSuiterrr¤rrÚsuitervµs€Ü×Ñœ9›;Õ'rrv)Ú defaultTest)*Ú
__future__rrÚbinasciirÚCrypto.SelfTest.st_commonrÚCrypto.SelfTest.loaderrrÚCrypto.Util.py3compatrr    Ú Crypto.Cipherr
Ú Crypto.Hashr r r`r rrrr¦rÉrrr#Útest_vectors_nistÚ    enumerateÚidxrÚ
isinstancerRr4Úsetattrr6rarrr¡rvÚmainr¤rrú<module>r…s¨ðõ>&ãÝå5ßRç/Ýß(å%ò8ôQˆx× Ñ ôQôD
R)(×#Ñ#ôR)ôjK&(×#Ñ#ôK&ô\'*˜x×0Ñ0ô'*ôT,˜×*Ñ*ô,ô, (×"3Ñ"3ô,ñ&Ø)Ø+Ø%Ø Ñ"2Ð3ó    5ò;ð9;ð    ð Ñ&Ø)Ø0Ø%Ø Ñ"2Ð3ó    5ò;ð9;ñ    ;Ðñ Ð*Ó+òGG€Cˆñ"cÔØàó (ñ Ð      ¨C¡°Ô=Ù Ð '¨°S©¸+ÕFð)Gô.P*˜H×-Ñ-ôP*ôfl˜×*Ñ*ôlð*óð4 ˆzÒò(à€H‡MM˜gÖ&ðr