ƺhCdZddlZddlmZmZmZddlmZddlm Z GddZ e fdZ Gd d ej Z Gd d e ZGd dej ZGddej ZGddej ZGddej ZGddej ZGddej ZefdZdZdS)z&Self-testing for PyCrypto hash modulesN)a2b_hexb2a_hexhexlify)b)strxor_cceZdZdS) _NoDefaultN)__name__ __module__ __qualname__/builddir/build/BUILD/imunify360-venv-2.5.2/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/SelfTest/Cipher/common.pyr r !srr cX ||}n#t$r|tur|cYSwxYw||=|S)zAGet an item from a dictionary, and remove it from the dictionary.)KeyErrorr )dkdefaultretvals r_extractr"sR1  j  ! Ms  $$c,eZdZdZdZdZdZdZdS)CipherSelfTestctj|||_|}t |d|_tt |d|_tt |d|_ tt |d|_ t |dd|_ t |dd|_ t |dd|_ |j rt|j |_ t |dd}t||_|qt!|jd |z|_t |d d|_|jt |d d|_|jt|j|_n=d|_t |d d|_|jt|j|_||_dS N descriptionkey plaintext ciphertext module_name assoc_datamacmodeMODE_ivnonceunittestTestCase__init__modulecopyrrrrrrrr r!str mode_namegetattrr"r$ extra_paramsselfr*paramsr"s rr)zCipherSelfTest.__init__0s""4((( #FM::Xfe,,--8FK8899HV\::;;#FM4@@"6<>>FE400 ? #{{DH--T   Wt^<>>>rct|j}t|j}g}|jrd|jD}d}d}t dD]}|}|}|D],} || || -t||} t| |} |r,| || | || | | }}| |j|| |j||j ret| } | |j | | t|j dSdS)NcFg|]}tt|Sr )rr.0xs r z*CipherSelfTest.runTest..os$BBBQ71Q44==BBBr)rrrr ranger<updaterencryptdecrypt assertEqualr!digestverify) r1rrr ctpticipherdeciphercompctXptXr!s rrunTestzCipherSelfTest.runTestjsDN++ T_--  ? CBB$/BBBJ   q  AYY[[Fyy{{H# & & d###%%%%&..3344C(**:6677C *  S)))  S)))#BB "--- ,,, 8 /&--//**C   TXs + + + OOGDH-- . . . . . / /rN)r r r r)r6r<rArXr rrrr.s`$#$#$#L    : : :??? %/%/%/%/%/rrceZdZdZdZdS)CipherStreamingSelfTestcD|j}|j|d|jdz }|dS)Nz in z modez# should behave like a stream cipher)rr"r-)r1descs rr6z(CipherStreamingSelfTest.shortDescriptions4 9 DT^^^5 5D:>$$@@rc &t|j}t|j}g}|}t dt |dD]5}|||||dz6ttd |}| |j|g}|}t dt |dD]5}|||||dz6ttd |}| |j|dS)Nr) rrrr<rIlenappendrKrrjoinrM)r1rrct3rSrRpt3s rrXzCipherStreamingSelfTest.runTestsVDN++ T_-- q#i..!,, 9 9A JJv~~i!A#&677 8 8 8 8aeejjoo&& #...q#j//1-- : :A JJv~~j1Q3&788 9 9 9 9aeejjoo&& -----rN)r r r r6rXr rrrZrZs5AAA .....rrZc eZdZdZdZdZdS) RoundtripTestc@ddlm}tj|||_||j|_t|d|_ dt|dz|_ | dd|_ dS)Nr)Randomrdrr)Cryptorhr'r(r)r*get_random_bytes block_sizer$rrrgetr)r1r*r2rhs rr)zRoundtripTest.__init__s!!!!!!""4((( ))&*;<<VE]##q !4555!::mT::rc|jdS)Nz6 .decrypt() output of .encrypt() should not be garbled)rr5s rr6zRoundtripTest.shortDescriptionsQUQaQaQaccrcf|jj}|jt|j|}||j}|jt|j|}||}||j|dSr4) r*MODE_ECBr9rrrKrrLrM)r1r"encryption_cipherrdecryption_cipherdecrypted_plaintexts rrXzRoundtripTest.runTests{# KOOGDH,=,=tDD&..t~>>  KOOGDH,=,=tDD/77 CC )<=====rN)r r r r)r6rXr rrrfrfsD;;;ddd>>>>>rrfc&eZdZdZdZdZdZdS) IVLengthTestctj|||_t |d|_dSNrr'r(r)r*rrr1r*r2s rr)zIVLengthTest.__init__7""4((( VE]##rcdS)NzTCheck that all modes except MODE_ECB and MODE_CTR require an IV of the proper lengthr r5s rr6zIVLengthTest.shortDescriptionseerc |t|jjt |j|jjtddS)Nr_) assertRaises TypeErrorr*r9rrrprr5s rrXzIVLengthTest.runTestsH )T[_gdh6G6G $aee - - - - -rc d|jjzS)N)r*rlr5s r_dummy_counterzIVLengthTest._dummy_countersdk,,,rN)r r r r)r6rXrr rrrurusS$$$ fff--------rruceZdZdZdZdS)NoDefaultECBTestctj|||_t |d|_dSrwrxrys rr)zNoDefaultECBTest.__init__rzrcv|t|jjt |jdSr4)r}r~r*r9rrr5s rrXzNoDefaultECBTest.runTests. )T[_gdh6G6GHHHHHrNr r r r)rXr rrrrs7$$$ IIIIIrrceZdZdZdZdS) BlockSizeTestctj|||_t t |d|_dSrw)r'r(r)r*rrrrys rr)zBlockSizeTest.__init__s?""4((( 1VE]++,,rc|j|j|jj}||j|jjdSr4)r*r9rrprMrl)r1rSs rrXzBlockSizeTest.runTestsB4;+?@@ *DK,BCCCCCrNrr rrrrs7--- DDDDDrrc$eZdZdZdZdZdZdS) ByteArrayTestz;Verify we can use bytearray's for encrypting and decryptingctj|||_|}t |d|_tt |d|_tt |d|_ tt |d|_ t |dd|_ t |dd|_ t |dd|_ |j rt|j |_ t |dd}t||_|qt!|jd |z|_t |d d|_|jt |d d|_|jt|j|_n=d|_t |d d|_|jt|j|_||_dSrr&r0s rr)zByteArrayTest.__init__""4((( #FM::Xfe,,--8FK8899HV\::;;#FM4@@"6<>>FE400 ? #{{DH--T   Wt^<.)s,MMM9WQqTT]]33MMMr)rrrr r<rJrrKrrLrMr!rNrO r1rrr rSrTrUrPrQr!s rrXzByteArrayTest.runTest#svDN++ T_--  ? NMMT_MMMJ99;; " "D MM$    OOD ! ! ! ! V^^Ii$8$899 : : X%%i &;&;<< = = "--- ,,, 8 :&--//**C   TXs + + + OOIgdh&7&788 9 9 9 9 9 : :rNr r r __doc__r)r<rXr rrrrsHEE######J : : ::::::rrc$eZdZdZdZdZdZdS)MemoryviewTestz;Verify we can use memoryviews for encrypting and decryptingctj|||_|}t |d|_tt |d|_tt |d|_ tt |d|_ t |dd|_ t |dd|_ t |dd|_ |j rt|j |_ t |dd}t||_|qt!|jd |z|_t |d d|_|jt |d d|_|jt|j|_n=d|_t |d d|_|jt|j|_||_dSrr&r0s rr)zMemoryviewTest.__init__Brrc|j}t|j}g}|j|jg}|j|t|jgz }|jj|g|Ri|Sr4r8r:s rr<zMemoryviewTest._newgr=rcRt|j}t|j}g}|jrd|jD}|}|}|D],}||||-t |t|}t | t|}| |j|| |j||j rrt | } | |j | | tt|j dSdS)Nc `g|]+}ttt|,Sr ) memoryviewrrrDs rrGz*MemoryviewTest.runTest..ys,NNN:gaddmm44NNNr)rrrr r<rJrrKrrLrMr!rNrOrs rrXzMemoryviewTest.runTestssvDN++ T_--  ? ONNdoNNNJ99;; " "D MM$    OOD ! ! ! ! V^^Jy$9$9:: ; ; X%%j&<&<== > > "--- ,,, 8 ;&--//**C   TXs + + + OOJwtx'8'899 : : : : : ; ;rNrr rrrr?sHEE######J : : :;;;;;rrc g}d}tt|D]}||}i}t|dkr|\|d<|d<|d<nt|dkr|\|d<|d<|d<|d<n]t|dkr*|\|d<|d<|d<|d<} || n td t|fzd |vrd |d <|} t | d} t | d} t | d} t | d }t | dd}||}n|d kr | s d | d | }n d | d | d| }d||dz|fz}||d<||d<|||sR|t ||t||t||t||t||gz }d}| t|||S)NFr^rrrrUnsupported tuple size %dr"ECBp=, k=, %s #%d: %srT) rIr`rJAssertionErrorr+rrfrurrrrar)r*r test_dataadditional_paramstestsextra_tests_addedrRrowr2r/p2p_key p_plaintext p_ciphertextp_mode p_descriptionrr@s rmake_block_testsrsu E 3y>> " "7575l s88q==IL FVK &"6u XX]]`c ]VK &"6u vmG\G\ XX]]nq kVK &"6u vmG\^j MM, ' ' ' ' !<C{!JKK K"F6N[[]]U##r;// L11 "f%% ]D99  $'KK u__R__*5++uu=KK.9kk555""EK{AaC== $} +} '(((! % ff--VV,, 00ff--ff--  E!%   ^FF334444 Lrcg}d}tt|D]}||}i}t|dkr|\|d<|d<|d<nt|dkr|\|d<|d<|d<|d<n]t|dkr*|\|d<|d<|d<|d<}||n td t|fz|} t | d} t | d} t | d} t | dd} | | }n| s d | d | }n d | d | d | }d ||dz|fz}||d<||d<|s9|t ||gz }|t||d}|t|||t|||S)NFr^rrrrrrrrrrrrrT) rIr`rJrr+rrrarrrZ)r*rrrrrRrr2r/rrrrrrr@s rmake_stream_testsrsK E 3y>> " "+>+>l s88q==IL FVK &"6u XX]]`c ]VK &"6u vmG\G\ XX]]nq kVK &"6u vmG\^j MM, ' ' ' ' !<C{!JKK K[[]]U##r;// L11  ]D99  $'KK F F*5++uu=KK F/:kk555""EK{AaC== $} +}! % ff-- E LL77 8 8 8 $   ^FF33444 ,VV<<==== Lr)rr'binasciirrrCrypto.Util.py3compatrCrypto.Util.strxorrr rr(rrZrfrurrrrdictrrr rrrsS2-,..........######''''''%    a/a/a/a/a/X&a/a/a/F.....n...@>>>>>H%>>>0-----8$---"IIIIIx(IIIDDDDDH%DDDM:M:M:M:M:H%M:M:M:`M;M;M;M;M;X&M;M;M;`HLtvv<<<<|/////r