ƺhFddlZddlmZddlmZddlmZddlmZm Z ddl m Z ddl m Z ddlmZd ZGd d ejZGd d ejZGddejZGddejZifdZedkrdZejddSdS)N unhexlify)list_test_cases)load_test_vectors_wycheproof)tobytesbchr)AES)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_CCM.pyget_tag_randomr+s) ss|44s|44 Vb))) FF+++s|T]CC ^^DI & &s|4=III V^^DI6677777rcv|ttj|jtjddS)N test12345678r) assertRaises TypeErrorr rrr r%s rtest_nonce_must_be_bytesz!CcmTests.test_nonce_must_be_bytesMs: )SWdlCL /  1 1 1 1 1rc (|ttj|jtjd|ttj|jtjt ddz|ttj|jtjt ddztddD]8}tj|jtjt d|z9dS)Nrr)r4 ValueErrorr rrr rrange)r%xs rtest_nonce_lengthzCcmTests.test_nonce_lengthQs *cgt|S\ #  % % % *cgt|S\ $Q!   - - - *cgt|S\ $Q"   . . .q&!! C CA GDL#,d1ggk B B B B B C Crctj|jtj|j}||jtjdSNr)r rrr r!r$ block_sizer%r&s rtest_block_sizezCcmTests.test_block_size[s?s|4=III *CN;;;;;rctj|jtj|j}||j|jtj|jtjj}tj|jtjj}|t|d|||dS)Nrr,) r rrr r!r$rr-r.)r%r&r/r0s rtest_nonce_attributezCcmTests.test_nonce_attribute_ss|4=III t}555s|44:s|44: Vb))) FF+++++rcT|ttj|jtj|jd|ttj|jtj|jdtj|jtj|jddS)Nr<)runknownF)r use_aesni)r4r5r rrr r!r6s rtest_unknown_parametersz CcmTests.test_unknown_parametersis )SWdlCL- , , , )SWdlCL $ q  : : :  cl$- ! ! ! ! ! !rcdD]\}tj|jtj|j}t ||d}||d]dS)Nr"r#rr)r rrr r!getattrr$)r%funcr&results rtest_null_encryption_decryptionz(CcmTests.test_null_encryption_decryptiontsi( * *DWT\3r4r=r rrr r!encrypt_and_digestr r$r-)r%rZr&_macs r test_mac_lenzCcmTests.test_mac_lens-Q** D DG   j#'4<$(M7  D D D DQ** 0 0GWT\3>s|4=#+a<111 di    *fndi@@@s|4=#+a<111 di    *fm444s|4=#+a<111 di    *fndi@@@s|4=III di   mmoos|4=#+a<111 di    *fmS99999rct|j}tj|jtj|j|dz}||j|t|j tj|jtj|j|dz }|t|j|jdS)Nr9rmsg_len) r-r r rrr r!r"r4r=ri)r%rvr&s r/test_shorter_and_longer_plaintext_than_declaredz8CcmTests.test_shorter_and_longer_plaintext_than_declaredsty>>s|4=!)A///ty!!! *fm444s|4=!)A/// *fndi@@@@@rc(t|j}tj|jtj|j}||j\}}tj|jtj|j|dz}||| t|j |tj|jtj|j|dz }| t|j|dS)Nrr9ry) r-r r rrr r!r]r#r4r=ru)r%rvr&r(r_s r%test_shorter_ciphertext_than_declaredz.CcmTests.test_shorter_ciphertext_than_declaredsty>>s|4=III++DI66Cs|4=!)A///r *fmS999s|4=!)A/// *fnb99999rctdd}tdd}tj|jtj|j}||||\}}d}dD]}tj|jtj|jdd}|||D]}||d} |||D]}| ||z } | || | |dD]}tj|jtj|jdd}|||D]}||d} |||D]}| | |z } | || | | |dS) Nzauthenticated datarrc\fdtdtDS)Nc*g|]}||zSr).0i chunk_lengthr s r zBCcmTests.test_message_chunks..break_up..s3###qD1\>)*###rr)r>r-)r rs``rbreak_upz.CcmTests.test_message_chunks..break_upsJ#####E!SYY 5"5"### #r) r9rYrWr< r(Prrrzror) rr rrr r!rrr]r#r$rur"ri) r% auth_datarr& ciphertextref_macrrchunkr)ct2s rtest_message_chunkszCcmTests.test_message_chunkss*##7== ";44 s|4=III i   $77 BB G # # # @ # #LWT\3>## W%%% h'''  6664<((T]++di(( '&, (***%rr &! y!!!' "1" ,,Yw-?-?8ATATUU G,,,,,rcvtt|j}tt|j}tt|j}tt|j}t j|jt j|j}||j| |j}| }t j|t j|}d|dd<d|dd<||d|dd<| |} 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 rrr"rir$rrd) r%key_mvnonce_mv header_mvdata_mvrr(rrrrrrs rtest_memoryviewzCcmTests.test_memoryviewNsrIdl3344i 6677y3344 Yty1122'$,, $ /// ty!!! __TY ' 'nn'&, (***%rr &! y!!!' "1" //'**% >>## W%%% h'''  666Idl3344i 6677y3344 '&, (***%rr &! y!!!' "1" ,,Z-@-@*XBVBVWW G,,,,,rctd}tj|jtj|j}||}|}td}tj|jtj|j}|||}|||||dtj|jtj|j}| ||}|||||dtj|jtj|j}| ||\}}|||||d|||tj|jtj|j}| |||}|||||ddSNs55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555rroutput) r rrr r!r"rirr$r#r]rd)r%r'r&r(rrrestag_outs rtest_output_paramzCcmTests.test_output_param}s s|4=III ^^B  mmoo3s|4=IIInnRn// V$$$ d###s|4=IIInnRn// V$$$ d###s|4=III00F0CC W V$$$ d### g&&&s|4=III''C'?? V$$$ d#####rc"d}tj|jtj|j}||}t td}tj|jtj|j}||||||tj|jtj|j}| |||||dSr) r rrr r!r"rrr$r#)r%r'r&r(rs rtest_output_param_memoryviewz%CcmTests.test_output_param_memoryviews s|4=III ^^B  IcNN++s|4=IIIr&))) V$$$s|4=IIIr&))) V$$$$$rcd}tj|jtj|j}||}tj|jtj|j}|t|j|dtj|jtj|j}|t|j|dtd}tj|jtj|j}|t|j||tj|jtj|j}|t|j||dS)Ns5555555555555555rs0000000000000000rrq) r rrr r!r"r4r5r#rr=)r%r'r&r(shorter_outputs rtest_output_param_negzCcmTests.test_output_param_negs1 s|4=III ^^B  s|4=III )V^RHHHs|4=III )V^RHHH"2s|4=III *fnbPPPs|4=III *fnbPPPPPrN)__name__ __module__ __qualname__rrr!r r*r1r7r@rErGrKrQrSrUr`rfrlrsrwr{r}rrrrrrrrrrr/snY++G~k2..H >&# & &D""" 8 8 8111CCC<<<,,, ! ! !*** :::JJJ'''$ ' ' '""" @ @ @:::> A A A : : :)7)7)7V------^------^$$$: % % %QQQQQrrceZdZeddZeddZeddZdZdZdZ d Z d Z d Z d Z d ZdZdZdZdZdS) CcmFSMTestsrrrrr c dD]}dt|jfD]}tj|jtj|j||}||j}|}tj|jtj|j||}| || |dSN)Nrrrorz) r-r r rrr r!r"rir#rur%rorzr&r(r_s r-test_valid_init_encrypt_decrypt_digest_verifyz9CcmFSMTests.test_valid_init_encrypt_decrypt_digest_verifys" # #I #di..1 # #s|'+}+4)0222^^DI..mmoos|'+}+4)0222r""" c"""" # # #rc dt|jfD]}dD]}tj|jtj|j||}||j|}tj|jtj|j||}||j| |dSr) r-r r rrr r!rrriru)r%rorzr&r_s r$test_valid_init_update_digest_verifyz0CcmFSMTests.test_valid_init_update_digest_verifysDI/ # #I$ # #s|'+}+4)0222 di(((mmoos|'+}+4)0222 di((( c"""" # # #rc :dt|jfD]}dt|jfD]}tj|jtj|j||}||j||j}| }tj|jtj|j||}||j| || |dS)Nr) r-r r rrr r!rrr"rir#rurs rtest_valid_full_pathz CcmFSMTests.test_valid_full_pathsDI/ # #I #di..1 # #s|'+}+4)0222 di(((^^DI..mmoos|'+}+4)0222 di(((r""" c""""# # # #rctj|jtj|j}|dSrB)r rrr r!rirDs rtest_valid_init_digestz"CcmFSMTests.test_valid_init_digests/s|4=III rctj|jtj|j}|}tj|jtj|j}||dSrB)r rrr r!riru)r%r&r_s rtest_valid_init_verifyz"CcmFSMTests.test_valid_init_verifys_s|4=IIImmoos|4=III crc dD]}dd|j|jdzfD]}|d}nt|}tj|jtj|jd|}|||t||}||j||j||j||jdS)NrMs3333@r) r r-r rrr r!rrrN)r% method_namerror&methods r&test_valid_multiple_encrypt_or_decryptz2CcmFSMTests.test_valid_multiple_encrypt_or_decrypt s/ " "K"FDI"i$.0 " " $ $II #IIs|'+})++4666(MM),,, 55ty!!!ty!!!ty!!!ty!!!!! " " "rctj|jtj|j}||j|}tdD]*}| ||+tj|jtj|j}||jtdD]}| |dS)Nrr[) r rrr r!rrr rir>r$ru)r%r& first_macr?s r$test_valid_multiple_digest_or_verifyz0CcmFSMTests.test_valid_multiple_digest_or_verify"ss|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|dSrB) r rrr r!rrr r]rdr$)r%r&r(r_r's r0test_valid_encrypt_and_digest_decrypt_and_verifyz&" % %D###(###(###, """* % % % ( ( ( @ @ @ - - - 1 1 1)))))rrceZdZdZdddddeddDd zd d d d dfdddddddddddddddddd d!d"d#d$d%d&gZd'eDZd(Zd)S)* TestVectorsz`Class exercising the CCM test vectors found in Appendix C of NIST SP 800-38C and in RFC 3610)0001020304050607202122237162015b4dac255d 404142434445464748494a4b4c4d4e4f10111213141516) 000102030405060708090a0b0c0d0e0f 202122232425262728292a2b2c2d2e2f d2a1f0e051ea5f62081a7792073d593d 1fc64fbfaccdr1011121314151617)(000102030405060708090a0b0c0d0e0f101112130202122232425262728292a2b2c2d2e2f30313233343536370e3b201a9f5b71a7a9b1ceaeccd97e70b6176aad9a4428aa5484392fbc1b09951r101112131415161718191a1bcJg|] }tddD] }d|dz|zz!S)rrz%02X)r>)rr?ys rrzTestVectors.s:PPP!E!BKKPPqFad1f%PPPPrrr@202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f@69915dad1e84c6376a68c2967e4dab615ae0fd1faec44cc484828529463ccf72b4ac6bec93e8598e7f0dadbcea5br101112131415161718191a1b1c)r.08090a0b0c0d0e0f101112131415161718191a1b1c1d1e.588c979a61c663d2f066d0c2c0f989806d5f6b61dac38417e8d12cfdf926e0 c0c1c2c3c4c5c6c7c8c9cacbcccdcecf00000003020100a0a1a2a3a4a5)r008090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f072c91a36e135f8cf291ca894085c87e3cc15c439c9e43a3ba091d56e10400916r00000004030201a0a1a2a3a4a5)r208090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20251b1e5f44a197d1da46b0f8e2d282ae871e838bb64da8596574adaa76fbd9fb0c5r00000005040302A0A1A2A3A4A5)000102030405060708090a0b&0c0d0e0f101112131415161718191a1b1c1d1e&a28c6865939a9a79faaa5c4c2a9d4a91cdac8c96c861b9c9e61ef1r00000006050403a0a1a2a3a4a5)r(0c0d0e0f101112131415161718191a1b1c1d1e1f(dcf1fb7b5d9e23fb9d4e131253658ad86ebdca3e51e83f077d9c2d93r00000007060504a0a1a2a3a4a5)r*0c0d0e0f101112131415161718191a1b1c1d1e1f20*6fc1b011f006568b5171a42d953d469b2570a4bd87405a0443ac91cb94r00000008070605a0a1a2a3a4a5)rr.0135d1b2c95f41d5d1d4fec185d166b8094e999dfed96c048c56602c97acbb7490r00000009080706a0a1a2a3a4a5)rr07b75399ac0831dd2f0bbd75879a2fd8f6cae6b6cd9b7db24c17b4433f434963f34b4r0000000a090807a0a1a2a3a4a5)rr282531a60cc24945a4b8279181ab5c84df21ce7f9b73f42e197ea9c07e56b5eb17e5f4er0000000b0a0908a0a1a2a3a4a5)rr&07342594157785152b074098330abb141b947b566aa9406b4d999988ddr0000000c0b0a09a0a1a2a3a4a5)rr (676bb20380b0e301e8ab79590a396da78b834934f53aa2e9107a8b6c022cr0000000d0c0b0aa0a1a2a3a4a5)rr*c0ffa0d6f05bdb67f24d43a4338d2aa4bed7b20e43cd1aa31662e7ad65d6dbr0000000e0d0c0ba0a1a2a3a4a5)0be1a88bace018b1.08e8cf97d820ea258460e96ad9cf5289054d895ceac47c.4cb97f86a2a4689a877947ab8091ef5386a6ffbdd080f8e78cf7cb0cddd7b3 d7828d13b2b0bdc325a76236df93cc6b00412b4ea9cdbe3c9696766cfa)63018f76dc8a1bcb09020ea6f91bdd85afa0039ba4baff9bfb79c7028949cd0ec04ccb1e7ca981befaa0726c55d378061298c85c92814abc33c52ee81d7d77c08ar*0033568ef7b2633c9696766cfa)aa6cfa36cae86b402b916e0eacc1c00d7dcec68ec0b3bbb1a02de8a2d1aa346132e2b1d23a2220ddc0ac900d9aa03c61fcf4a559a4417767089708a776796edb723506r*00103fe41336713c9696766cfa)d0d0735c531e1becf049c244&12daac5630efa5396f770ce1a66b21f7b2101c&14d253c3967b70609b7cbb7c499160283245269a6f49975bcadeafr*00764c63b8058e3c9696766cfa)77b60f011c03e1525899bcae(e88b6a46c78d63e52eb8c546efb5de6f75e9cc0d(5545ff1a085ee2efbf52b2e04bee1e2336c73e3f762c0c7744fe7e3cr*00f8b678094e3b3c9696766cfa)cd9044d2b71fdb8120ea60c0*6435acbafb11a82e2f071d7ca4a5ebd93a803ba87f*009769ecabdf48625594c59251e6035722675e04c847099e5ae0704551r*00d560912d3f703c9696766cfa)d85bc7e69f944fb8.8a19b950bcf71a018e5e6701c91787659809d67dbedd18.bc218daa947427b6db386a99ac1aef23ade0b52939cb6a637cf9bec2408897c6bar*0042fff8f1951c3c9696766cfa)74a0ebc9069f5b3701761433c37c5a35fc1f39f406302eb907c6163be38c9843705810e6fd25874022e80361a478e3e9cf484ab04f447efff6f0a477cc2fc9bf548944r*00920f40e56cdc3c9696766cfa)44a3aa3aae6475ca2a434a8e58500c6e41530538862d686ea9e81301b5ae4226bfa2f2beed7bc5098e83feb5b31608f8e29c38819a89c8e776f1544d4151a4ed3a8b87b9cer*0027ca0c7120bc3c9696766cfa)ec46bb63b02520c33c49fd70&b96b49e21d621741632875db7f6c9243d2d7c2&31d750a09da3ed7fddd49a2032aabf17ec8ebf7d22c8088c666be5c197r*005b8ccbcd9af83c9696766cfa)47a65ac78b3d594227e85e71(e2fcfbb880442c731bf95167c8ffd7895e337076(e882f1dbd38ce3eda7c23f04dd65071eb41342acdf7e00dccec7ae52987dr*003ebe94044b9a3c9696766cfa)6e37a6ef546d955d34ab6059*abf21c0b02feb88f856df4a37381bce3cc128517d4*f32905b88a641b04b9c9ffb58cc390900f3da12ab16dce9e82efa16da62059r*008d493b30ae8b3c9696766cfac&g|]}d|DS)c,g|]}t|Srr)rr?s rrz!TestVectors..,s...aYq\\...rr)rtvs rrzTestVectors.,s'JJJ2..2...JJJrc |jD]\}}}}}}tj|tj|t |}||||\}} |||||| tj|tj|t |}|||||} ||| dS)N)rZ) test_vectorsr rr r-rrr]r$rd) r% assoc_datar'r(r_keyrr&rmac2r)s rrunTestzTestVectors.runTest.s373D & & /JBS%WS#,s3xxHHHF MM* % % %11"55IC   R % % %   S$ ' ' 'WS#,s3xxHHHF MM* % % %++B44C   R % % % % & &rN) rrr__doc__joinr>test_vectors_hexrgrkrrrrrss**     & 77PPuuQr{{PPP Q QSV V L L ( , &  ( (  ( (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (Ml\KJ9IJJJL & & & & &rrc>eZdZdZdZdZdZdZdZdZ dZ d S) TestVectorsWycheproofc ntj|||_||_d|_dS)NNone)unittestTestCase__init___wycheproof_warnings _extra_params_id)r%wycheproof_warnings extra_paramss rruzTestVectorsWycheproof.__init__@s4""4((($7!)rc@d}tdddd|i|_dS)Nc|ddzS)NtagSizer)groups r filter_tagz/TestVectorsWycheproof.setUp..filter_tagHs#q( (r)Cipher wycheproofzaes_ccm_test.jsonzWycheproof AES CCMtag_size) group_tag)rre)r%rs rsetUpzTestVectorsWycheproof.setUpFsA ) ) )//G/B/C:Dj9QSSSrc|jSN)rxr6s rshortDescriptionz&TestVectorsWycheproof.shortDescriptionPs xrc~|jr3|jr.ddl}|d|jd|jddSdSdS)NrzWycheproof warning: z ())warningrvwarningswarnrxcomment)r%rers rrzTestVectorsWycheproof.warnSsd : R$3 R OOO MMM4888RZZZP Q Q Q Q Q R R R Rrcdt|jz|_ tj|jtj|jfd|ji|j }n#t$r}t|jtdddvr dt|vr|j rJYd}~dS|jtdddvr d t|vr|j rJYd}~dS|d}~wwxYw||j||j\}}|j rM|||j|||j||dSdS) NzWycheproof Encrypt CCM Test #rZr<r;rYLength of parameter 'nonce'r[r\Parameter 'mac_len')stridrxr rrir ivrrwr=r-r>validrraadr]msgr$r(rr)r%rer&er(rs r test_encryptz"TestVectorsWycheproof.test_encryptXs2SZZ? WRVS\2566"+6"&"466FF   25zzq&!!4!4449VZ]^_Z`Z`9`9`8##|{%61"5"555:OSVWXSYSY:Y:Y8##|G   bf++BF33C 8    R ' ' '   S"& ) ) ) IIbMMMMM  s#4A C!?C"2CCC!cdt|jz|_ tj|jtj|jfd|ji|j }n#t$r}t|jtdddvr dt|vr|j rJYd}~dS|jtdddvr d t|vr|j rJYd}~dS|d}~wwxYw||j ||j|j}|j sJ|||j||dS#t$r |j rJYdSwxYw) NzWycheproof Decrypt CCM Test #rZr<r;rYrr[r\r)rrrxr rrir rrrwr=r-r>rrrrrdr(rr$rr)r%rer&rr's r test_decryptz"TestVectorsWycheproof.test_decryptns2SZZ? WRVS\2566"+6"&"466FF   25zzq&!!4!4449VZ]^_Z`Z`9`9`8##|{%61"5"555:OSVWXSYSY:Y:Y8##|G   bf **25"&99B8OO8   R ( ( ( IIbMMMMM    x  <    s54A C!?C"2CCC!? EE10E1cdt|jz|_t|jt dddvst|jdkrdStj|j tj |jfd|j i|j }| |jt|jdt|jdz zd z}|t"|j||jdS) Nz%Wycheproof Corrupt Decrypt CCM Test #r<r;rYrrZr9)rrrxr-rr>r(r rrir rrwrrrr r4r=rdr)r%rer& ct_corrupts rtest_corrupt_decryptz*TestVectorsWycheproof.test_corrupt_decrypts:SZZG ru::U1fa00 0 0CJJ!OO Fru22bk2"022 bfBE7c"%jj1n#=#GHH  *f&?RVTTTTTrc|jD]A}||||||BdSr)rerrr)r%res rrkzTestVectorsWycheproof.runTests\' * *B   b ! ! !   b ! ! !  % %b ) ) ) ) * *rN) rrrrurrrrrrrkrrrrprp>s SSSRRR ,2UUU*****rrpc|d}g}|ttz }|ttz }|t gz }|t |gz }|S)Nry)getrrrrrp)configrytestss r get_testsrsj **%:;; E _X & &&E _[ ) ))E kmm_E #$788 99E Lr__main__cFtjtdSr)rs TestSuiterrrrsuiters9;;'''''rr) defaultTest)rsbinasciirCrypto.SelfTest.st_commonrCrypto.SelfTest.loaderrCrypto.Util.py3compatrr Crypto.Cipherr Crypto.Hashr rcr rrtrrrrprrrmainrrrrs>555555??????//////// %%%%%%888JQJQJQJQJQx JQJQJQZ t)t)t)t)t)(#t)t)t)nH&H&H&H&H&(#H&H&H&VX*X*X*X*X*H-X*X*X*v     z(((HMg&&&&&&r