
    9i&                     r   S r SSKrSSKrSSKrSSKrSSKrSSKJrJr  SSK	J
r
Jr  SSKJr  S 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S0 4S jrS rg)z&Self-testing for PyCrypto hash modules    N)hexlify	unhexlify)btobytes)strxor_cc                 Z    [         R                  " SS[        U 5      5      n[        U5      $ )Ns   \s+    )resubr   r   )
hex_stringshorters     [/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/Crypto/SelfTest/Hash/common.pyt2br   $   s$    ffWc7:#67GWr	   c                   &    \ rS rSrS rS rS rSrg)HashDigestSizeSelfTest)   c                 r    [         R                  R                  U 5        Xl        X0l        X l        X@l        g N)unittestTestCase__init__hashmodexpecteddescriptionextra_params)selfr   r   r   r   s        r   r   HashDigestSizeSelfTest.__init__+   s,    ""4( &(r	   c                     U R                   $ r   r   r   s    r   shortDescription'HashDigestSizeSelfTest.shortDescription2       r	   c                    SU R                   ;  aU  U R                  [        U R                  S5      5        U R	                  U R                  R
                  U R                  5        U R                  R                  " S0 U R                   D6nU R                  [        US5      5        U R	                  UR
                  U R                  5        g )Ntruncatedigest_size )r   
