ƺhlddlZddlZddlmZddlmZmZddlmZddl m Z m Z ddl m Z mZmZmZmZmZmZddlmZmZddlmZmZmZmZmZmZmZmZdd lm Z d Z!Gd d e"Z#Gd dej$Z%Gddej$Z&Gddej$Z'Gddej$Z(Gddej$Z)Gddej$Z*Gddej$Z+dZ,Gddej$Z-dZ.e.e-ifdZ/e0d krd!Z1ej2d"#dSdS)$N) unhexlify)bbchr)list_test_cases)load_test_vectorsload_test_vectors_wycheproof)SHA1HMACSHA256MD5SHA224SHA384SHA512)AESDES3)PBKDF1PBKDF2_S2VHKDFscryptbcrypt bcrypt_checkSP800_108_Counter)_bcrypt_decodec|dS|dddd}tt|S)N  )replacerr)tt2s /builddir/build/BUILD/imunify360-venv-2.5.2/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/SelfTest/Protocol/test_KDF.pyt2br#)sCyt 3   # #D" - -B QrUU  ceZdZdS) TestVectorN)__name__ __module__ __qualname__r$r"r&r&0sDr$r&ceZdZdZdZdS) PBKDF1_Tests))password78578E5A5D63CB06i DC19847E05C64D2FAF10EBFB4A3D2A20c|jd}t|dt|d|d|dt}||t|ddS)Nr) _testDatarr#r assertEqual)selfvress r"test1zPBKDF1_Tests.test1Bs_ N1 QqT3qt99adAaD$77 c!A$ii(((((r$N)r'r(r)r6r;r*r$r"r,r,4s*I )))))r$r,c eZdZddddedfdddded fdddd ed fdddd ed fdddd edfdddd edfddddedfddddedffZdZdZdZd Z d!S)" PBKDF2_Testsr-r.i0BFDE6BE94DF7E11DD409BCE20A0255EC327CB936FFE9364373616c74r2(0c60c80f961f0e71f3a9b524af6012062fe037a6r3(ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957i(4b007901b765489abead49d926f721d065a429c1passwordPASSWORDpasswordH73616c7453414c5473616c7453414c5473616c7453414c5473616c7453414c5473616c7423d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038z password 7361006c74r/ 56fa6aa75548099dcc37d7f03425e0c3passwd@ڀ55ac046e56e3089fec1691c22544b605f94185216dde0465e68b9d57c20dacbc49ca9cccf179b645991664b39d77ef317c71b845b1e30bd509112041d3a19783Password4e61436ci8ڀ4ddcd8f60b98be21830cee5ef22701f9641a4418d04c0414aeff08876b34ab56a1d425a1225833549adb841b51c9b3176a272bdebba1d078478f62b397f33c8dcd}d}tt|jD]}|j|}|d}t|d}|d}|d}|d} t|d} | turRt ||||} || | t |||||} || | t |||||} || | dS) Nc\tj||tSNr newr digestpss r"prf_SHA1z$PBKDF2_Tests.test1..prf_SHA1d"8Aa%%,,.. .r$c\tj||tSrSr rUr rVrWs r" prf_SHA256z&PBKDF2_Tests.test1..prf_SHA256gs"8Aa''..00 0r$rr2r3r4r5)rangelenr6r#r rr7) r8rZr^ir9r-saltout_lenitershash_modexpectedr:s r"r;zPBKDF2_Tests.test1as+ / / / 1 1 1s4>**++ 0 0Aq!AtHqt99DdGaDEtH1Q4yyH4XtWe<<  h///XtWeXFF  h////XtWeZHH  h////# 0 0r$c d}|tttdtddd|tdS)Nc\tj||tSrSrTrWs r"rZz$PBKDF2_Tests.test2..prf_SHA1r[r$xxxyyyr/d)prfhmac_hash_module) assertRaises ValueErrorrrr )r8rZs r"test2zPBKDF2_Tests.test2}sW / / / *fahh%"c&  ? ? ? ? ?r$c td}td}ttttt t fD]Ct||ddfd}t||dd}|||DdS)Nrjrkr/rlcTtj||SrSr rUrV)rXrYhashmods r"z$PBKDF2_Tests.test3..s!$(1Qw*?*?*F*F*H*Hr$)rm)rn) rr r r r rrrr7)r8r-rcpr1pr2rus @r"test3zPBKDF2_Tests.test3sU88xxT6666B ' 'G4SHHHHJJJC4S7KKKC   S# & & & &  ' 'r$ctdtddd}ttdtddd}|||ttdddd}ttdtddd}|||dS)Nrjrkr/ )rrr7)r8k1k2s r"test4zPBKDF2_Tests.test4s E1U88R , , AeHHahhB / / R   AeHHeR , , AeHHahhB / / R     r$N) r'r(r)r r r6r;rqryr~r*r$r"r=r=Hs*2d>p q  B>h i  B>h i  B>h i '(r$&>r t\"T>` a BAC D*b%AC D  I0008??? ' ' '!!!!!r$r=c2eZdZdddefdddefgZdZdZd S) S2V_Tests)0101112131415161718191a1b1c1d1e1f2021222324252627112233445566778899aabbccddee fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0 85632d07c6e8f37f950acd320a2ecc93)P00112233445566778899aabbccddeeffdeaddadadeaddadaffeeddccbbaa99887766554433221100102030405060708090a0 09f911029d74e35bd84156c5635688c0^7468697320697320736f6d6520706c61696e7465787420746f20656e6372797074207573696e67205349562d414553 7f7e7d7c7b7a79787776757473727170 7bdb6e3b432667eb06f4d14bff2fbd0fcJ|jD]}tjt|d|d}|dD]$}|t|%|}||t|ddS)z!Verify correctness of test vectorr2r4rr3N)r6rrUr#updatederiver7)r8tvs2vrYresults r"r;zS2V_Tests.test1s. 1 1B(3r!u::r!u--CU # # 3q66""""ZZ\\F   VSAZZ 0 0 0 0  1 1r$cztddztddzz}ttfD]}tj||}|jdzdz }t |D]$}|td%| t|jtddS)zOVerify that no more than 127(AES) and 63(TDES) components are accepted.rr2XXYYN) rrrrrU block_sizer`rrro TypeError)r8keymoduler max_compsrbs r"rqzS2V_Tests.test2s1ggkDIIM)Dk > >F(3''C)!+A-I9%% $ $ 1T77####   iQtWW = = = =  > >r$N)r'r(r)rr6r;rqr*r$r"rrsa1 . .   2 / .   I6111 > > > > >r$rc eZdZedddddfedddd d fedd d dd fed ddddfedddd dfedddddfedd dddffZdZdZd S) HKDF_Tests,0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b000102030405060708090a0b0cf0f1f2f3f4f5f6f7f8f9*T3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865ڠ000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4fڠ606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafڠb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeffRڤb11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87NT8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c80b0b0b0b0b0b0b0b0b0b0bT085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422478d305f3f896ڤ0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a4e5ad79f3f334b3b202b2173c486ea37ce3d397ed034c7f9dfeb15c5e927336d0441f4c4300e2cff0d0900b52d3b4rT0ac1af7002b3d761d1e55298da9d0506b9ae52057220a306e07b6b87e8df21d0ea00033de03984d34918,0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0cT2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48c |jD]PfddD\}}}}fddD\}}t||||d|}|||QdS)Nc:g|]}t|Sr*)r#.0xrs r" z$HKDF_Tests.test1..Is#&G&G&GqBqE &G&G&Gr$)r2r3r4r_c g|] }| Sr*r*rs r"rz$HKDF_Tests.test1..Js7771A777r$)r5rr2) _test_vectorrr7) r8secretrcinfoexpkey_lenruoutputrs @r"r;zHKDF_Tests.test1Gs# * *B&G&G&G&GI&G&G&G #FD$7777777 GW&'4!TBBF   VS ) ) ) )  * *r$cttddtdt}ttddtdtd\}}||dd|ddf||fttddtdtd\}}}||dd|dd|ddf|||fdS) NXXXXXX YYYYr3r5r4r)rrr r7r8refkey1key2key3s r"rqzHKDF_Tests.test2Os1X;;AfIIt44!H++q!F))T1== d #bqb'3qrr7+dD\::: ( Q& 4CCdD #bqb'3qs8SW5dD7IJJJJJr$)r'r(r)r r rr;rqr*r$r"rrs>,&' 3 3 3 % 4>' (,&' 3 3 3 % 4>' >' we LN*** K K K K Kr$rc$eZdZdZdZdZdZdS) scrypt_Tests))rrr/r2r2a% 77 d6 57 62 38 65 7b 20 3b 19 ca 42 c1 8a 04 97 f1 6b 48 44 e3 07 4a e8 df df fa 3f ed e2 14 42 fc d0 06 9d ed 09 48 f8 32 6a 75 3a 0f c8 1f 17 e8 d3 e0 fb 2e 0d 36 28 cf 35 e2 0c 38 d1 89 06 )r-NaClirr/a% fd ba be 1c 9d 34 72 00 78 56 e7 19 0d 01 e9 fe 7c 6a d7 cb c8 23 78 30 e7 73 76 63 4b 37 31 62 2e af 30 d9 2e 22 a3 88 6f f1 09 27 9d 98 30 da c7 27 af b9 4a 83 ee 6d 83 60 cb df a2 cc 06 40 ) pleaseletmeinSodiumChloridei@rr2a% 70 23 bd cb 3a fd 73 48 46 1c 06 cd 81 fd 38 eb fd a8 fb ba 90 4f 8e 3e a9 b5 43 f6 54 5d a1 f2 d5 43 29 55 61 3f 0f cf 62 d4 97 05 24 2a 9a f9 e6 1e 85 dc 0d 65 1e 40 df cf 01 7b 45 57 58 87 )rrrr2a% 21 01 cb 9b 6a 51 1a ae ad db be 09 cf 70 f8 81 ec 56 8d 57 4a 2f fd 4d ab e5 ee 98 20 ad aa 47 8e 56 fd 8f 4b a5 d0 9f fa 1c 6d 92 7c 40 f4 c3 37 30 40 49 e8 a9 52 fb cb f4 5c 6f a7 7a 41 a4 cg}|jD]}t}t|d|_t|d|_|d|_|d|_|d|_t|d|_ t|j |_ | |||_dS)Nrr2r3r4r5r_) datar&rPSNrrXr#rradkLenappend)r8new_test_vectorsrnew_tvs r"setUpzscrypt_Tests.setUps) , ,B\\FAxxFHAxxFH!uFH!uFH!uFH1JJFMv}--FL  # #F + + + +$ r$c `|jD]} t|j|j|j|j|j|j}nT#t$rG}dt|vr/|jdkr$ddl }| dtYd}~|d}~wwxYw| ||jdS)Nz 2 rrz6Not enough memory to unit test scrypt() with N=1048576)rrrrrrrrXrpstrwarningswarnRuntimeWarningr7r)r8rrers r"rqzscrypt_Tests.test2s) 0 0B bdBHbdBD"$GG   CFF??rtw#OOOMM"Z\jkkkHHHHG     VRY / / / / 0 0s2> B;B B  Bc ttdtddddd}ttdtdddddd\}}||dd|ddf||fttdtdddddd \}}}||dd|dd |d df|||fdS) Nr-rcrr/r2rr3r5r4r)rrr7rs r"ryzscrypt_Tests.test3sQz]]AfIIr2q!<<AjMM1V99aQ1EE d #bqb'3qrr7+dD\:::"!J--6Ar1aKKdD #bqb'3qs8SW5dD7IJJJJJr$N)r'r(r)rrrqryr*r$r"rr[sN5 Dn % % % 0 0 0 K K K K Kr$rcPeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d S) bcrypt_Testsc|ttdd|ttdd|ttdd|ttddd|ttddd |ttddd |ttd ddS) NsI1111111111111111111111111111111111111111111111111111111111111111111111111r{s 1111111111r4 r5r$rc1s11111111111111111s1111111111)rorprr8s r"test_negative_casesz bcrypt_Tests.test_negative_casess *fi<<< *fi;;; *fi<<< *fiEEE *fiFFF *fiKKK *fmQ?????r$cltdd}td|t|}td||ddt|ddz z}|t td|d|ddz}|t td|dS)Npwdr5r2x)rr bytearrayrrorp)r8rbrefwrongs r"test_bytearray_mismatchz$bcrypt_Tests.test_bytearray_mismatchsUAUC   ~~UD!!!CRC4R4000 *lE5AAAs122w *lE5AAAAAr$cgd}t|D]O\}\}}}}t||t|}|||t ||PdS)N))r$r5zVHmKQtGGQob.b/Nc7l9NOs<$2a$04$zVHmKQtGGQob.b/Nc7l9NO8UlrYcW05FiuCj/SxsFO/ZtiN9.mNzy)r$r_rs<$2a$05$zVHmKQtGGQob.b/Nc7l9NOWES.1hkVBgy5IWImh9DOjKNU8atY4Iy)r$rrs<$2a$06$zVHmKQtGGQob.b/Nc7l9NOjOl7l4oz3WSh5fJ6414Uw8IXRAUoiaO)r$rs<$2a$07$zVHmKQtGGQob.b/Nc7l9NOBsj1dQpBA1HYNGpIETIByoNX9jc.hOi)r$rrs<$2a$08$zVHmKQtGGQob.b/Nc7l9NOiLTUh/9MDpX86/DLyEzyiFjqjBFePgOr enumeraterrr7rr8tvsidxr-costsalt64rrs r"test_empty_passwordz bcrypt_Tests.test_empty_passwords   8A~~ + + 3S28T66xN6,B,BCCCA   Q ' ' ' 6 * * * * + +r$cgd}t|D]O\}\}}}}t||t|}|||t ||PdS)N))s <.S.2K(Zq'r5sVYAclAMpaXY/oqAo9yUpkus<$2a$04$VYAclAMpaXY/oqAo9yUpkuWmoYywaPzyhu56HxXpVltnBIfmO9tgu)s 5.rApO%5jAr_skVNDrnYKvbNr5AIcxNzeIus<$2a$05$kVNDrnYKvbNr5AIcxNzeIuRcyIF5cZk6UrwHGxENbxP5dVv.WQM/G)s oW++kSrQW^rsQLKkRMH9Am6irtPeSKN5sOs<$2a$06$QLKkRMH9Am6irtPeSKN5sObJGr3j47cO6Pdf5JZ0AsJXuze0IbsNm)s ggJ\KbTnDGrs4H896R09bzjhapgCPS/LYus<$2a$07$4H896R09bzjhapgCPS/LYuMzAQluVgR5iu/ALF8L8Aln6lzzYXwbq)s 49b0:;VkH/rshfvO2retKrSrx5f2RXikWes<$2a$08$hfvO2retKrSrx5f2RXikWeFWdtSesPlbj08t/uXxCeZoHRWDz/xFe)s >9N^5jc##' sXZLvl7rMB3EvM0c1.JHivus<$2a$09$XZLvl7rMB3EvM0c1.JHivuIDPJWeNJPTVrpjZIEVRYYB/mF6cYgJK)s \$ch)s4WXpr{saIjpMOLK5qiS9zjhcHR5TOs<$2a$10$aIjpMOLK5qiS9zjhcHR5TOU7v2NFDmcsBmSFDt5EHOgp/jeTF3O/q)s RYoj\_>2P7rsesIAHiQAJNNBrsr5V13l7.s<$2a$12$esIAHiQAJNNBrsr5V13l7.RFWWJI2BZFtQlkFyiWXjou05GyuREZarrrs r"&test_random_password_and_salt_short_pwz3bcrypt_Tests.test_random_password_and_salt_short_pw    8A~~ + + 3S28T66xN6,B,BCCCA   Q ' ' ' 6 * * * * + +r$cgd}t|D]O\}\}}}}t||t|}|||t ||PdS)N))s^Q&"]A`%/A(BVGt>QaX0M-#1ghq_+":Y0CRmYr_sYuQvhokOGVnevctykUYpKus<$2a$05$YuQvhokOGVnevctykUYpKutZD2pWeGGYn3auyLOasguMY3/0BbIyq)sF%uN/j>[GuB7-jB'_Yj!Tnb7Y!u^6)rs5L3vpQ0tG9O7k5gQ8nAHAes<$2a$06$5L3vpQ0tG9O7k5gQ8nAHAe9xxQiOcOLh8LGcI0PLWhIznsDt.S.C6)sZ>BobP32ub"Cfe*Q<-q-=tRSjOBh8\mLNW.rsnArqOfdCsD9kIbVnAixnwes<$2a$09$nArqOfdCsD9kIbVnAixnwe6s8QvyPYWtQBpEXKir2OJF9/oNBsEFe)s/MH51`!BP&0tj3%YCA;Xk%e3S`o\EIr{sePiAc.s.yoBi3B6p1iQUCes<$2a$10$ePiAc.s.yoBi3B6p1iQUCezn3mraLwpVJ5XGelVyYFKyp5FZn/y.u)sptAP"mcg6oH.";c0U2_oll.OKi5?Ui"^ai#iQH7ZFtNMfs3AROnIncE9"BNNoEgO[[*Yk8;RQ(#S,;I+aTr_swgkOlGNXIVE2fWkT3gyRoOs<$2a$05$wgkOlGNXIVE2fWkT3gyRoOqWi4gbi1Wv2Q2Jx3xVs3apl1w.Wtj8C)sFM.E1=dt<.L0Q&p;94NfGm_Oo23+Kpl@M5?WIAL.[@/:'S)W96G8N^AWb7_smmC]>7#fGoBrsW9zTCl35nEvUukhhFzkKMes<$2a$06$W9zTCl35nEvUukhhFzkKMekjT9/pj7M0lihRVEZrX3m8/SBNZRX7irrrs r"test_long_passwordsz bcrypt_Tests.test_long_passwords.s   8A~~ + + 3S28T66xN6,B,BCCCA   Q ' ' ' 6 * * * * + +r$cgd}t|D]O\}\}}}}t||t|}|||t ||PdS)N))ar55DCebwootqWMCp59ISrMJ.s<$2a$04$5DCebwootqWMCp59ISrMJ.l4WvgHIVg17ZawDIrDM2IjlE64GDNQS)saar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.AyUxBk.ThHlsLvRTH7IqcG7yVHJ3SXq)saaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.BxOVac5xPB6XFdRc/ZrzM9FgZkqmvbW)saaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.Qbr209bpCtfl5hN7UQlG/L4xiD3AKau)saaaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.oWszihPjDZI0ypReKsaDOW1jBl7oOii)saaaaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ./k.Xxn9YiqtV/sxh3EHbnOHd0Qsq27K)saaaaaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.PYJqRFQbgRbIjMd5VNKmdKS4sBVOyDe)saaaaaaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ..VMYfzaw1wP/SGxowpLeGf13fxCCt.q)s aaaaaaaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.5B0p054nO5WgAD1n04XslDY/bqY9RJi)s aaaaaaaaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.INBTgqm7sdlBJDg.J5mLMSRK25ri04y)s aaaaaaaaaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.s3y7CdFD0OR5p6rsZw/eZ.Dla40KLfm)s aaaaaaaaaaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.Jx742Djra6Q7PqJWnTAS.85c28g.Siq)s aaaaaaaaaaaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.oKMXW3EZcPHcUV0ib5vDBnh9HojXnLu)saaaaaaaaaaaaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.w6nIjWpDPNSH5pZUvLjC1q25ONEQpeS)saaaaaaaaaaaaaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.k1b2/r9A/hxdwKEKurg6OCn4MwMdiGq)saaaaaaaaaaaaaaaar5r s<$2a$04$5DCebwootqWMCp59ISrMJ.3prCNHVX1Ws.7Hm2bJxFUnQOX9f7DFarrrs r"test_increasing_password_lengthz,bcrypt_Tests.test_increasing_password_length>s   &8A~~ + + 3S28T66xN6,B,BCCCA   Q ' ' ' 6 * * * * + +r$cgd}t|D]O\}\}}}}t||t|}|||t ||PdS)N))0àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝðÐr5sD3qS2aoTVyqM7z8v8crLm.s<$2a$04$D3qS2aoTVyqM7z8v8crLm.3nKt4CzBZJbyFB.ZebmfCvRw7BGs.Xm)r r_sVA1FujiOCMPkUHQ8kF7IaOs<$2a$05$VA1FujiOCMPkUHQ8kF7IaOg7NGaNvpxwWzSluQutxEVmbZItRTsAa)r rsTXiaNrPeBSz5ugiQlehRt.s<$2a$06$TXiaNrPeBSz5ugiQlehRt.gwpeDQnXWteQL4z2FulouBr6G7D9KUi),âêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿr5sYTn1Qlvps8e1odqMn6G5x.s<$2a$04$YTn1Qlvps8e1odqMn6G5x.85pqKql6w773EZJAExk7/BatYAI4tyO)r r_sC.8k5vJKD2NtfrRI9o17DOs<$2a$05$C.8k5vJKD2NtfrRI9o17DOfIW0XnwItA529vJnh2jzYTb1QdoY0py)r rsxqfRPj3RYAgwurrhcA6uROs<$2a$06$xqfRPj3RYAgwurrhcA6uROtGlXDp/U6/gkoDYHwlubtcVcNft5.vW)+ÄËÏÖÜŸåÅæÆœŒßçÇøØ¢¿¡€r5sy8vGgMmr9EdyxP9rmMKjH.s<$2a$04$y8vGgMmr9EdyxP9rmMKjH.wv2y3r7yRD79gykQtmb3N3zrwjKsyay)rr_siYH4XIKAOOm/xPQs7xKP1us<$2a$05$iYH4XIKAOOm/xPQs7xKP1upD0cWyMn3Jf0ZWiizXbEkVpS41K1dcO)rrswCOob.D0VV8twafNDB2apes<$2a$06$wCOob.D0VV8twafNDB2apegiGD5nqF6Y1e6K95q6Y.R8C4QGd265q)u8ΔημοσιεύθηκεστηνΕφημερίδατηςr5sE5SQtS6P4568MDXW7cyUp.s<$2a$04$E5SQtS6P4568MDXW7cyUp.18wfDisKZBxifnPZjAI1d/KTYMfHPYO)u8АБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНr5s03e26gQFHhQwRNf81/ww9.s<$2a$04$03e26gQFHhQwRNf81/ww9.p1UbrNwxpzWjLuT.zpTLH4t/w5WhAhC)uFнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюr5sPHNoJwpXCfe32nUtLv2Upus<$2a$04$PHNoJwpXCfe32nUtLv2UpuhJXOzd4k7IdFwnEpYwfJVCZ/f/.8Pje)u6電电電島岛島兔兔兎龜龟亀國国国區区区r5swU4/0i1TmNl2u.1jIwBX.us<$2a$04$wU4/0i1TmNl2u.1jIwBX.uZUaOL3Rc5ID7nlQRloQh6q5wwhV/zLW)u6诶比伊艾弗豆贝尔维吾艾尺开艾丝维贼德r5sP4kreGLhCd26d4WIy7DJXus<$2a$04$P4kreGLhCd26d4WIy7DJXusPkhxLvBouzV6OXkL5EB0jux0osjsryrrrs r"test_non_ascii_charactersz&bcrypt_Tests.test_non_ascii_charactersXs   "8A~~ + + 3S28T66xN6,B,BCCCA   Q ' ' ' 6 * * * * + +r$cgd}t|D]O\}\}}}}t||t|}|||t ||PdS)N) )z -O_=*N!2JPr5......................s<$2a$04$......................JjuKLOX9OOwo5PceZZXSkaLDvdmgb82)z 7B[$Q<4b>Ur_rs<$2a$05$......................DRiedDQZRL3xq5A5FL8y7/6NM8a2Y5W)z >d5-I_8^.hrrs<$2a$06$......................5Mq1Ng8jgDY.uHNU4h5p/x6BedzNH2W)z )V`/UM/]1tr5.OC/.OC/.OC/.OC/.OC/.Os<$2a$04$.OC/.OC/.OC/.OC/.OC/.OQIvKRDAam.Hm5/IaV/.hc7P8gwwIbmi)z :@t2.bWuH]r_rs<$2a$05$.OC/.OC/.OC/.OC/.OC/.ONDbUvdOchUiKmQORX6BlkPofa/QxW9e)z b(#KljF5s"rrs<$2a$06$.OC/.OC/.OC/.OC/.OC/.OHfTd9e7svOu34vi1PCvOcAEq07ST7.K)z @3YaJ^Xs]*r5eGA.eGA.eGA.eGA.eGA.e.s<$2a$04$eGA.eGA.eGA.eGA.eGA.e.stcmvh.R70m.0jbfSFVxlONdj1iws0C)z '"5\!k*C(pr_rs<$2a$05$eGA.eGA.eGA.eGA.eGA.e.vR37mVSbfdHwu.F0sNMvgn8oruQRghy)z edEu7C?$'Wrrs<$2a$06$eGA.eGA.eGA.eGA.eGA.e.tSq0FN8MWHQXJXNFnHTPQKtA.n2a..G)z N7dHmg\PI^r5999999999999999999999us<$2a$04$999999999999999999999uCZfA/pLrlyngNDMq89r1uUk.bQ9icOu)z "eJuHh!)7*r_rs<$2a$05$999999999999999999999uj8Pfx.ufrJFAoWFLjapYBS5vVEQQ/hK)z ZeDRJ:_tu:rrs<$2a$06$999999999999999999999u6RB0P9UmbdbQgjoQFEJsrvrKe.BoU6qrrrs r"test_special_case_saltz#bcrypt_Tests.test_special_case_saltps    8A~~ + + 3S28T66xN6,B,BCCCA   Q ' ' ' 6 * * * * + +r$N)r'r(r)rrrrrrrrr rrr*r$r"rrs@@@ B B B + + ++++$+++$ + + ++++$+++ +++4+++0+++++r$rc8eZdZdZdZdZdZdZdZdZ dS) TestVectorsHKDFWycheproofc`tj|||_d|_dS)NNone)unittestTestCase__init___wycheproof_warnings_id)r8wycheproof_warningss r"rz"TestVectorsHKDFWycheproof.__init__s,""4((($7!r$cHd}d}td|d|zd|id|i}|S)Nc|d}|dkrtS|dkrtS|dkrtS|dkrtSt d|z)N algorithmz HKDF-SHA-1z HKDF-SHA-256z HKDF-SHA-384z HKDF-SHA-512zUnknown algorithm )r r rrrp)root algo_names r" filter_algoz8TestVectorsHKDFWycheproof.add_tests..filter_algos`[)IL(( n,, n,, n,,  !5 !ABBBr$c,t|dS)Nsizeint)units r" filter_sizez8TestVectorsHKDFWycheproof.add_tests..filter_sizestF|$$ $r$)Protocol wycheproofzWycheproof HMAC (%s) hash_moduler')root_tagunit_tag)r)r8filenamer%r+rs r" add_testsz#TestVectorsHKDFWycheproof.add_testssa C C C % % %..H.6.Dx.O8E{7S8> 7L NNN  r$cg|_|d|d|d|ddS)Nzhkdf_sha1_test.jsonzhkdf_sha256_test.jsonzhkdf_sha384_test.jsonzhkdf_sha512_test.json)rr2rs r"rzTestVectorsHKDFWycheproof.setUps[ ,--- ./// ./// ./////r$c|jSrS)rrs r"shortDescriptionz*TestVectorsHKDFWycheproof.shortDescriptions xr$c~|jr3|jr.ddl}|d|jd|jddSdSdS)NrzWycheproof warning: z ())warningrrrrcomment)r8rrs r"rzTestVectorsHKDFWycheproof.warnsd : R$3 R OOO MMM4888RZZZP Q Q Q Q Q R R R Rr$c6d|j|j|jfz|_ t |j|j|j|jd|j }||j kr |j rJdS|j sJ| |dS#t$r |j rJYdSwxYw)Nz!Wycheproof HKDF Test #%d (%s, %s)r2)idr9r1rrikmr'rcr.rokmvalidrrp)r8rrs r" test_verifyz%TestVectorsHKDFWycheproof.test_verifys6"%R[9YY rvrwBGLLCbf}}8##|##xx "    x  <    s-BBBcD|jD]}||dSrS)rr?)r8rs r"runTestz!TestVectorsHKDFWycheproof.runTests4' ! !B   R  ! !r$N) r'r(r)rr2rr5rr?rAr*r$r"rrs 2000RRR   !!!!!r$rc^td|zttdgS)Nz Crypto.Hash.rU) __import__globalslocals) hash_names r"load_hash_by_namerGs% ny0'))VXXw O OOr$ceZdZdZdZdS)SP800_180_Counter_Testscd}|ttdd|d|ttdd|ddS)Nc\tj||tSrSr]rYrs r"rmz9SP800_180_Counter_Tests.test_negative_zeroes..prf"8Aq&))0022 2r$0000000000000000r2sAB)label)context)rorpr)r8rms r"test_negative_zeroesz,SP800_180_Counter_Tests.test_negative_zeroesss 3 3 3 *&7As )  + + + *&7As"+  - - - - -r$cVd}d}t|d|}dD]}t|||d|z}|t|d|z|t|d||d||dS)Nc\tj||tSrSr]rLs r"rmz7SP800_180_Counter_Tests.test_multiple_keys..prfrMr$rN)r2r3r4rr$)rr7rajoin)r8rmrrgrdkss r"test_multiple_keysz*SP800_180_Counter_Tests.test_multiple_keyss 3 3 3$S&#66 6 6A#CCa88C   SXXsAv . . .   SQ[[! , , ,   SXXc]]H 5 5 5 5  6 6r$N)r'r(r)rQrXr*r$r"rIrIs2--- 6 6 6 6 6r$rIc tdddddipg}d}t|D]\}}t|trpt jd|}|r;|ddd }t|}d }lt jd |}|rd }|sJ|d kr|fd }n |d kr|fd}||j |j |j |j |j fd} t|d|z| dS)N)r,zKDF_SP800_108_COUNTER.txtz NIST SP 800 108 KDF Counter Modecountc t|SrSr()rs r"rvz-add_tests_sp800_108_counter..s 3q66r$z\[HMAC-(SHA-[0-9]+)\]r2-rhmacz\[CMAC-AES-128\]cmaccRtj|||SrSrtrYrr.s r"rmz(add_tests_sp800_108_counter..prfs"x1k2299;;;r$cht||tSrS)CMACrUrrVr`s r"rmz(add_tests_sp800_108_counter..prfs$xx1c**11333r$ct|t||d||}t|t|ksJ|||dS)Nr2)rrar7)r8rmkinrOrPkoutrZrs r"kdf_testz-add_tests_sp800_108_counter..kdf_testsX&sCIIsAugNNFv;;#d))++++   VT * * * * *r$ztest_kdf_sp800_108_counter_%d)rr isinstancerrematchgrouprrGrdrOrPrerZsetattr) clstest_vectors_sp800_108_countermac_typerrr:rFr.rmrfs r"add_tests_sp800_108_counterros%6~7R7Y8?AQAQ7R&8&8&><> # H;<<FFR b#   (3R88C IIaLL00b99 / :: !(.33C !JJ3 v  &1 < < < < <   &1 4 4 4 4 "bhZbgRX + + + + 4s:HEEEE;FFr$c>|d}|dsrs. ))))))))555555RRRRRRRRGGGGGGGGGGGGGGGGGG########44444444444444444444/.....        )))))8$)))(S!S!S!S!S!8$S!S!S!l6>6>6>6>6>!6>6>6>rAKAKAKAKAK"AKAKAKHeKeKeKeKeK8$eKeKeKPA+A+A+A+A+8$A+A+A+H?!?!?!?!?! 1?!?!?!DPPP66666h/6660&F&F&FR3444( z 3 3EHMg&&&&&&r$