ghPddlZddlmZddlmZmZmZddlmZddl m Z ddl m Z ddl mZddlmZd ZGd d ejZGd d ejZdZGddejZGddejZifdZedkrdZejddSdS)N) unhexlify)btobytesbchr) long_to_bytes)load_test_vectors)list_test_cases)AES)SHAKE128cltjt||S)N)data)r newrread)taglengths /builddir/build/BUILD/imunify360-venv-2.6.0/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/SelfTest/Cipher/test_OCB.pyget_tag_randomr+s) s  cl+++s|T]CC ^^DI & &s|4=III V^^DI6677777rcv|ttj|jtjddS)N test12345678r) assertRaises TypeErrorr rrr r%s rtest_nonce_must_be_bytesz!OcbTests.test_nonce_must_be_bytesHs: )SWdlCL /  1 1 1 1 1rc |ttj|jtjt dtddD]5}tj|jtj|jd|6|ttj|jtj|jdS)Nrr) r3 ValueErrorr rrr rranger )r%rs rtest_nonce_lengthzOcbTests.test_nonce_lengthLs *cgt|S\ !"  ' ' 'Arll J JF GDL#,di6H I I I I I *cgt|S\ $   + + + + +rctj|jtj|j}||jtjtj|jtjj}tj|jtjj}|t|d| ||dSNr) r rrr r!r$ block_sizerlenassertNotEqualr%r&nonce1nonce2s rtest_block_size_128zOcbTests.test_block_size_128Xss|4=III *CN;;;s|44:s|44: Vb))) FF+++++rctj|jtj|j}||j|jtj|jtjj}tj|jtjj}|t|d|||dSr>) r rrr r!r$rrArBrCs rtest_nonce_attributezOcbTests.test_nonce_attributebss|4=III t}555s|44:s|44: Vb))) FF+++++rcT|ttj|jtj|jd|ttj|jtj|jdtj|jtj|jddS)N)runknownF)r use_aesni)r3r4r rrr r!r5s rtest_unknown_parametersz OcbTests.test_unknown_parametersls )SWdlCL- , , , )SWdlCL $ q  : : :  cl$- ! ! ! ! ! !rcdD]v}tj|jtj|j}t ||t d}||t dwdS)Nr.decryptrr8)r rrr r!getattrrr$)r%funcr&results rtest_null_encryption_decryptionz(OcbTests.test_null_encryption_decryptionwsu( , ,DWT\3>>s|4=IIIqxx    )V^QuXX>>>>>rc6tj|jtj|j}|t |jdtj|jtj|j}|t |jddS)Nrztest1234567890-*) r rrr r!r3r4r.rPrWs rtest_data_must_be_bytesz OcbTests.test_data_must_be_bytessvs|4=III )V^5HIIIs|4=III )V^5HIIIIIrc|ttj|jtj|jd|ttj|jtj|jdtddD]n}tj|jtj|j|}||j \}}| t||otj|jtj|j}||j \}}| t|ddS)NrJrmac_lenrr) r3r:r rrr r!r;r"r r$rA)r%r]r&_r)s r test_mac_lenzOcbTests.test_mac_lens7 *cgt|S\ $ q  : : : *cgt|S\ $ t  = = =Q'' 0 0GWT\3zBOcbTests.test_message_chunks..break_up..s3###qD1\>)*###rr)r;rA)r rts``rbreak_upz.OcbTests.test_message_chunks..break_upsJ#####E!SYY 5"5"### #r) r9rJ r(Prr8)rr rrr r!updater"rrPr$verifyr.ri) r% auth_datarr& ciphertextref_macrvrtchunkr*ct2s rtest_message_chunkszOcbTests.test_message_chunkssD##7== ";44 s|4=III i   $77 BB G # # # @ # #LWT\3>## #C   Y , , , MM' " " " "@ 7 7LWT\3>## #C   Z - - -   V]]__g 6 6 6 6 7 7rct|j}t|j}t|j}t|j}t j|jtj|j}||j||j|z}| }t j|tj|}d|dd<d|dd<||d|dd<|||z} d|dd<| } | || | || | |j |j t|j}t|j}t|j}~t j|tj|} d|dd<d|dd<| |d|dd<| t| t| } | |j| dSNrsrx) bytearrayrr!r r rr r}r.rir$rr#) r%key_banonce_ba header_badata_bacipher1r(rcipher2ct_testtag_testcipher4pt_tests rtest_bytearrayzOcbTests.test_bytearraysX4<((T]++di(( DI&&'$,, $ /// ty!!! __TY ' ''//*;*; ;nn'&, (***%rr &! y!!!' "1" //'**W__->->>% >>## W%%% h'''  6664<((T]++di(( '&, (***%rr &! y!!!' "1" ,,Yw-?-?8ATATUU G,,,,,rctt|j}tt|j}tt|j}tt|j}t j|jt j|j}||j| |j| z}| }t j|t j|}d|dd<d|dd<||d|dd<| || z} d|dd<| } | || | || | |j |j tt|j}tt|j}tt|j}~t j|t j|} d|dd<d|dd<| |d|dd<| t| t| } | |j| dSr) memoryviewrrr!r r rr r}r.rir$rr#) r%key_mvnonce_mv header_mvdata_mvrr(rrrrrrs rtest_memoryviewzOcbTests.test_memoryview sIdl3344i 6677y3344 Yty1122'$,, $ /// ty!!! __TY ' ''//*;*; ;nn'&, (***%rr &! y!!!' "1" //'**W__->->>% >>## W%%% h'''  666Idl3344i 6677y3344 '&, (***%rr &! y!!!' "1" ,,Z-@-@*XBVBVWW G,,,,,rN)__name__ __module__ __qualname__rrr!r r+r0r6r<rFrHrMrTrXrZrarfrlrrrrqrrrr/s<nY++G~k2..H >&# & &D"""888111 + + +,,,,,, ! ! !,,, ???JJJ'''& ' ' '""")7)7)7V------^----------rrceZdZeddZeddZeddZdZdZd Z d Z d Z d Z d Z dZdZdZdZdZdZdZdS) OcbFSMTestsrrrrr rctj|jtj|j}||j}||z }|}tj|jtj|j}|||| |dSr-) r rrr r!r.r rirPr~)r%r&r(r)s r-test_valid_init_encrypt_decrypt_digest_verifyz9OcbFSMTests.test_valid_init_encrypt_decrypt_digest_verifyCss|#}... ^^DI & & fnnmmoos|#}...r crctj|jtj|j}||j}|t|j tj|jtj|j}| ||t|j dSr-) r rrr r!r.r r3r4rirPr~r/s r/test_invalid_init_encrypt_decrypt_digest_verifyz;OcbFSMTests.test_invalid_init_encrypt_decrypt_digest_verifySss|#}... ^^DI & & )V]333s|#}...r )V]33333rcltj|jtj|j}||j|}tj|jtj|j}||j||dSr-) r rrr r!r}r rir~r%r&r)s r$test_valid_init_update_digest_verifyz0OcbFSMTests.test_valid_init_update_digest_verifyass|#}... di   mmoos|#}... di    crctj|jtj|j}||j||j}||z }|}tj|jtj|j}||j| || | |tj|jtj|j}||j||jdd}| |jdd\}}tj|jtj|j}||j| || ||dS)Nrrw) r rrr r!r}r r.rirPr~r"r#)r%r&r(r)ct1rs rtest_valid_full_pathz OcbFSMTests.test_valid_full_pathoss|#}... di   ^^DI & & fnnmmoos|#}... di   r cs|#}... di   nnTYrr]++,,TYqrr];;Ss|#}... di   s!!#s+++++rc8tj|jtj|j}||j||j||t|j|jdSr-) r rrr r!r}r r.r3r4rWs r test_invalid_encrypt_after_finalz,OcbFSMTests.test_invalid_encrypt_after_finals|#}... di   ty!!! )V^TY?????rc8tj|jtj|j}||j||j||t|j|jdSr-) r rrr r!r}r rPr3r4rWs r test_invalid_decrypt_after_finalz,OcbFSMTests.test_invalid_decrypt_after_finalrrctj|jtj|j}|dSr-)r rrr r!rirWs rtest_valid_init_digestz"OcbFSMTests.test_valid_init_digests/s|4=III rctj|jtj|j}|}tj|jtj|j}||dSr-)r rrr r!rir~rs rtest_valid_init_verifyz"OcbFSMTests.test_valid_init_verifys_s|4=IIImmoos|4=III crcdD]}dtd|j|jtdzfD]}tj|jtj|j}|||t||}||j||j||j||j|dS)NrO3333r) rr r rrr r!r}rQ)r% method_namerr&methods r&test_valid_multiple_encrypt_or_decryptz2OcbFSMTests.test_valid_multiple_encrypt_or_decrypts/  K"AeHHdi"i!C&&02   s|'+}666(MM),,, 55ty!!!ty!!!ty!!!ty!!!   rctj|jtj|j}||j|}tdD]*}| ||+tj|jtj|j}||jtdD]}| |dS)Nr) r rrr r!r}r rir;r$r~)r%r& first_macxs r$test_valid_multiple_digest_or_verifyz0OcbFSMTests.test_valid_multiple_digest_or_verifyss|4=III di   MMOO q 9 9A   Y  8 8 8 8s|4=III di   q % %A MM) $ $ $ $ % %rctj|jtj|j}||j||j\}}tj|jtj|j}||j|||}| |j|dSr-) r rrr r!r}r r"r#r$)r%r&r(r)r's r0test_valid_encrypt_and_digest_decrypt_and_verifyz&# & &D 4 4 4   ,,,@@@@@@@     % % % ( ( ( - - - 1 1 1)))))rrctd|dzdz zt|z}d}tdD]}td|z}td|zdz|dz}tj|tj||dz}||||||z|zz }td|zdz|dz}tj|tj||dz}||||z|zz }td|zdz|dz}tj|tj||dz}|||||zz }td |dz}tj|tj||dz}||||zS) z.Implement the algorithm at page 18 of RFC 7253rr_r9rrrxr\rwi) rr;rr rr r}r.ri) keylentaglennoncelenkeyCrsSNr&s r algo_rfc7253rs q''Vq[1_ %V 4C A 3ZZ00 GGaK !a%!)X] 3 3cl!Vq[III a V^^A  !1!1 1FMMOO CC !a%!)X] 3 3cl!Vq[III V^^A  !1!1 1FMMOO CC !a%!)X] 3 3cl!Vq[III a V^^    //c8q=))A WS#,a1 E E EF MM! >>  fmmoo --rc0eZdZdZdZdZdZdZdZdZ dS) OcbRfc7253Test 000102030405060708090A0B0C0D0E0F))BBAA99887766554433221100r8r8 785407BFFFC8AD9EDCC5520AC9111EE6)BBAA998877665544332211010001020304050607r06820B3657B6F615A5725BDA0D3B4EB3A257C9AF1F8F03009)BBAA99887766554433221102rr8 81017F8203F081277152FADE694A0A00)BBAA99887766554433221103r8r045DD69F8F5AAE72414054CD1F35D82760B2CD00D2F99BFA9)BBAA99887766554433221104rr@571D535B60B277188BE5147170A9A22C3AD7A4FF3835B8C5701C1CCEC8FC3358)BBAA99887766554433221105rr8 8CF761B6902EF764462AD86498CA6B97)BBAA99887766554433221106r8r@5CE88EC2E0692706A915C00AEB8B2396F40E1C743F52436BDF06D8FA1ECA343D)BBAA998877665544332211070000102030405060708090A0B0C0D0E0F1011121314151617rP1CA2207308C87C010756104D8840CE1952F09673A448A122C92C62241051F57356D7F3C90BB0E07F)BBAA99887766554433221108rr8 6DC225A071FC1B9F7C69F93B0F1E10DE)BBAA99887766554433221109r8rP221BD0DE7FA6FE993ECCD769460A0AF2D6CDED0C395B1C3CE725F32494B9F914D85C0B1EB38357FF)BBAA9988776655443322110A@000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1Fr`BD6F6C496201C69296C11EFD138A467ABD3C707924B964DEAFFC40319AF5A48540FBBA186C5553C68AD9F592A79A4240)BBAA9988776655443322110Brr8 FE80690BEE8A485D11F32965BC9D2A32)BBAA9988776655443322110Cr8r`2942BFC773BDA23CABC6ACFD9BFD5835BD300F0973792EF46040C53F1432BCDFB5E1DDE3BC18A5F840B52E653444D5DF)BBAA9988776655443322110DP000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627rpD5CA91748410C1751FF8A2F618255B68A0A12E093FF454606E59F9C1D0DDC54B65E8628E568BAD7AED07BA06A4A69483A7035490C5769E60)BBAA9988776655443322110Err8 C5CD9D1850C141E358649994EE701B68)BBAA9988776655443322110Fr8rp4412923493C57D5DE0D700F753CCE0D1D2D95060122E9F15A5DDBFC5787E50B5CC55EE507BCB084E479AD363AC366B95A98CA5F3000B1479) 0F0E0D0C0B0A09080706050403020100rrrh1792A4E31E0755FB03E31B22116E6C2DDF9EFD6E33D536F1A0124B0A55BAE884ED93481529C76B6AD0C515F4D1CDD4FDAC4F02AA) )rr 67E944D23256C5E0B6C61FA22FDF1EA2)r F673F2C3E7174AAE7BAE986CA9F29E17)r D90EB8E9C977C88B79DD793D7FFA161C)r`77A3D8E73589158D25D01209)rr05D56EAD2752C86BE6932C5E)rr5458359AC23B0CBA9E6330DD)r@192C9B7BD90BA06A)rr0066BC6E0EF34E24)rr7D4EA5D445501CBEctt|j}|jD]Q}d|D\}}}}|dd|dd}}t j|tj|}|||||z} | || | || t j|tj|}||| || z} | || | |SdS)NcFg|]}tt|Srqrrrrrs rruz(OcbRfc7253Test.test1..s$!>!>!>a)AaDD//!>!>!>rir) rrtv1_keytv1r rr r}r.r$rirPr~) r%rtvraadr'r(mac_tagr&rr*s rtest1zOcbRfc7253Test.test1sZ$,((( # #B!>!>2!>!>!> E3BTcT(BsttHBWS#,e<<.s$"E"E"Eq9QqTT??"E"E"Erirr\) tv2r rr r}r.r$rirPr~) r%rrrr'r(rr&rr*s rtest2zOcbRfc7253Test.test2s5"E"EDH"E"E"EUCR#h344Gcl%DDD cnnR  6>>#3#33 S!!! &--//222cl%DDD cnnR  6>>#3#33 S!!! grc|jD]G\}}}t||d}|tt ||HdS)Nr)tv3rr$rr)r%rrrSresult2s rtest3zOcbRfc7253Test.test3s\&*h < < "FFF"66266G   Yqyy117 ; ; ; ; < .checks6!&&(;;F   VYs^^ 4 4 4 4 4rrr C47F5F0341E15326D4D1C46F47F05062r 95B9167A38EB80495DFC561A8486E109r AFE1CDDB97028FD92F8FB3C8CFBA7D83rF471B4983BA80946DF217A545AE828BC51C24D85FA5CC7B28C8335982E2B734616CAD14CrB553F74B85FD1E5B3B49D20E513531F9ED6DA5B1216BF8BBr CA8AFCA031BAC3F480A583BD6C50A547 D170C1DF356308079DA9A3F619147148 57F94381F2F9231EFB04AECD323757C33A618B2531ED39F260C750DC9071EB89FEDBADDA88FD286EFDF0EFB97F21A39AC4BAB5ACFAB2FF3A8DD82A13AC01D912BD0737D39D1FD0B500EA4ECFr 9E043A7140A25FB91F43BCC9DD7E0F46 680000E53908323A7F396B955B8EC641 8304B97FAACDA56E676602E1878A7E6F81F978AC9867E825D339847DEFCF2D60B24926ADA48CF5B184961DC56E917B165E58C174227AEE6C9D905A61541DE691B9E1A2F9B0E761381C7129FCrq)r%r2s` rtest_3zOcbDkgTest.test_3s 5 5 5 5 5 c3?@@@ c3?@@@ c3?@@@ c2s6777 c2s6777 c2s6777 c2s./// c2s./// c2s./// c3?@@@ c3?@@@ c3?@@@ c2s6777 c2s6777 c2s6777 c2s./// c2s./// c2s./// c3?@@@ c3?@@@ c3?@@@ c2s6777 c2s6777 c2s6777 c2s./// c2s./// c2s./////rctd}td}td}td}td}t|t|z }td}tj|tj|dd|}||||\} } ||| | zdS)NEEDDCCBBAA9988776655443322110Drrh07E903BFC49552411ABC865F5ECE60F6FAD1F5A9F14D3070FA2F1308A563207FFE14C1EEA44B22059C7484319D8A2C53C236A7B3hBA015C4E5AE54D76C890AE81BD40DC5703EDC30E8AC2A58BC5D8FA4D61C5BAE6C39BEAC435B2FD56A2A5085C1B135D770C8264B7r\)rrAr rr r}r"r$) r%rrAPrr] buggy_resultr&C_out2tag_out2s r test_2_bugfixzOcbDkgTest.test_2_bugfix(s:;;:;; 9 : : 9 : : ! " "a&&3q66/ !",-- cl%*gNNN a!44Q77 v'899999rN)rrr__doc__r-rNrYrqrrrrsHCC111.%0%0%0N:::::rrcg}|ttz }|ttz }|ttz }|ttz }|Sr0)r rrrr)configtestss r get_testsr^AsT E _X & &&E _[ ) ))E _^ , ,,E _Z ( ((E Lr__main__cBtjtSr0)unittest TestSuiter^rqrrsuitercKs!)++...rrc) defaultTest)rabinasciirCrypto.Util.py3compatrrrCrypto.Util.numberrCrypto.SelfTest.loaderrCrypto.SelfTest.st_commonr Crypto.Cipherr Crypto.Hashr rTestCaserrrrrr^rrcmainrqrrrns>2222222222,,,,,,444444555555 888K-K-K-K-K-x K-K-K-\B)B)B)B)B)(#B)B)B)J...:E<E<E<E<E