ƺhwddlZddlmZddlmZddlmZddlmZddl m Z ddl m Z ddl mZd ZGd d ejZGd d ejZGddejZdZGddejZGddejZGddejZifdZedkrdZejddSdS)N) unhexlify)list_test_casesload_test_vectors_wycheproof)tobytes)ChaCha20_Poly1305)SHAKE128)strxorcltjt||S)N)data)r newrread)taglengths /builddir/build/BUILD/imunify360-venv-2.5.2/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/SelfTest/Cipher/test_ChaCha20_Poly1305.pyget_tag_randomr+s) "&4<888> Vb))) FF+++++rc`|ttj|jddS)N )rparamr4r7s rtest_unknown_parametersz-ChaCha20Poly1305Tests.test_unknown_parameters{s9 )+/"l !  # # # # #rcdD]Q}tj|j|j}t ||d}||dRdS)Nr!r"rr)rr rrgetattrr#)r$funcr%results rtest_null_encryption_decryptionz5ChaCha20Poly1305Tests.test_null_encryption_decryptionsp( * *D&*t|15@@@F*WVT**3//F   VS ) ) ) )  * *rc^tj|j|j}|d|t |jdtj|j|j}|d|t |jddS)Nrr)rr rrr!r5r6r"r@s rtest_either_encrypt_or_decryptz4ChaCha20Poly1305Tests.test_either_encrypt_or_decrypts"&4<-1]<<<s )V^S999"&4<-1]<<<s )V^S99999rc tj|j|j}|t |jdtj|j|j}|t |jddS)Nrztest1234567890-*)rr rrr5r6r!r"r@s rtest_data_must_be_bytesz-ChaCha20Poly1305Tests.test_data_must_be_bytess~"&4<-1]<<< )V^5HIII"&4<-1]<<< )V^5HIIIIIrctj|j|j}||j\}}|t|ddS)Nrr)rr rrencrypt_and_digestrr#r-)r$r%_macs r test_mac_lenz"ChaCha20Poly1305Tests.test_mac_lens]"&4<-1]<<<**4=993 S2&&&&&rc(ddlm}tj|j|j}||j\}}||d}tj|j|j}|t|j ||dS)Nr)strxor_cr) Crypto.Util.strxorrXrr rrrSrr5r:decrypt_and_verify)r$rXr%r'rU invalid_macs rtest_invalid_macz&ChaCha20Poly1305Tests.test_invalid_macs//////"&4<-1]<<<++DM::ChsD)) "&4<-1]<<< *f&?% ' ' ' ' 'rcBtj|j|j}|}||t|tj|j|j}||dSNr) rr rr hexdigestr#digestr hexverify)r$r%mac_hexs r test_hex_macz"ChaCha20Poly1305Tests.test_hex_macs"&4<-1]<<<""$$ )G*<*<==="&4<-1]<<<!!!!!rctdd}tdd}tj|j|j}||||\}}d}dD]}tj|j|j}|||D]}||d} |||D]}| ||z } ||| | |dD]}tj|j|j}|||D]}||d} |||D]}| | |z } ||| || |dS)Nzauthenticated datar rc\fdtdtDS)Nc*g|]}||zSri).0i chunk_lengthr s r zOChaCha20Poly1305Tests.test_message_chunks..break_up..s3###qD1\>)*###rr)ranger-)r rls``rbreak_upz;ChaCha20Poly1305Tests.test_message_chunks..break_upsJ#####E!SYY 5"5"### #r) rY r(Pr) rrr rrupdaterSr"r#verifyr!ra) r$ auth_datar r% ciphertextref_macrorlchunkr(ct2s rtest_message_chunksz)ChaCha20Poly1305Tests.test_message_chunkss&##7== ";44 "&4<-1]<<< i   $77 BB G # # # @ # #L&*t|15@@@F")\:: % % e$$$$C!*l;; - -v~~e,,,   Y , , , MM' " " " "@ 7 7L&*t|15@@@F")\:: % % e$$$$C!)\:: - -v~~e,,,   Z - - -   V]]__g 6 6 6 6 7 7rct|j}t|j}t|j}t|j}t j|j|j}||j||j}|}t j|j|j}d|dd<d|dd<||d|dd<||} d|dd<|} | || | || | |j |j t|j}t|j}t|j}t|} t|} ~t j|j|j} d|dd<d|dd<| |d|dd<| | }d| dd<| | | ||jdSNrsrqs) bytearrayrrrrr rxr!rar#rr"ry)r$key_banonce_ba header_badata_bacipher1r'rcipher2ct_testtag_testct_batag_bacipher3pt_tests rtest_bytearrayz$ChaCha20Poly1305Tests.test_bytearraysQ4<((T]++dm,, DM**#'DL.2m===t}%%% __T] + +nn#'DL.2m===$rr &! y!!!' "1" //'**% >>## W%%% h'''  6664<((T]++dm,, " 3 #'DL.2m===$rr &! y!!!' "1" //%((#bqb v $-00000rctt|j}tt|j}tt|j}tt|j}t j|j|j}||j||j}| }t j|j|j}d|dd<d|dd<||d|dd<||} d|dd<| } | || | || | |j |j tt|j}tt|j}tt|j}tt|} tt|} ~t j|j|j} d|dd<d|dd<| |d|dd<| | }d| dd<| | | ||jdSr) memoryviewrrrrrr rxr!rar#rr"ry)r$key_mvnonce_mv header_mvdata_mvrr'rrrrct_mvtag_mvrrs rtest_memoryviewz%ChaCha20Poly1305Tests.test_memoryviewsIdl3344i 6677y7788 Yt}5566#'DL.2m===t}%%% __T] + +nn#'DL.2m===$rr &! y!!!' "1" //'**% >>## W%%% h'''  666Idl3344i 6677y7788 9R==))IcNN++ #'DL.2m===$rr &! y!!!' "1" //%((#bqb v $-00000rN)__name__ __module__ __qualname__rrrrr)r1r8r;rArCrGrMrOrQrVr]rdrrrrirrrr/s<nY++G~j"--H~j"--H " " "<<<2111 % % %888 , , ,### *** : : :JJJ''' ' ' '"""*7*7*7X.1.1.1`.1.1.1.1.1rrceZdZdZdZdS)XChaCha20Poly1305Testsctjdd}|t|jd||jddS)Ns YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYsHHHHHHHHHHHHHHHHHHHHHHHHr)rr r#r-rr@s rr1z!XChaCha20Poly1305Tests.test_nonceHs\"&9-6888 V\**B/// y11111rcd}t|dddd}td}td}td}d}t|dddd}td }tj|| }||||\}} |||||| tj|| }|||||dS) Ns( 4c616469657320616e642047656e746c656d656e206f662074686520636c6173 73206f66202739393a204966204920636f756c64206f6666657220796f75206f 6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73 637265656e20776f756c642062652069742e r s50515253c0c1c2c3c4c5c6c7s@808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fs0404142434445464748494a4b4c4d4e4f5051525354555657s( bd6d179d3e83d43b9576579493c0e939572a1700252bfaccbed2902c21396cbb 731c7f1b0b4aa6440bf3a82f4eda7e39ae64c6708c54c216cb96b72e1213b452 2f8c9ba40db5d945b11b69b982c1bb9e3f3fac2bc369488f76b2383565d3fff9 21f9664c97637da9768812f615c68b13b52es c0875924c1c7987947deafd8780acf49r)rreplacerr rxrSr#r[) r$r&aadrivr'rr%rrs r test_encryptz#XChaCha20Poly1305Tests.test_encryptOsP8 rzz%--55dC@@ A A344[\\ J K K8 rzz%--55dC@@ A A;<<"&3b999 c"55b99 W%%% h'''"&3b999 c!!"c*****rN)rrrr1rrirrrrFs2222!+!+!+!+!+rrceZdZeddZeddZeddZdZdZd Z d Z d Z d Z d Z dZdZdZdZdS)ChaCha20Poly1305FSMTestsrrrrrrc6tj|j|j}||j}|}tj|j|j}||||dSr_) rr rrr!rrar"ryr$r%r'rUs r-test_valid_init_encrypt_decrypt_digest_verifyzFChaCha20Poly1305FSMTests.test_valid_init_encrypt_decrypt_digest_verifyys#&4<-1]<<< ^^DM * *mmoo#&4<-1]<<<r crc@tj|j|j}||j|}tj|j|j}||j||dSr_)rr rrrxrraryr$r%rUs r$test_valid_init_update_digest_verifyz=ChaCha20Poly1305FSMTests.test_valid_init_update_digest_verifys#&4<-1]<<< dm$$$mmoo#&4<-1]<<< dm$$$ crctj|j|j}||j||j}|}tj|j|j}||j||| |dSr_) rr rrrxrr!rar"ryrs rtest_valid_full_pathz-ChaCha20Poly1305FSMTests.test_valid_full_paths#&4<-1]<<< dm$$$ ^^DM * *mmoo#&4<-1]<<< dm$$$r crcntj|j|j}|dSr_)rr rrrar@s rtest_valid_init_digestz/ChaCha20Poly1305FSMTests.test_valid_init_digests3"&4<-1]<<< rctj|j|j}|}tj|j|j}||dSr_)rr rrraryrs rtest_valid_init_verifyz/ChaCha20Poly1305FSMTests.test_valid_init_verifysg"&4<-1]<<<mmoo"&4<-1]<<< crcJdD]}dd|j|jdzfD]}tj|j|j}|||t ||}||j||j||j||jdS)NrIs3333r)rrr rrrxrJ)r$ method_namerzr%methods r&test_valid_multiple_encrypt_or_decryptz?ChaCha20Poly1305FSMTests.test_valid_multiple_encrypt_or_decrypts/ & &K"FDM"md24 & & *.4<59]DDD(MM),,, 55t}%%%t}%%%t}%%%t}%%%% & & &rctj|j|j}||j|}tdD]*}|||+tj|j|j}||jtdD]}| |dS)Nr) rr rrrxrrarnr#ry)r$r% first_macxs r$test_valid_multiple_digest_or_verifyz=ChaCha20Poly1305FSMTests.test_valid_multiple_digest_or_verifys"&4<-1]<<< dm$$$MMOO q 9 9A   Y  8 8 8 8#&4<-1]<<< dm$$$q % %A MM) $ $ $ $ % %rctj|j|j}||j||j\}}tj|j|j}||j|||}||j|dSr_) rr rrrxrrSr[r#)r$r%r'rUr&s r0test_valid_encrypt_and_digest_decrypt_and_verifyzIChaCha20Poly1305FSMTests.test_valid_encrypt_and_digest_decrypt_and_verifys"&4<-1]<<< dm$$$++DM::C#&4<-1]<<< dm$$$  & &r3 / / +++++rc 2dD]\}}dD]}tj|j|j}|r||jt |||j|tt |||jdS)N)rI)r"r!)TFr) rr rrrxrrJr5r6)r$ method1_name method2_nameassoc_data_presentr%s r#test_invalid_mixing_encrypt_decryptz.`s>PPPYqyyb1199#rBBCCPPPrri)rjtvs rrmzTestVectorsRFC.`s(lllUWPPRPPPlllrc|jD]\}}}}}}tj||}||||\}} |||||| tj||}|||||} ||| dSr_) test_vectorsrr rxrSr#r[) r$ assoc_datar&r'rUrrr%r~mac2r(s rrunTestzTestVectorsRFC.runTestbs373D & & /JBS%&*s%@@@F MM* % % %11"55IC   R % % %   S$ ' ' ''*s%@@@F MM* % % %++B44C   R % % % % & &rN)rrr__doc__test_vectors_hexrrrirrrrsS!! ,' /?Bml[klllL & & & & &rrcDeZdZdZdZdZdZdZdZdZ dZ d Z d S) TestVectorsWycheproofc`tj|||_d|_dS)NNone)unittestTestCase__init___wycheproof_warnings_id)r$wycheproof_warningss rrzTestVectorsWycheproof.__init__ts,""4((($7!rcBd}d}td|dd|id|i}|S)Nc|ddzS)NtagSizer+ri)groups r filter_tagz4TestVectorsWycheproof.load_tests..filter_tag{s#q( (rc|dS)N algorithmri)roots r filter_algoz5TestVectorsWycheproof.load_tests..filter_algo~s  $ $r)Cipher wycheproofzWycheproof ChaCha20-Poly1305algotag_size)root_tag group_tagr)r$filenamerrrLs r load_testsz TestVectorsWycheproof.load_testsysY ) ) ) % % %..F/7/M9?8M:Dj9Q SSS  rcg|_|j|d|j|ddS)Nzchacha20_poly1305_test.jsonzxchacha20_poly1305_test.json)rextendrr7s rsetUpzTestVectorsWycheproof.setUpsQ t'DEEFFF t'EFFGGGGGrc|jSN)rr7s rshortDescriptionz&TestVectorsWycheproof.shortDescriptions xrc~|jr3|jr.ddl}|d|jd|jddSdSdS)NrzWycheproof warning: z ())warningrwarningswarnrcomment)r$rrs rrzTestVectorsWycheproof.warnsd : R$3 R OOO MMM4888RZZZP Q Q Q Q Q R R R Rrcd|jd|j|_ tj|j|j}nA#t$r4}t|jdvrdt|vsJYd}~dSd}~wwxYw| |j | |j \}}|jrM|||j|||j||dSdS)NzWycheproof Encrypt  Test #rr+r Nonce must be)ridrrr rrr:r-strrxrrSmsgvalidr#r'rr)r$rr%er'rs rrz"TestVectorsWycheproof.test_encrypts79wwwF &*rvRUCCCFF   ru::W,,CFF1J1J1JJ FFFFF   bf++BF33C 8    R ' ' '   S"& ) ) ) IIbMMMMM  s : A8)A33A8cd|jd|j|_ tj|j|j}nA#t$r4}t|jdvrdt|vsJYd}~dSd}~wwxYw| |j  | |j |j}|jsJ|||j||dS#t$r |jrJYdSwxYw)NzWycheproof Decrypt rrrr)rrrrr rrr:r-r rxrr[r'rr r#r r)r$rr%r r&s r test_decryptz"TestVectorsWycheproof.test_decrypts.79wwwF &*rvRUCCCFF   ru::W,,CFF1J1J1JJ FFFFF   bf **25"&99B8OO8   R ( ( ( IIbMMMMM    x  <    s' : A8)A33A8 C11DDcdt|jz|_t|jdkst|jdkrdSt j|j|j}| |j t|jdt|jdz zdz}| t|j||jdS)Nz3Wycheproof Corrupt Decrypt ChaCha20-Poly1305 Test #rrYr)r rrr-rr'rr rrxrr r5r:r[r)r$rr% ct_corrupts rtest_corrupt_decryptz*TestVectorsWycheproof.test_corrupt_decryptsH3ru::U ru::??c"%jj1nn F"&26??? bfBE7c"%jj1n#=#GHH  *f&?RVTTTTTrc|jD]A}||||||BdSr)rrrr)r$rs rrzTestVectorsWycheproof.runTests\' * *B   b ! ! !   b ! ! !  % %b ) ) ) ) * *rN) rrrrrrrrrrrrrirrrrrs   HHH RRR  &UUU*****rrceZdZdZdS) TestOutputcd}d}tj||}d}||}td}tj||}|||}|||||dtj||}|||}|||||dt td}tj||}||||||tj||}||||||tj||}|t|j|dtj||}|t|j|dtd}tj||}|t|j||tj||}|t|j||dS) Ns 44444444444444444444444444444444s 555555555555rs5555555555555555r)outputs0000000000000000rr) rr r!rr#r"rr5r6r:) r$rrr%r&r'rresshorter_outputs rrzTestOutput.runTestsf"&3e<<<  ^^B  2"&3e<<<nnRn// V$$$ d###"&3e<<<nnRn// V$$$ d###IbMM**"&3e<<<r&))) V$$$"&3e<<<r&))) V$$$"&3e<<< )V^RHHH"&3e<<< )V^RHHH"1"&3e<<< *fnbPPP"&3e<<< *fnbPPPPPrN)rrrrrirrrrs(*Q*Q*Q*Q*Qrrc,|d}g}|ttz }|ttz }|ttz }|t gz }|t |gz }|tgz }|S)Nr)getrrrrrrr)configrtestss r get_testsrs **%:;; E _2 3 33E _3 4 44E _5 6 66E n E #$788 99E jll^E Lr__main__cFtjtdSr)r TestSuiterrirrsuiter#s9;;'''''rr#) defaultTest)rbinasciirCrypto.SelfTest.st_commonrCrypto.SelfTest.loaderrCrypto.Util.py3compatr Crypto.Cipherr Crypto.Hashr rZr rrrrrrrrrrrr#mainrirrr,s@>555555??????))))))++++++ %%%%%%888T1T1T1T1T1H-T1T1T1n*+*+*+*+*+X.*+*+*+Za-a-a-a-a-x0a-a-a-H:::T&T&T&T&T&X&T&T&T&nT*T*T*T*T*H-T*T*T*n,Q,Q,Q,Q,Q",Q,Q,Q^     z(((HMg&&&&&&r