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
Ë
ž¬`îãó^—ddlZddlmZddlmZmZmZddlmZddl    m
Z
ddl m Z ddl mZddlmZd    „ZGd
„d ej$«ZGd „d ej$«Zd„ZGd„dej$«ZGd„dej$«Zifd„Zedk(rd„Zej6d¬«yy)éN)Ú    unhexlify)ÚbÚtobytesÚbchr)Ú long_to_bytes)Úload_test_vectors)Úlist_test_cases)ÚAES)ÚSHAKE128có^—tjt|«¬«j|«S)N)Údata)r ÚnewrÚread)ÚtagÚlengths  õrH:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\Crypto/SelfTest/Cipher/test_OCB.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„Zy)ÚOcbTestsÚkey_128éÚ    nonce_128é r é€cót—tj|jtj|j¬«}t dd«}|j |«\}}tj|jtj|j¬«}|j||«}|j||«y)N©ÚnonceÚ    plaintexti@)    r
rrÚMODE_OCBÚnonce_96rÚencrypt_and_digestÚdecrypt_and_verifyÚ assertEqual)ÚselfÚcipherÚptÚctÚmacÚpt2s      rÚtest_loopback_128zOcbTests.test_loopback_1285s€€Ü—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆÜ ˜K¨Ó 2ˆØ×+Ñ+¨BÓ/‰ˆˆCä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ×'Ñ'¨¨CÓ0ˆØ ×ј˜SÕ!rcóÒ—tj|jtj«tj|jtj|j«}|j |j «}tj|jtj|j¬«}|j||j |j ««y©Nr)r
rrr r!Úencryptr r$©r%r&r(s   rÚ
test_noncezOcbTests.test_nonce>sƒ€ä ‰— ‘ œ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!OcbTests.test_nonce_must_be_bytesHs,€Ø ×Ñœ)¤S§W¡W¨d¯l©l¼C¿L¹LØ /ð    õ    1rc    óÆ—|jttj|jtj
t d«¬«tdd«D]?}tj|jtj
|jd|¬«ŒA|jttj|jtj
|j¬«y)NÚrér)    r3Ú
ValueErrorr
rrr rÚranger )r%rs  rÚtest_nonce_lengthzOcbTests.test_nonce_lengthLsœ€à ×Ñœ*¤c§g¡g¨t¯|©|¼S¿\¹\Ü ! "£ð    ô    'ô˜A˜r“lò    JˆFÜ G‰GD—L‘L¤#§,¡,°d·i±iÀÀÐ6HÖ Ið    Jð     ×Ñœ*¤c§g¡g¨t¯|©|¼S¿\¹\Ø $§    ¡    ð    õ    +rcó—tj|jtj|j¬«}|j |j tj «tj|jtj«j}tj|jtj«j}|j t|«d«|j||«y©Nré)
r
rrr r!r$Ú
block_sizerÚlenÚassertNotEqual©r%r&Únonce1Únonce2s    rÚtest_block_size_128zOcbTests.test_block_size_128Xsœ€Ü—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ×ј×*Ñ*¬C¯N©NÔ;ô—‘˜Ÿ™¤s§|¡|Ó4×:Ñ:ˆÜ—‘˜Ÿ™¤s§|¡|Ó4×:Ñ:ˆØ ×Ñœ˜V› bÔ)Ø ×јF FÕ+rcóþ—tj|jtj|j¬«}|j |j |j«tj|jtj«j }tj|jtj«j }|j t|«d«|j||«yr>)    r
rrr r!r$rrArBrCs    rÚtest_nonce_attributezOcbTests.test_nonce_attributebsš€Ü—‘˜Ÿ™¤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)r3r4r
rrr r!r5s rÚtest_unknown_parametersz OcbTests.test_unknown_parametersls€€Ø ×Ñœ)¤S§W¡W¨d¯l©l¼C¿L¹LØŸ-™-¨ô    ,à ×Ñœ)¤S§W¡W¨d¯l©l¼C¿L¹LØ $§ ¡ °qð    ô    :ô
     ‰— ‘ œcŸl™l°$·-±-Øö    !rcóò—dD]r}tj|jtj|j¬«}t ||«t d««}|j|t d««Œty)N©r.Údecryptrr8)r
rrr r!Úgetattrrr$)r%Úfuncr&Úresults    rÚtest_null_encryption_decryptionz(OcbTests.test_null_encryption_decryptionwsZ€Ø(ò    ,ˆDÜ—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFØ*”W˜V TÓ*¬1¨R«5Ó1ˆFØ × Ñ ˜V¤Q r£UÕ +ñ    ,rcóü—tj|jtj|j¬«}|j t d««|jt|jt d««tj|jtj|j¬«}|jt d««|jt|j
t d««y)NrÚxyz)
r
rrr r!r.rr3r4rP©r%r&s  rÚtest_either_encrypt_or_decryptz'OcbTests.test_either_encrypt_or_decrypt}s’€Ü—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ‰”q˜“xÔ Ø ×Ñœ) V§^¡^´Q°u³XÔ>ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ‰”q˜“xÔ Ø ×Ñœ) V§^¡^´Q°u³XÕ>rcóp—tj|jtj|j¬«}|j t |jd«tj|jtj|j¬«}|j t |jd«y)Nrztest1234567890-*)    r
rrr r!r3r4r.rPrWs  rÚtest_data_must_be_bytesz OcbTests.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)NrJ©rÚmac_lenéérr) r3r:r
rrr r!r;r"r r$rA)r%r]r&Ú_r)s     rÚ test_mac_lenzOcbTests.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_crr9) ÚCrypto.Util.strxorrcr
rrr r!r"r r3r:r#)r%rcr&r(r)Ú invalid_macs      rÚtest_invalid_maczOcbTests.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_maczOcbTests.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 |«Œtd«}    |||«D]}|    |j|«z }    Œ|    |j«z }    |j||    «|j|«ŒÀdD]Í}tj|jtj|j
¬«}|||«D]}|j |«Œtd«}
|||«D]}|
|j|«z }
Œ|
|j«z }
|j||
«|j|j«|«ŒÏy)Nzauthenticated dataérrcó`—tdt|«|«Dcgc]
}||||z‘Œ c}Scc}w)Nr)r;rA)r Ú chunk_lengthÚis   rÚbreak_upz.OcbTests.test_message_chunks.<locals>.break_up¾s9€Ü49¸!¼SÀ»YØ ó5"ö#¨qD˜˜1˜\™>Ò*ò#ð #ùò#s™+)
r9éérJé
é ré(éPrr8)rr
rrr r!Úupdater"rrPr$Úverifyr.ri) r%Ú    auth_datarr&Ú
ciphertextÚref_macrrrpÚchunkr*Úct2s            rÚtest_message_chunkszOcbTests.test_message_chunks³sÍ€ô#Ð#7¸Ó=ˆ    Ü" ;°Ó4ˆ    ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ‰ iÔ Ø$×7Ñ7¸    ÓBш
Gò    #ð
@ò     #ˆLä—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFá! )¨\Ó:ò %Ø— ‘ ˜eÕ$ð %äB“%ˆCÙ! *¨lÓ;ò -Øv—~‘~ eÓ,Ñ,‘ð -à 6—>‘>Ó#Ñ #ˆCØ × Ñ ˜Y¨Ô ,Ø M‰M˜'Õ "ð     #ð@ò     7ˆLä—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFá! )¨\Ó:ò %Ø— ‘ ˜eÕ$ð %äB“%ˆCÙ! )¨\Ó:ò -Øv—~‘~ eÓ,Ñ,‘ð -à 6—>‘>Ó#Ñ #ˆCØ × Ñ ˜Z¨Ô -Ø × Ñ ˜VŸ]™]›_¨gÕ 6ñ     7rcóè—t|j«}t|j«}t|j«}t|j«}t    j
|jtj |j¬«}|j|j«|j|j«|j«z}|j«}t    j
|tj |¬«}d|ddd|dd|j|«d|dd|j|«|j«z}    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ÿÿÿrt) Ú    bytearrayrr!r r
rr ryr.rir$rr#) r%Úkey_baÚnonce_baÚ    header_baÚdata_baÚcipher1r(rÚcipher2Úct_testÚtag_testÚcipher4Úpt_tests              rÚtest_bytearrayzOcbTests.test_bytearrayÞsô€ô˜4Ÿ<™<Ó(ˆÜ˜TŸ]™]Ó+ˆÜ˜dŸi™iÓ(ˆ    Ü˜DŸI™IÓ&ˆä—'‘'˜$Ÿ,™,ÜŸ,™,Ø $§ ¡ ô/ˆð    ‰t—y‘yÔ!Ø _‰_˜TŸY™YÓ '¨'¯/©/Ó*;Ñ ;ˆØn‰nÓˆä—'‘'˜&ÜŸ,™,Ø (ô*ˆð%ˆˆrˆ
Ø&ˆ!ˆ ؏‰yÔ!Ø'ˆ    "1ˆ Ø—/‘/ 'Ó*¨W¯_©_Ó->Ñ>ˆØ%ˆˆ Ø—>‘>Ó#ˆà ×ј˜WÔ%Ø ×ј˜hÔ'Ø ×јŸ™¨¯ © Ô6ô˜4Ÿ<™<Ó(ˆÜ˜TŸ]™]Ó+ˆÜ˜dŸi™iÓ(ˆ    Ø ä—'‘'˜&ÜŸ,™,Ø (ô*ˆð%ˆˆrˆ
Ø&ˆ!ˆ ؏‰yÔ!Ø'ˆ    "1ˆ Ø×,Ñ,¬Y°wÓ-?ÄÈ8ÓATÓUˆà ×јŸ™ GÕ,rcóf—tt|j««}tt|j««}tt|j««}tt|j««}t j |jt
j|j¬«}|j|j«|j|j«|j«z}|j«}t j |t
j|¬«}d|ddd|dd|j|«d|dd|j|«|j«z}    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‚)Ú
memoryviewrƒrr!r r
rr ryr.rir$rr#) r%Úkey_mvÚnonce_mvÚ    header_mvÚdata_mvrˆr(rr‰rŠr‹rŒrs              rÚtest_memoryviewzOcbTests.test_memoryview s€ôœ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¯_©_Ó->Ñ>ˆØ%ˆˆ Ø—>‘>Ó#ˆà ×ј˜WÔ%Ø ×ј˜hÔ'Ø ×јŸ™¨¯ © Ô6ôœI d§l¡lÓ3Ó4ˆÜœi¨¯ © Ó6Ó7ˆÜœy¨¯©Ó3Ó4ˆ    Ø ä—'‘'˜&ÜŸ,™,Ø (ô*ˆð%ˆˆrˆ
Ø&ˆ!ˆ ؏‰yÔ!Ø'ˆ    "1ˆ Ø×,Ñ,¬Z¸Ó-@Ä*ÈXÓBVÓWˆà ×јŸ™ GÕ,rN)Ú__name__Ú
__module__Ú __qualname__rrr!r r+r0r6r<rFrHrMrTrXrZrarfrlr€rŽr•©rrrr/sy„á˜Y¨Ó+€GÙ˜k¨2Ó.€HÙ ˜& #Ó &€Dò"ò8ò1ò
+ò,ò,ò    !ò,ò ?òJò'ò&    'ò"ò)7òV--ó^--rrcó–—eZdZedd«Zedd«Zedd«Zd„Zd„Zd    „Z    d
„Z
d „Z d „Z d „Z d„Zd„Zd„Zd„Zd„Zd„Zd„Zy)Ú OcbFSMTestsrrrrr rcóÌ—tj|jtj|j¬«}|j |j «}||j «z }|j«}tj|jtj|j¬«}|j|«|j«|j|«yr-)
r
rrr r!r.r rirPrz)r%r&r(r)s    rÚ-test_valid_init_encrypt_decrypt_digest_verifyz9OcbFSMTests.test_valid_init_encrypt_decrypt_digest_verifyCs˜€ô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ^‰^˜DŸI™IÓ &ˆØ
ˆfn‰nÓш؏m‰m‹oˆô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà‰rÔØ‰Ô؏ ‰ cÕrcóÄ—tj|jtj|j¬«}|j |j «}|jt|j«tj|jtj|j¬«}|j|«|jt|j«yr-) r
rrr r!r.r r3r4rirPrzr/s   rÚ/test_invalid_init_encrypt_decrypt_digest_verifyz;OcbFSMTests.test_invalid_init_encrypt_decrypt_digest_verifySsŽ€ô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ^‰^˜DŸI™IÓ &ˆØ ×Ñœ) V§]¡]Ô3ô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà‰rÔØ ×Ñœ) V§]¡]Õ3rcóš—tj|jtj|j¬«}|j |j «|j«}tj|jtj|j¬«}|j |j «|j|«yr-)    r
rrr r!ryr rirz©r%r&r)s   rÚ$test_valid_init_update_digest_verifyz0OcbFSMTests.test_valid_init_update_digest_verifyas€ô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ‰ d—i‘iԠ؏m‰m‹oˆô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ‰ d—i‘iԠ؏ ‰ cÕrcóP—tj|jtj|j¬«}|j |j «|j|j «}||j«z }|j«}tj|jtj|j¬«}|j |j «|j|«|j«|j|«tj|jtj|j¬«}|j |j «|j|j dd«}|j|j dd«\}}tj|jtj|j¬«}|j |j «|j|«|j||«y)Nrrs) r
rrr r!ryr r.rirPrzr"r#)r%r&r(r)Úct1rs      rÚtest_valid_full_pathz OcbFSMTests.test_valid_full_pathosp€ô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ‰ d—i‘iÔ Ø ^‰^˜DŸI™IÓ &ˆØ
ˆfn‰nÓш؏m‰m‹oˆô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ‰ d—i‘iԠ؏‰rÔØ‰Ô؏ ‰ cÔô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ‰ d—i‘iԠ؏n‰n˜TŸY™Y r¨˜]Ó+ˆØ×,Ñ,¨T¯Y©Y°q°r¨]Ó;‰ˆˆSô—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ‰ d—i‘iԠ؏‰sÔØ×!Ñ! # sÕ+rcóZ—tj|jtj|j¬«}|j |j «|j|j «|j«|jt|j|j «yr-)
r
rrr r!ryr r.r3r4rWs  rÚ test_invalid_encrypt_after_finalz,OcbFSMTests.test_invalid_encrypt_after_finalóg€Ü—‘˜Ÿ™¤s§|¡|Ø#Ÿ}™}ô.ˆà ‰ d—i‘iԠ؏‰t—y‘yÔ!؏‰ÔØ ×Ñœ) V§^¡^°T·Y±YÕ?rcóZ—tj|jtj|j¬«}|j |j «|j|j «|j«|jt|j|j «yr-)
r
rrr r!ryr rPr3r4rWs  rÚ test_invalid_decrypt_after_finalz,OcbFSMTests.test_invalid_decrypt_after_final—r¨rcó˜—tj|jtj|j¬«}|j «yr-)r
rrr r!rirWs  rÚtest_valid_init_digestz"OcbFSMTests.test_valid_init_digestŸs)€ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ‰ rcó.—tj|jtj|j¬«}|j «}tj|jtj|j¬«}|j |«yr-)r
rrr r!rirzr¡s   rÚtest_valid_init_verifyz"OcbFSMTests.test_valid_init_verify¤sU€ä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØm‰m‹oˆä—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ‰ cÕrcóÊ—dD]Þ}dtd«|j|jtd«zfD]ª}tj|jtj
|j ¬«}||j|«t||«}||j«||j«||j«||j«|«Œ¬Œày)NrOÚ333Ú3r)    rr r
rrr r!ryrQ)r%Ú method_namer{r&Úmethods     rÚ&test_valid_multiple_encrypt_or_decryptz2OcbFSMTests.test_valid_multiple_encrypt_or_decrypt¬sµ€Ø/ò     ˆKØ"¤A e£H¨d¯i©iØ"Ÿi™i¬!¨C«&Ñ0ð2ò     äŸ™ §¡¬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éé) r
rrr r!ryr rir;r$rz)r%r&Ú    first_macÚxs    rÚ$test_valid_multiple_digest_or_verifyz0OcbFSMTests.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!ryr r"r#r$)r%r&r(r)r's     rÚ0test_valid_encrypt_and_digest_decrypt_and_verifyz<OcbFSMTests.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)rO)rPr.)TFr)
r
rrr r!ryr rQr3r4)r%Ú method1_nameÚ method2_nameÚassoc_data_presentr&s     rÚ#test_invalid_mixing_encrypt_decryptz/OcbFSMTests.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 «|j«|jtt||«|j «tj|jtj|j¬«}|j|j «Œùy)N)r.ryr) r
rrr r!r.r rir3r4rQr")r%r²r&s   rÚ+test_invalid_encrypt_or_update_after_digestz7OcbFSMTests.test_invalid_encrypt_or_update_after_digestâs¤€Ø.ò        1ˆKÜ—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFØ N‰N˜4Ÿ9™9Ô %Ø N‰NÔ Ø 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 «z }|j«}dD]}tj|jtj|j¬«}|j|«|j«|j|«|jtt||«|j «tj|jtj|j¬«}|j||«|jtt||«|j «Œy)Nr)rPry)r
rrr r!r.r rirPrzr3r4rQr#)r%r&r(r)r²s     rÚ+test_invalid_decrypt_or_update_after_verifyz7OcbFSMTests.test_invalid_decrypt_or_update_after_verifyîs €Ü—‘˜Ÿ™¤s§|¡|¸4¿=¹=ÔIˆØ ^‰^˜DŸI™IÓ &ˆØ
ˆfn‰nÓш؏m‰m‹oˆà.ó     )ˆKÜ—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFØ N‰N˜2Ô Ø N‰NÔ Ø M‰M˜#Ô Ø × Ñ œi¬°¸Ó)EØ"Ÿi™iô )ô—W‘W˜TŸ\™\¬3¯<©<¸t¿}¹}ÔMˆFØ × %Ñ % b¨#Ô .Ø × Ñ œi¬°¸Ó)EØ"Ÿi™iö )ñ     )rN)r–r—r˜rrr!r rrŸr¢r¥r§rªr¬r®r´rºr¼rÁrÃrÅr™rrr›r›=so„á˜Y¨Ó+€GÙ˜k¨2Ó.€HÙ ˜& #Ó &€Dòò  4ò ò,ò@@ò@òò
ò ò %ò
(ò -ò
1ó)rr›có:—td«|dzdz
zt|«z}d}td«D]€}td«|z}td|zdz|dz«}tj|tj
||dz¬«}|j |«||j|«|j«z|j«zz }td|zdz|dz«}tj|tj
||dz¬«}||j|«|j«z|j«zz }td|zdz|dz«}tj|tj
||dz¬«}|j |«||j«|j«zz }Œƒtd    |dz«}tj|tj
||dz¬«}|j |«|j«|j«zS)
z.Implement the algorithm at page 18 of RFC 7253rr_r9rrrtr\rsi)    rr;rr
rr ryr.ri)    ÚkeylenÚtaglenÚnoncelenÚkeyÚCrqÚSÚNr&s             rÚ algo_rfc7253rÎs¾€ô ˆq‹'V˜q‘[ 1‘_Ñ
%¬¨V« Ñ
4€CØ €Aä 3‹Zó0ˆÜ ‹Ga‰Kˆä ˜!˜a™% !™) X°¡]Ó 3ˆÜ—‘˜œcŸl™l°!¸VÀq¹[ÔIˆØ ‰ aÔØ    ˆV^‰^˜AÓ  §¡Ó!1Ñ 1°F·M±M³OÑ CÑCˆä ˜!˜a™% !™) X°¡]Ó 3ˆÜ—‘˜œcŸl™l°!¸VÀq¹[ÔIˆØ    ˆV^‰^˜AÓ  §¡Ó!1Ñ 1°F·M±M³OÑ CÑCˆä ˜!˜a™% !™) X°¡]Ó 3ˆÜ—‘˜œcŸl™l°!¸VÀq¹[ÔIˆØ ‰ aÔØ    ˆV^‰^Ó  § ¡ £Ñ /Ñ/Šð0ô"    c˜8 q™=Ó)€AÜ W‰WSœ#Ÿ,™,¨a¸À1¹Ô E€FØ
‡MM!ÔØ >‰>Ó ˜fŸm™m›oÑ -Ð-rcó.—eZdZdZdZdZdZd„Zd„Zd„Z    y)    ÚOcbRfc7253TestÚ 000102030405060708090A0B0C0D0E0F))ÚBBAA99887766554433221100r8r8Ú 785407BFFFC8AD9EDCC5520AC9111EE6)ÚBBAA99887766554433221101Ú0001020304050607rÕÚ06820B3657B6F615A5725BDA0D3B4EB3A257C9AF1F8F03009)ÚBBAA99887766554433221102rÕr8Ú 81017F8203F081277152FADE694A0A00)ÚBBAA99887766554433221103r8rÕÚ045DD69F8F5AAE72414054CD1F35D82760B2CD00D2F99BFA9)ÚBBAA99887766554433221104rÑrÑÚ@571D535B60B277188BE5147170A9A22C3AD7A4FF3835B8C5701C1CCEC8FC3358)ÚBBAA99887766554433221105rÑr8Ú 8CF761B6902EF764462AD86498CA6B97)ÚBBAA99887766554433221106r8rÑÚ@5CE88EC2E0692706A915C00AEB8B2396F40E1C743F52436BDF06D8FA1ECA343D)ÚBBAA99887766554433221107Ú0000102030405060708090A0B0C0D0E0F1011121314151617râÚP1CA2207308C87C010756104D8840CE1952F09673A448A122C92C62241051F57356D7F3C90BB0E07F)ÚBBAA99887766554433221108râr8Ú 6DC225A071FC1B9F7C69F93B0F1E10DE)ÚBBAA99887766554433221109r8râÚP221BD0DE7FA6FE993ECCD769460A0AF2D6CDED0C395B1C3CE725F32494B9F914D85C0B1EB38357FF)ÚBBAA9988776655443322110AÚ@000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1FréÚ`BD6F6C496201C69296C11EFD138A467ABD3C707924B964DEAFFC40319AF5A48540FBBA186C5553C68AD9F592A79A4240)ÚBBAA9988776655443322110Brér8Ú FE80690BEE8A485D11F32965BC9D2A32)ÚBBAA9988776655443322110Cr8réÚ`2942BFC773BDA23CABC6ACFD9BFD5835BD300F0973792EF46040C53F1432BCDFB5E1DDE3BC18A5F840B52E653444D5DF)ÚBBAA9988776655443322110DÚP000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627rðÚpD5CA91748410C1751FF8A2F618255B68A0A12E093FF454606E59F9C1D0DDC54B65E8628E568BAD7AED07BA06A4A69483A7035490C5769E60)ÚBBAA9988776655443322110Erðr8Ú C5CD9D1850C141E358649994EE701B68)ÚBBAA9988776655443322110Fr8rðÚp4412923493C57D5DE0D700F753CCE0D1D2D95060122E9F15A5DDBFC5787E50B5CC55EE507BCB084E479AD363AC366B95A98CA5F3000B1479)Ú 0F0E0D0C0B0A09080706050403020100rïrðrðÚh1792A4E31E0755FB03E31B22116E6C2DDF9EFD6E33D536F1A0124B0A55BAE884ED93481529C76B6AD0C515F4D1CDD4FDAC4F02AA)    )rrÚ 67E944D23256C5E0B6C61FA22FDF1EA2)éÀrÚ F673F2C3E7174AAE7BAE986CA9F29E17)érÚ D90EB8E9C977C88B79DD793D7FFA161C)ré`Ú77A3D8E73589158D25D01209)rùrýÚ05D56EAD2752C86BE6932C5E)rûrýÚ5458359AC23B0CBA9E6330DD)ré@Ú192C9B7BD90BA06A)rùrÚ0066BC6E0EF34E24)rûrÚ7D4EA5D445501CBEc    óà—tt|j««}|jD];}|Dcgc]}tt|««‘Œc}\}}}}|dd|dd}}t    j
|tj |¬«}    |    j|«|    j|«|    j«z}
|j||
«|j||    j««t    j
|tj |¬«}    |    j|«|    j|«|    j«z} |j|| «|    j|«Œ>ycc}w)Niðÿÿÿr) rrÚtv1_keyÚtv1r
rr ryr.r$rirPrz) r%rÊÚtvr¹rÚaadr'r(Úmac_tagr&rr*s             rÚtest1zOcbRfc7253Test.test1¾s€Üœ˜$Ÿ,™,›Ó(ˆØ—(‘(ó    #ˆBØ;=Ö!>°a¤)¬A¨a«D¥/Ò!>Ñ ˆE3˜˜BؘT˜c˜( B s t HˆBä—W‘W˜S¤#§,¡,°eÔ<ˆFØ M‰M˜#Ô Ø—.‘. Ó$ v§~¡~Ó'7Ñ7ˆCØ × Ñ ˜R Ô %Ø × Ñ ˜W f§m¡m£oÔ 6ä—W‘W˜S¤#§,¡,°eÔ<ˆFØ M‰M˜#Ô Ø—.‘. Ó$ v§~¡~Ó'7Ñ7ˆCØ × Ñ ˜R Ô %Ø M‰M˜'Ö "ñ    #ùÚ!>s³E+có˜—|jDcgc]}tt|««‘Œc}\}}}}}|dd|dd}}tj|tj
|d¬«}|j |«|j|«|j«z}    |j||    «|j||j««tj|tj
|d¬«}|j |«|j|«|j«z}
|j||
«|j|«ycc}w)Niôÿÿÿrr\) Útv2rrr
rr ryr.r$rirPrz) r%r¹rÊrr    r'r(r
r&rr*s            rÚtest2zOcbRfc7253Test.test2Ðs€à<@¿H¹HÖ"E°q¤9¬Q¨q«T¥?Ò"EшˆUC˜˜Rؘ˜#h  3 4 ˆGˆä—‘˜œcŸl™l°%ÀÔDˆØ ‰ cÔØn‰n˜RÓ  6§>¡>Ó#3Ñ3ˆØ ×ј˜SÔ!Ø ×ј &§-¡-£/Ô2ä—‘˜œcŸl™l°%ÀÔDˆØ ‰ cÔØn‰n˜RÓ  6§>¡>Ó#3Ñ3ˆØ ×ј˜SÔ!؏ ‰ gÕùò#FsEcó—|jD]7\}}}t||d«}|jtt    |««|«Œ9y)Nrý)Útv3rÎr$rr)r%rÇrÈrSÚresult2s     rÚtest3zOcbRfc7253Test.test3ásC€Ø&*§h¡hò    <Ñ "ˆFF˜FÜ" 6¨6°2Ó6ˆGØ × Ñ œY¤q¨£yÓ1°7Õ ;ñ    <rN)
r–r—r˜rrr rr rrr™rrrÐrÐs/„ð1€Gðs
€Cðv
 
€Cð 
€Cò#ò$ó"<rrÐcó"—eZdZdZd„Zd„Zd„Zy)Ú
OcbDkgTestz9Test vectors from https://gitlab.com/dkg/ocb-test-vectorsc    ó:—g}dD]V}dD]O}tdd||fzd||fzi«}|€Œ$|dj}|ddD]}||_|j|«ŒŒQŒX|D]¹}|j|j|j|j
|j f\}}}    }
} t| «t|
«z
} tj|tj|| ¬«} | j|    «| j|
«\}}|j| ||z«Œ»y)    N)r9rs)éhépéx)ÚCipherr
ztest-vector-%d-nonce%d.txtzDKG tests, %d, %d bitsrr9r\)rÚkÚappendÚnÚaÚpÚcrAr
rr ryr"r$)r%ÚtvsÚfiÚnbÚtv_filerÊrrrrrrr]r&Úc_outÚtag_outs                rÚtest_1_2zOcbDkgTest.test_1_2ês(€ØˆØò     #ˆBØ%ò
#Ü+Ð,=Ø,HÈBÐPRÈ8Ñ,SØ,DÈÈBÀxÑ,OØ,.ó0ð?ÙØ˜a‘j—l‘lØ! ! "˜+ò#BؐB”DØ—J‘J˜r•Nñ#ñ
#ð     #ðò    1ˆBØŸD™D "§$¡$¨¯©¨b¯d©d°B·D±DÐ8‰MˆAˆq!Q˜Ü˜!“fœs 1›v‘oˆGÜ—W‘W˜Q¤§ ¡ °A¸wÔGˆFØ M‰M˜!Ô Ø#×6Ñ6°qÓ9‰NˆE7Ø × Ñ ˜Q ¨¡Õ 0ñ     1rcób‡—ˆfd„}|dddd«|dddd«|dddd«|dd    dd
«|dd    dd «|dd    dd «|dd dd«|dd dd«|dd dd«|dddd«|dddd«|dddd«|dd    dd«|dd    dd«|dd    dd«|dd dd«|dd dd«|dd dd«|dddd«|dddd«|dddd«|dd    dd«|dd    dd «|dd    dd!«|dd dd"«|dd dd#«|dd dd$«y)%NcóV•—t|||«}‰j|t|««y©N)rÎr$r)rÇrÈrÉÚexprSr%s     €rÚcheckz OcbDkgTest.test_3.<locals>.checks%ø€Ü! &¨&°(Ó;ˆFØ × Ñ ˜V¤Y¨s£^Õ 4rrrÚ C47F5F0341E15326D4D1C46F47F05062rùÚ 95B9167A38EB80495DFC561A8486E109rûÚ AFE1CDDB97028FD92F8FB3C8CFBA7D83rýÚF471B4983BA80946DF217A54Ú5AE828BC51C24D85FA5CC7B2Ú8C8335982E2B734616CAD14CrÚB553F74B85FD1E5BÚ3B49D20E513531F9ÚED6DA5B1216BF8BBrÚ CA8AFCA031BAC3F480A583BD6C50A547Ú D170C1DF356308079DA9A3F619147148Ú 57F94381F2F9231EFB04AECD323757C3Ú3A618B2531ED39F260C750DCÚ9071EB89FEDBADDA88FD286EÚFDF0EFB97F21A39AC4BAB5ACÚFAB2FF3A8DD82A13ÚAC01D912BD0737D3Ú9D1FD0B500EA4ECFrÚ 9E043A7140A25FB91F43BCC9DD7E0F46Ú 680000E53908323A7F396B955B8EC641Ú 8304B97FAACDA56E676602E1878A7E6FÚ81F978AC9867E825D339847DÚEFCF2D60B24926ADA48CF5B1Ú84961DC56E917B165E58C174Ú227AEE6C9D905A61Ú541DE691B9E1A2F9ÚB0E761381C7129FCr™)r%r+s` rÚtest_3zOcbDkgTest.test_3s£ø€ô    5ñ
    ˆc3˜Ð?Ô@Ù ˆc3˜Ð?Ô@Ù ˆc3˜Ð?Ô@Ù ˆc2sÐ6Ô7Ù ˆc2sÐ6Ô7Ù ˆc2sÐ6Ô7Ù ˆc2sÐ.Ô/Ù ˆc2sÐ.Ô/Ù ˆc2sÐ.Ô/ñ    ˆc3˜Ð?Ô@Ù ˆc3˜Ð?Ô@Ù ˆc3˜Ð?Ô@Ù ˆc2sÐ6Ô7Ù ˆc2sÐ6Ô7Ù ˆc2sÐ6Ô7Ù ˆc2sÐ.Ô/Ù ˆc2sÐ.Ô/Ù ˆc2sÐ.Ô/ñ    ˆc3˜Ð?Ô@Ù ˆc3˜Ð?Ô@Ù ˆc3˜Ð?Ô@Ù ˆc2sÐ6Ô7Ù ˆc2sÐ6Ô7Ù ˆc2sÐ6Ô7Ù ˆc2sÐ.Ô/Ù ˆc2sÐ.Ô/Ù ˆc2sÐ.Õ/rcó~—td«}td«}td«}td«}td«}t|«t|«z
}td«}tj|tj|dd|¬«}|j |«|j |«\}    }
|j||    |
z«y)NÚEEDDCCBBAA9988776655443322110DrörðÚh07E903BFC49552411ABC865F5ECE60F6FAD1F5A9F14D3070FA2F1308A563207FFE14C1EEA44B22059C7484319D8A2C53C236A7B3ÚhBA015C4E5AE54D76C890AE81BD40DC5703EDC30E8AC2A58BC5D8FA4D61C5BAE6C39BEAC435B2FD56A2A5085C1B135D770C8264B7éÿÿÿÿr\)rrAr
rr ryr"r$) r%rrÊÚAÚPrËr]Ú buggy_resultr&ÚC_out2Útag_out2s            rÚ test_2_bugfixzOcbDkgTest.test_2_bugfix(s¿€ÜÐ:Ó;ˆÜÐ:Ó;ˆÜ ð9ó :ˆä ð9ó :ˆä ð!ó "ˆôa“&œ3˜q›6‘/ˆô
!ð",ó-ˆ ô—‘˜œcŸl™l°%¸¸°*ÀgÔNˆØ ‰ aÔØ!×4Ñ4°QÓ7шØ ×ј v°Ñ'8Õ9rN)r–r—r˜Ú__doc__r&rGrRr™rrrrçs„ÙCò1ò.%0óN:rrcóš—g}|tt«z }|tt«z }|tt«z }|tt«z }|Sr))r    rr›rÐr)ÚconfigÚtestss  rÚ    get_testsrWAsH€Ø €EØ    Œ_œXÓ &Ñ&€EØ    Œ_œ[Ó )Ñ)€EØ    Œ_œ^Ó ,Ñ,€EØ    Œ_œZÓ (Ñ(€EØ €LrÚ__main__có<—tjt««Sr))ÚunittestÚ    TestSuiterWr™rrÚsuiter\Ks€Ü×!Ñ!¤)£+Ó.Ð.rr\)Ú defaultTest)rZÚbinasciirÚCrypto.Util.py3compatrrrÚCrypto.Util.numberrÚCrypto.SelfTest.loaderrÚCrypto.SelfTest.st_commonr    Ú Crypto.Cipherr
Ú Crypto.Hashr rÚTestCaserr›rÎrÐrrWr–r\Úmainr™rrú<module>rgs¬ðó>Ýç2Ñ2Ý,Ý4Ý5åÝ ò8ôK-ˆx× Ñ ôK-ô\B)(×#Ñ#ôB)òJ.ô:E<X×&Ñ&ôE<ôPW:×"Ñ"ôW:ðtóð ˆzÒò/à€H‡MM˜gÖ&ðr