
    iC                        S r SSKrSSKJrJrJr  SSKJr  SSKJ	r	   " S S5      r
\
4S jr " S	 S
\R                  5      r " S S\5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r\" 5       4S jrS rg)z&Self-testing for PyCrypto hash modules    N)a2b_hexb2a_hexhexlify)b)strxor_cc                       \ rS rSrSrg)
_NoDefault!    N)__name__
__module____qualname____firstlineno____static_attributes__r       X/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/SelfTest/Cipher/common.pyr	   r	   !   s    $r   r	   c                 L     X   nX	 U$ ! [          a    U[        L a  e Us $ f = f)zAGet an item from a dictionary, and remove it from the dictionary.)KeyErrorr	   )dkdefaultretvals       r   _extractr   "   s;    
 	
M  j s   
 ##c                   2    \ rS rSrS rS rS rS rS rSr	g)	CipherSelfTest.   c                    [         R                  R                  U 5        Xl        UR	                  5       n[        US5      U l        [        [        US5      5      U l        [        [        US5      5      U l	        [        [        US5      5      U l
        [        USS 5      U l        [        USS 5      U l        [        USS 5      U l        U R                  (       a  [        U R                  5      U l        [        USS 5      n[        U5      U l        Ubw  [!        U R                  S	U-   5      U l        [        US
S 5      U l        U R$                  c  [        USS 5      U l        U R$                  b  [        U R$                  5      U l        O@S U l        [        US
S 5      U l        U R$                  b  [        U R$                  5      U l        X l        g Ndescriptionkey	plaintext
ciphertextmodule_name
assoc_datamacmodeMODE_ivnonceunittestTestCase__init__modulecopyr   r   r   r    r!   r"   r#   r$   r%   str	mode_namegetattrr&   r(   extra_paramsselfr.   paramsr&   s       r   r-   CipherSelfTest.__init__0   sg   ""4( #FM:Xfe,-8FK89HV\:;#FM4@"6<>FE40??{DH-TWt^<DIvtT2DGww"67D9ww"DGG* DIvtT2DGww"DGG*"r   c                     U R                   $ N)r   r5   s    r   shortDescriptionCipherSelfTest.shortDescriptionV   s    r   c                 $   U R                   R                  5       n[        U R                  5      n/ nU R                  b  U R                  /nU R
                  b  U[        U R
                  5      /-  nU R                  R                  " U/UQ70 UD6$ r9   r3   r/   r   r    r&   r(   r.   newr5   r6   r    	old_styles       r   _newCipherSelfTest._newY   {    ""'')dhh	99 ))I777477+--I{{s9Y9&99r   c                     [        U R                  SU-   5      (       d  gU R                  [        U R                  SU-   5      :H  $ )Nr'   F)hasattrr.   r&   r2   )r5   names     r   isModeCipherSelfTest.isModee   s8    t{{GDL11yyGDKK>>>r   c                    [        U R                  5      n[        U R                  5      n/ nU R                  (       a.  U R                   Vs/ s H  n[        [	        U5      5      PM     nnS nS n[        S5       H  nU R                  5       nU R                  5       n	U H%  n
UR                  U
5        U	R                  U
5        M'     [        UR                  U5      5      n[        U	R                  U5      5      nU(       a"  U R                  X[5        U R                  Xl5        XpeM     U R                  U R                  U5        U R                  U R                  U5        U R                  (       aZ  [        WR                  5       5      nU R                  U R                  U5        W	R                  [        U R                  5      5        g g s  snf )N   )r   r!   r"   r$   r   rangerB   updater   encryptdecryptassertEqualr%   digestverify)r5   r!   r"   r$   xctpticipherdeciphercompctXptXr%   s                 r   runTestCipherSelfTest.runTestj   sa   DNN+	T__-

??26//B/Q71Q4=/JB qAYY[Fyy{H #d#% # &..34C(**:67C  )  ) " 	"-,88&--/*CTXXs+OOGDHH-. ; Cs   Gr$   r"   r   r3   r(   r    r%   r&   r1   r.   r#   r!   N)
r   r   r   r   r-   r;   rB   rH   r\   r   r   r   r   r   r   .   s    $#L 
:?
%/r   r   c                        \ rS rSrS rS rSrg)CipherStreamingSelfTest   c                 h    U R                   nU R                  b  USU R                  < S3-  nU< S3$ )Nz in z modez# should behave like a stream cipher)r#   r&   r1   )r5   descs     r   r;   (CipherStreamingSelfTest.shortDescription   s1    99 T^^55D:>@@r   c           	         [        U R                  5      n[        U R                  5      n/ nU R                  5       n[	        S[        U5      S5       H(  nUR                  UR                  XUS-    5      5        M*     [        [        S5      R                  U5      5      nU R                  U R                  U5        / nU R                  5       n[	        S[        U5      S5       H(  nUR                  UR                  X%US-    5      5        M*     [        [        S5      R                  U5      5      nU R                  U R                  U5        g )Nr       )r   r!   r"   rB   rL   lenappendrN   r   r   joinrP   )r5   r!   r"   ct3rW   rV   pt3s          r   r\   CipherStreamingSelfTest.runTest   s   DNN+	T__-

 q#i.!,AJJv~~i!A#&678 -aejjo&#. q#j/1-AJJv~~j1Q3&789 . aejjo&-r   r   N)r   r   r   r   r;   r\   r   r   r   r   r`   r`      s    A.r   r`   c                   &    \ rS rSrS rS rS rSrg)RoundtripTest   c                    SSK Jn  [        R                  R	                  U 5        Xl        UR                  UR                  5      U l        [        US   5      U l
        S[        US   5      -  U l        UR                  SS 5      U l        g )Nr   )Randomr    d   r!   r#   )Cryptorr   r+   r,   r-   r.   get_random_bytes
block_sizer(   r   r    r!   getr#   )r5   r.   r6   rr   s       r   r-   RoundtripTest.__init__   so    !""4())&*;*;<VE]#q!455!::mT:r   c                 "    U R                   < S3$ )Nz6 .decrypt() output of .encrypt() should not be garbled)r#   r:   s    r   r;   RoundtripTest.shortDescription   s    QUQaQaccr   c                 |   U R                   R                  nU R                   R                  [        U R                  5      U5      nUR                  U R                  5      nU R                   R                  [        U R                  5      U5      nUR                  U5      nU R                  U R                  U5        g r9   )	r.   MODE_ECBr?   r   r    rN   r!   rO   rP   )r5   r&   encryption_cipherr"   decryption_cipherdecrypted_plaintexts         r   r\   RoundtripTest.runTest   s     {{## KKOOGDHH,=tD&..t~~>
 KKOOGDHH,=tD/77
C)<=r   )r(   r    r.   r#   r!   N)r   r   r   r   r-   r;   r\   r   r   r   r   ro   ro      s    ;d>r   ro   c                   ,    \ rS rSrS rS rS rS rSrg)IVLengthTest   c                 t    [         R                  R                  U 5        Xl        [	        US   5      U l        g Nr    r+   r,   r-   r.   r   r    r5   r.   r6   s      r   r-   IVLengthTest.__init__   +    ""4(VE]#r   c                     g)NzTCheck that all modes except MODE_ECB and MODE_CTR require an IV of the proper lengthr   r:   s    r   r;   IVLengthTest.shortDescription   s    er   c           	          U R                  [        U R                  R                  [	        U R
                  5      U R                  R                  [        S5      5        g )Nrg   )assertRaises	TypeErrorr.   r?   r   r    r|   r   r:   s    r   r\   IVLengthTest.runTest   s:    )T[[__gdhh6G$$ae	-r   c                 4    SU R                   R                  -  $ )N )r.   rv   r:   s    r   _dummy_counterIVLengthTest._dummy_counter   s    dkk,,,,r   r    r.   N)	r   r   r   r   r-   r;   r\   r   r   r   r   r   r   r      s    $
f--r   r   c                        \ rS rSrS rS rSrg)NoDefaultECBTest   c                 t    [         R                  R                  U 5        Xl        [	        US   5      U l        g r   r   r   s      r   r-   NoDefaultECBTest.__init__   r   r   c                     U R                  [        U R                  R                  [	        U R
                  5      5        g r9   )r   r   r.   r?   r   r    r:   s    r   r\   NoDefaultECBTest.runTest   s%    )T[[__gdhh6GHr   r   Nr   r   r   r   r-   r\   r   r   r   r   r   r      s    $
Ir   r   c                        \ rS rSrS rS rSrg)BlockSizeTest   c                     [         R                  R                  U 5        Xl        [	        [        US   5      5      U l        g r   )r+   r,   r-   r.   r   r   r    r   s      r   r-   BlockSizeTest.__init__   s0    ""4(1VE]+,r   c                     U R                   R                  U R                  U R                   R                  5      nU R	                  UR
                  U R                   R
                  5        g r9   )r.   r?   r    r|   rP   rv   )r5   rW   s     r   r\   BlockSizeTest.runTest   sD    4;;+?+?@**DKK,B,BCr   r   Nr   r   r   r   r   r      s    -
Dr   r   c                   *    \ rS rSrSrS rS rS rSrg)ByteArrayTest   z;Verify we can use bytearray's for encrypting and decryptingc                    [         R                  R                  U 5        Xl        UR	                  5       n[        US5      U l        [        [        US5      5      U l        [        [        US5      5      U l	        [        [        US5      5      U l
        [        USS 5      U l        [        USS 5      U l        [        USS 5      U l        U R                  (       a  [        U R                  5      U l        [        USS 5      n[        U5      U l        Ubw  [!        U R                  S	U-   5      U l        [        US
S 5      U l        U R$                  c  [        USS 5      U l        U R$                  b  [        U R$                  5      U l        O@S U l        [        US
S 5      U l        U R$                  b  [        U R$                  5      U l        X l        g r   r*   r4   s       r   r-   ByteArrayTest.__init__   g   ""4( #FM:Xfe,-8FK89HV\:;#FM4@"6<>FE40??{DH-TWt^<DIvtT2DGww"67D9ww"DGG* DIvtT2DGww"DGG*"r   c                 $   U R                   R                  5       n[        U R                  5      n/ nU R                  b  U R                  /nU R
                  b  U[        U R
                  5      /-  nU R                  R                  " U/UQ70 UD6$ r9   r>   r@   s       r   rB   ByteArrayTest._new  rD   r   c           
      p   [        U R                  5      n[        U R                  5      n/ nU R                  (       a7  U R                   Vs/ s H   n[	        [        [        U5      5      5      PM"     nnU R                  5       nU R                  5       nU H%  nUR                  U5        UR                  U5        M'     [        UR                  [	        U5      5      5      n[        UR                  [	        U5      5      5      n	U R                  U R                  U5        U R                  U R                  U	5        U R                  (       ac  [        UR                  5       5      n
U R                  U R                  U
5        UR                  [	        [        U R                  5      5      5        g g s  snf r9   )r   r!   r"   r$   	bytearrayr   rB   rM   r   rN   rO   rP   r%   rQ   rR   r5   r!   r"   r$   rS   rW   rX   rY   rT   rU   r%   s              r   r\   ByteArrayTest.runTest#  s5   DNN+	T__-

??=A__M_9WQqT]3_JM99; DMM$OOD!  V^^Ii$89:X%%i
&;<="-,88&--/*CTXXs+OOIgdhh&789 ! N   'F3r^   N	r   r   r   r   __doc__r-   rB   r\   r   r   r   r   r   r      s    E##J
::r   r   c                   *    \ rS rSrSrS rS rS rSrg)MemoryviewTesti?  z;Verify we can use memoryviews for encrypting and decryptingc                    [         R                  R                  U 5        Xl        UR	                  5       n[        US5      U l        [        [        US5      5      U l        [        [        US5      5      U l	        [        [        US5      5      U l
        [        USS 5      U l        [        USS 5      U l        [        USS 5      U l        U R                  (       a  [        U R                  5      U l        [        USS 5      n[        U5      U l        Ubw  [!        U R                  S	U-   5      U l        [        US
S 5      U l        U R$                  c  [        USS 5      U l        U R$                  b  [        U R$                  5      U l        O@S U l        [        US
S 5      U l        U R$                  b  [        U R$                  5      U l        X l        g r   r*   r4   s       r   r-   MemoryviewTest.__init__B  r   r   c                 $   U R                   R                  5       n[        U R                  5      n/ nU R                  b  U R                  /nU R
                  b  U[        U R
                  5      /-  nU R                  R                  " U/UQ70 UD6$ r9   r>   r@   s       r   rB   MemoryviewTest._newg  rD   r   c           
      p   [        U R                  5      n[        U R                  5      n/ nU R                  (       a7  U R                   Vs/ s H   n[	        [        [        U5      5      5      PM"     nnU R                  5       nU R                  5       nU H%  nUR                  U5        UR                  U5        M'     [        UR                  [	        U5      5      5      n[        UR                  [	        U5      5      5      n	U R                  U R                  U5        U R                  U R                  U	5        U R                  (       ac  [        UR                  5       5      n
U R                  U R                  U
5        UR                  [	        [        U R                  5      5      5        g g s  snf r9   )r   r!   r"   r$   
memoryviewr   rB   rM   r   rN   rO   rP   r%   rQ   rR   r   s              r   r\   MemoryviewTest.runTests  s5   DNN+	T__-

??>BooNo:gadm4oJN99; DMM$OOD!  V^^Jy$9:;X%%j&<=>"-,88&--/*CTXXs+OOJwtxx'89: ! Or   r^   Nr   r   r   r   r   r   ?  s    E##J
:;r   r   c           
      v   / nSn[        [        U5      5       GH  nX&   n0 n[        U5      S:X  a  Uu  US'   US'   US'   Op[        U5      S:X  a  Uu  US'   US'   US'   US'   OM[        U5      S:X  a&  Uu  US'   US'   US'   US'   n	UR                  U	5        O[        S	[        U5      4-  5      eS
U;  a  SUS
'   UR	                  5       n
[        U
S5      n[        U
S5      n[        U
S5      n[        U
S
5      n[        U
SS 5      nUb  UnO&US:X  a  U
(       d  SU< SU< 3nOSU< SU< SU
< 3nSXS-   U4-  nUUS'   XS'   UR                  U5        U(       d9  U[        X5      [        X5      [        X5      [        X5      [        X5      /-  nSnUR                  [        X5      5        GM     U$ )NFrf   r!   r"   r       r      Unsupported tuple size %dr&   ECBp=, k=, 
%s #%d: %s   r#   T)rL   rh   rM   AssertionErrorr/   r   ro   r   r   r   r   ri   r   )r.   r#   	test_dataadditional_paramstestsextra_tests_addedrV   rowr6   r3   p2p_keyp_plaintextp_ciphertextp_modep_descriptionr   rG   s                     r   make_block_testsr     s   E3y>"l s8q=ILFVK &"6uX]`c]VK &"6uvmG\X]nqkVK &"6uvmG\^jMM,' !<C{!JKK"F6N [[]U#r;/L1"f% ]D9$'Ku_R*5u=K.95"EK{aC== $} +}'( !f-V, 0f-f- E !% 	^F34o #r Lr   c                 0   / nSn[        [        U5      5       GHx  nX%   n0 n[        U5      S:X  a  Uu  US'   US'   US'   Op[        U5      S:X  a  Uu  US'   US'   US'   US'   OM[        U5      S:X  a&  Uu  US'   US'   US'   US'   nUR                  U5        O[        S	[        U5      4-  5      eUR	                  5       n	[        U	S5      n
[        U	S5      n[        U	S5      n[        U	SS 5      nUb  UnO U	(       d  S
U< SU
< 3nOS
U< SU
< SU	< 3nSXS-   U4-  nXS'   XS'   U(       d+  U[        X5      /-  nUR                  [        X5      5        SnUR                  [        X5      5        UR                  [        X5      5        GM{     U$ )NFrf   r!   r"   r    r   r   r   r   r   r   r   r   r   r#   T)rL   rh   rM   r   r/   r   r   ri   r   r   r`   )r.   r#   r   r   r   rV   r   r6   r3   r   r   r   r   r   r   rG   s                   r   make_stream_testsr     s   E3y>"l s8q=ILFVK &"6uX]`c]VK &"6uvmG\X]nqkVK &"6uvmG\^jMM,' !<C{!JKK [[]U#r;/L1 ]D9$'K*5u=K  /:5"EK{aC== $} +} !f- E LL78 $ 	^F34,V<=W #X Lr   )r   r+   binasciir   r   r   Crypto.Util.py3compatr   Crypto.Util.strxorr   r	   r   r,   r   r`   ro   r   r   r   r   r   dictr   r   r   r   r   <module>r      s   2 -  . . # '  % 	a/X&& a/F.n .@>H%% >0-8$$ -"Ix(( IDH%% DM:H%% M:`M;X&& M;` HLv <|/r   