assertTruehasattrr   assertEqualr&   r   newr   hs     r   runTestHashDigestSizeSelfTest.runTest5   s    T...OOGDLL-@AT\\55t}}ELL1t001=126r	   )r   r   r   r   N__name__
__module____qualname____firstlineno__r   r!   r.   __static_attributes__r'   r	   r   r   r   )   s    ) 7r	   r   c                   &    \ rS rSrS rS rS rSrg)HashSelfTest>   c                     [         R                  R                  U 5        Xl        UR	                  5       U l        X@l        X l        XPl        g r   )	r   r   r   r   lowerr   inputr   r   )r   r   r   r   r;   r   s         r   r   HashSelfTest.__init__@   s:    ""4( (
&(r	   c                     U R                   $ r   r   r    s    r   r!   HashSelfTest.shortDescriptionH   r#   r	   c                    U R                   R                  " S0 U R                  D6nUR                  U R                  5        [
        R                  " UR                  5       5      nUR                  5       nU R                   R                  " U R                  40 U R                  D6nUR                  5       n[
        R                  " UR                  5       5      nU R                  U R                  U5        [        R                  S   S:X  a9  U R                  U R                  U5        U R                  U R                  U5        OTU R                  U R                  R                  5       U5        U R                  U R                  R                  5       U5        U R                  U R                  U5        U R                   R                  S;  d  [        US5      (       al  UR                  5       nUR                  U R                  5        [
        R                  " UR                  5       5      nU R                  U R                  U5        g g )Nr      )zCrypto.Hash.MD5zCrypto.Hash.SHA1r+   r'   )r   r+   r   updater;   binasciib2a_hexdigest	hexdigestr*   r   sysversion_infodecoder1   r)   )r   r-   out1out2out3out4h2out5s           r   r.   HashSelfTest.runTestK   s   LL1t001	
+{{}LLTZZ=4+<+<={{}
+ 	-A!#T]]D1T]]D1T]]113T:T]]113T:-
 <<  (OOSZ[\^cSdSdBIIdjj!##BIIK0DT]]D1	 Ter	   )r   r   r   r   r;   Nr0   r'   r	   r   r7   r7   >   s    ) 2r	   r7   c                        \ rS rSrS rS rSrg)HashTestOIDk   c                 f    [         R                  R                  U 5        Xl        X l        X0l        g r   )r   r   r   r   oidr   )r   r   rT   r   s       r   r   HashTestOID.__init__l   s&    ""4((r	   c                     U R                   R                  " S0 U R                  D6nU R                  UR                  U R                  5        g )Nr'   )r   r+   r   r*   rT   r,   s     r   r.   HashTestOID.runTestr   s7    LL1t001)r	   )r   r   rT   Nr1   r2   r3   r4   r   r.   r5   r'   r	   r   rQ   rQ   k   s    )*r	   rQ   c                        \ rS rSrS rS rSrg)ByteArrayTestw   c                 Z    [         R                  R                  U 5        Xl        X l        g r   r   r   r   moduler   r   r^   r   s      r   r   ByteArrayTest.__init__y   !    ""4((r	   c                    [        S5      n[        U5      nU R                  R                  " U40 U R                  D6nU R                  R                  " U40 U R                  D6nSUS S& U R                  UR                  5       UR                  5       5        [        U5      nU R                  R                  " S0 U R                  D6nU R                  R                  " S0 U R                  D6nUR                  U5        UR                  U5        SUS S& U R                  UR                  5       UR                  5       5        g )Nz       r'   )r   	bytearrayr^   r+   r   r*   rD   rA   )r   databah1rM   s        r   r.   ByteArrayTest.runTest~   s      t_[[__T7T%6%67[[__R54#4#452Abiik2 t_[[__1t001[[__1t001
		$
		"2Abiik2r	   r   r^   NrX   r'   r	   r   rZ   rZ   w   s    )
3r	   rZ   c                        \ rS rSrS rS rSrg)MemoryViewTest   c                 Z    [         R                  R                  U 5        Xl        X l        g r   r]   r_   s      r   r   MemoryViewTest.__init__   ra   r	   c                    SnS nS nX#4 GHX  nU" U5      nU R                   R                  " U40 U R                  D6nU R                   R                  " U40 U R                  D6nUR                  (       d  SUS S& U R	                  UR                  5       UR                  5       5        U" U5      nU R                   R                  " S0 U R                  D6nU R                   R                  " S0 U R                  D6nUR                  U5        UR                  U5        UR                  (       d  SUS S& U R	                  UR                  5       UR                  5       5        GM[     g )Ns    c                     [        U 5      $ r   )
memoryviewrf   s    r   	get_mv_ro)MemoryViewTest.runTest.<locals>.get_mv_ro   s    d##r	   c                 *    [        [        U 5      5      $ r   )rr   re   rs   s    r   	get_mv_rw)MemoryViewTest.runTest.<locals>.get_mv_rw   s    io..r	   rc   rd   r'   )r^   r+   r   readonlyr*   rD   rA   )r   rf   rt   rw   get_mvmvrh   rM   s           r   r.   MemoryViewTest.runTest   s   	$	/  *F B;):):;B9t'8'89B;; 2ARYY["))+6 B54#4#45B54#4#45BIIdOIIbM;; 2ARYY["))+6) +r	   rj   NrX   r'   r	   r   rl   rl      s    )
7r	   rl   c                   &    \ rS rSrS rS rS rSrg)MACSelfTest   c                     [         R                  R                  U 5        Xl        [	        U5      U l        [	        U5      U l        [	        U5      U l        X`l        X l	        g r   )
r   r   r   r^   r   resultrf   keyparamsr   )r   r^   r   r   rf   r   r   s          r   r   MACSelfTest.__init__   sG    ""4(&kI	s8&r	   c                     U R                   $ r   r   r    s    r   r!   MACSelfTest.shortDescription   r#   r	   c                 &   [        U R                  5      nU R                  R                  " U R                  40 U R
                  D6nUR                  U R                  5        U R                  U R                  UR                  5       5        U R                  [        U R                  5      R                  S5      UR                  5       5        UR                  U R                  5        UR                  U5        [        U R                  S5      nU R                  [         UR                  U5        U R                  [         UR                  S5        U R                  R                  " U R                  U R                  40 U R
                  D6nU R                  U R                  UR                  5       5        U R                  [        U R                  5      R                  S5      UR                  5       5         U R                  R                  " U R                  U R                  40 U R
                  D6nUR#                  5       nUR#                  5       nUR                  S5        U R                  UR                  5       U R                  5        UR                  S5        U R                  UR                  5       UR                  5       5        U R'                  [)        UR                  5       [+        S5      5      5        U R'                  [)        UR                  5       [+        S5      5      5        UR                  UR                  5       5        UR                  UR                  5       R-                  S5      5        g ! [$         a     Nf = f)Nascii   4556s   blar	    )r   r   r^   r+   r   r   rA   rf   r*   rD   rH   rE   verify	hexverifyr   assertRaises
ValueErrorcopyNotImplementedErrorr(   
isinstancetypeencode)r   
result_hexr-   	wrong_macrM   h3s         r   r.   MACSelfTest.runTest   s_   T[[)
 KKOODHH44	ahhj1-44W=q{{}M 	
	J T[[#.	*ahh	:*akk6: KKOODHHdii?4;;?ahhj1-44W=q{{}M	$))Ct{{CABB IIfRYY[$++6 HHVQXXZ5
 	
188:tCy9:
1;;=$r(;< 	
AKKM"	AKKM((12 # 		s   ;CN 
NN)rf   r   r   r^   r   r   Nr0   r'   r	   r   r~   r~      s    ' .3r	   r~   c           
         / n[        [        U5      5       Hb  nX'   n[        [        USS 5      u  p[        U5      S:  a  [	        U
5      nOUS   nSXS-   U4-  nUR                  [        XXU5      5        Md     SU[        U5      S-   4-  nUR                  [        XX55      5        Ub  UR                  [        XU5      5        UR                  [        X5      5        UR                  [        X5      5        U$ )Nr   r@      
%s #%d: %srd   z%s #%d: digest_size)rangelenmapr   reprappendr7   r   rQ   rZ   rl   )r^   module_name	test_datar&   rT   r   testsirowr   r;   r   names                r   make_hash_testsr      s    E3y>"lAa1s8a<u+Ka&K{aC==\&NO # !KY!1C#DDD	LL'kPQ
[l;<	LLv45	LL56Lr	   c                     / n[        U5       HT  u  pE[        U5      S:X  a  [        U5      0 /-   u  pgpn
OUu  pgpn
SXS-   U	4-  nUR                  [	        XXXj5      5        MV     U$ )N   r   rd   )	enumerater   listr   r~   )r^   r   r   r   r   r   r   rf   resultsr   r   r   s               r   make_mac_testsr     su    EI&s8q=8<S	bF8J5Sf8;5Sf{aC==[wcJK ' Lr	   )__doc__r
   rF   r   rB   Crypto.HashCryptor   r   Crypto.Util.py3compatr   r   Crypto.Util.strxorr   r   r   r   r7   rQ   rZ   rl   r~   r   r   r'   r	   r   <module>r      s   2 - 	 
    ' , '
7X.. 7**28$$ *2Z	*(## 	*3H%% 3>%7X&& %7P<3(## <3~ FJ!#4	r	   