
    dafAh                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZ 	 d dlZd dlmZ d dlmZ d dlmZ 	 d dlZd Z G d d	ej2                        Z G d
 dej2                        Z G d dej2                        Z G d dej2                        Z G d dej2                        Z G d dej2                        Ze dk(  r ejB                          yy# e$ r dZdZdZdZY w xY w# e$ r dZY w xY w)    N)hashlib_helpercheck_disallow_instantiation)_compare_digest)HMAC)hmac_new)compare_digestc                 B     t        j                          fd       }|S )Nc                      t        j                         5  t        j                  dt                | i |cd d d        S # 1 sw Y   y xY w)Nignore)category)warningscatch_warningsfilterwarningsDeprecationWarning)argskwargsfuncs     )/root/Python-3.12.4/Lib/test/test_hmac.pywrapperzignore_warning.<locals>.wrapper   sE    $$& 	)##H-?A((	) 	) 	)s   #AA)	functoolswraps)r   r   s   ` r   ignore_warningr      s%    __T) )
 N    c                      e Zd Zd Zd Z ej                  dd      d        Z ej                  dd      d        Zd	 Z	 ej                  d
d      d        Z
 ej                  dd      d        Z ej                  dd      d        Z ej                  dd      d        Z ej                  d      d        Zd Zd Zy)TestVectorsTestCasec                    | j                  |j                         j                         |j                                | j                  |j                         t	        j
                  |             | j                  |j                  d|        | j                  |j                  |       | j                  |j                  |       y )Nzhmac-)	assertEqual	hexdigestupperdigestbinascii	unhexlifynamedigest_size
block_size)selfhr    hashnamer$   r%   s         r   assert_hmac_internalsz)TestVectorsTestCase.assert_hmac_internals*   s     	,,.?X%7%7%?@5
!344z2r   c                 R   t        j                  |||      }| j                  |||||       t        j                  |||      }| j                  |||||       t        j                  ||      }|j                         }	|	j	                  d       |j	                  |       | j                  |j                         j                         |j                                t        j                  |||      }| j                  |||||       t        j                  |d |      }|j	                  |       | j                  |j                         j                         |j                                t        j                  ||      }|j	                  |       | j                  |j                         j                         |j                                t        j                  |||      }| j                  |j                         j                         |j                                | j                  t        j                  |||      t        j                  |             | j                  t        j                  |||      t        j                  |             t         j                  j                  t         j                        }|j                  |||       | j                  |||||       t        +t        |||      }| j                  |||||       t        ||      }|j                         }	|	j	                  d       |j	                  |       | j                  |j                         j                         |j                                t        t         d|       }
t        |||
      }| j                  |||||       t         j                  j                  t         j                        }|j#                  |||       | j                  |||||       y y )N	digestmods   test update)r    openssl_)hmacr   r)   copyupdater   r   r   newr    r!   r"   __new__	_init_old
c_hmac_newgetattr_hashopenssl
_init_hmac)r&   keydatar    hashfuncr(   r$   r%   r'   h2r   s              r   assert_hmaczTestVectorsTestCase.assert_hmac3   sB    IIc484""vxj	
 IIc484""vxj	
 IIcX.VVX
		.!	,,.?HHS$(3""vxj	
 HHS$(3	,,.?HHSH-	,,.?HHS$(3,,.?KKT(3v&	
 	KKT(3v&	

 IIdii(	C2""vxj	
 !39A&&68[* 3(3ABIIn%HHTNQ[[]002FLLNC<8H:)>?D35A&&68[* 		!!$)),ALLdhL7&&68[*) "r   md5T)opensslc                       fd} |ddd        |ddd        |dd	d
        |t        t        dd            dd        |ddd        |ddd        |ddd       y )Nc           	      R    j                  | ||t        j                  ddd       y )Nr=      @   r:   r(   r$   r%   )r<   hashlibr=   r8   r9   r    r&   s      r   md5testz5TestVectorsTestCase.test_md5_vectors.<locals>.md5test   s-    T6   r         Hi There 9294727A3638BB1C13F48EF8158BFC9D   Jefe   what do ya want for nothing? 750c783e6ab0b503eaa86e310a5db738s   2    56be34521d144c88dbb8c733f0e8b3f6      2    697eaf0aca3a3aea3a75164746ffaa79s      Test With Truncation 56461ef2342edc00f9bab995690efd4cP   6   Test Using Larger Than Block-Size Key - Hash Key First 6b1ab7fe4bd7bf8f0b62e6ce61b9d0cdI   Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data 6f630fad67cda0ee1fb1f562db3aa53ebytesrange)r&   rF   s   ` r   test_md5_vectorsz$TestVectorsTestCase.test_md5_vectors}   s    	 	2	4 	/2	4 	2	4 	eArl#2	4 	'2	4 	I2	4 	82	4r   sha1c                       fd} |ddd        |ddd        |dd	d
        |t        t        dd            dd        |ddd        |ddd        |ddd       y )Nc           	      R    j                  | ||t        j                  ddd       y )Nr^      rB   rC   )r<   rD   r^   rE   s      r   shatestz5TestVectorsTestCase.test_sha_vectors.<locals>.shatest   s-    T6   r      rH   (b617318655057264e28bc0b6fb378c8ef146be00rJ   rK   (effcdf6ae5eb2fa2d27416d5f184df9c259a7c79   rM   (125d7342b9ac11cd91a39af48aa17b4f63f175d3rO   rP   rQ   (4c9007f4026250c6bc8414f9bf50c86c2d7235das   rS   (4c1a03424b55e07fe7f27be1d58bb9324a9a5a04rU   rV   (aa4ae5e15272d00e95705637ce8a3b55ed402112rX   (e8e99d0f45237d786d6bbaa7965c7808bbff1a91rZ   )r&   rb   s   ` r   test_sha_vectorsz$TestVectorsTestCase.test_sha_vectors   s    	 	:	< 	/:	< 	:	< 	eArl#:	< 	':	< 	I:	< 	8:	<r   c                      fd} |ddt         j                  dt         j                  dt         j                  dt         j                  di        |d	d
t         j                  dt         j                  dt         j                  dt         j                  di        |ddt         j                  dt         j                  dt         j                  dt         j                  di        |t        d t        dd      D              dt         j                  dt         j                  dt         j                  dt         j                  di        |ddt         j                  dt         j                  d t         j                  d!t         j                  d"i        |dd#t         j                  d$t         j                  d%t         j                  d&t         j                  d'i       y )(Nc           	      @    |   }j                  | ||       y )NrC   )r<   )	r8   r9   
hexdigestsr    r%   r$   	hash_namer:   r&   s	       r   hmactestz9TestVectorsTestCase._rfc4231_test_cases.<locals>.hmactest   s3    )FT6!"'%  r   rc   rH   8896fb1128abbdf196832107cd49df33f47b4b1169912ba4f53684b22@b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7`afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c7cebc59cfaea9ea9076ede7f4af152e8b2fa9cb6ڀ87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cdedaa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854)r8   r9   ro   rJ   rK   8a30e01098bc6dbbf45690f3a7e9e6d0f8bbea2a39e6148008fd05e44@5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843`af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649ڀ164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737rf   rM   87fb3cb3588c6c1f6ffa9694d7d6ad2649365b0c1f65d69d1ec8333ea@773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe`88062608d3e6ad8a0aa2ace014c8a86f0aa635d947ac9febe83ef4e55966144b2a5ab39dc13814b94e3ab6e101a34f27ڀfa73b0089d56a284efb0f0756c890be9b1b5dbdd8ee81a3655f83e33b2279d39bf3e848279a722c806b485a47e67c807b946a337bee8942674278859e13292fbc              3       K   | ]  }|  y wN ).0xs     r   	<genexpr>z:TestVectorsTestCase._rfc4231_test_cases.<locals>.<genexpr>  s     <1Q<s   rO   rP   rQ   86c11506874013cac6a2abc1bb382627cec6a90d86efc012de7afec5a@82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b`3e8a69b7783c25851933ab6290af6ca77a9981480850009cc5577c6e1f573b4e6801dd23c4a7d679ccf8a386c674cffbڀb0ba465637458c6990e5a8c5f61d4af7e576d97ff94b872de76f8050361ee3dba91ca5c11aa25eb4d679275cc5788063a5f19741120c4f2de2adebeb10a298dds   rV   895e9a0db962095adaebe9b2d6f0dbce2d499f112f2d2b7273fa6870e@60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54`4ece084485813e9088d2c63a041bc5b44f9ef1012a2b588f3cd11f05033ac4c60c2ef6ab4030fe8296248df163f44952ڀ80b24263c7c1a3ebb71493c1dd7be8b49b46d1f41b4aeec1121b013783f8f3526b56d037e05f2598bd0fd2215d6a1e5295e64f73f63f0aec8b915a985d786598s   This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm.83a854166ac5d9f023f54d517d0b39dbd946770db9c2b95c9f6f565d1@9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2`6617178e941f020d351e2f254e8fd32c602420feb0b8fb9adccebb82461e99c5a678cc31e799176d3860e6110c46523eڀe37b6a775dc87dbaa4dfa9f96e5e3ffddebd71f8867289865df5a32d20cdc944b6022cac3c4982b10d5eeb55c3e4de15134676fb6de0446065c97440fa8c6a58)rD   sha224sha256sha384sha512r[   r\   )r&   r:   rp   r$   r%   rq   s   ````` r   _rfc4231_test_casesz'TestVectorsTestCase._rfc4231_test_cases   s   		 		 	z#>> $>>> $F>> $F >> $F	" 	w7>> $>>> $F>> $F >> $F	" 	z">> $>>> $F>> $F >> $F	" 	u<dF(;<<">> $>>> $F>> $F >> $F	" 	{2 >> $>>> $F>> $F >> $F	$ 	{4 >> $>>> $F>> $F >> $F	r   r   c                 H    | j                  t        j                  ddd       y )Nr      rB   )r   rD   r   r&   s    r   test_sha224_rfc4231z'TestVectorsTestCase.test_sha224_rfc4231F        2rBr   r   c                 H    | j                  t        j                  ddd       y )Nr       rB   )r   rD   r   r   s    r   test_sha256_rfc4231z'TestVectorsTestCase.test_sha256_rfc4231J  r   r   r   c                 H    | j                  t        j                  ddd       y )Nr   0      )r   rD   r   r   s    r   test_sha384_rfc4231z'TestVectorsTestCase.test_sha384_rfc4231N        2sCr   r   c                 H    | j                  t        j                  ddd       y )Nr   rB   r   )r   rD   r   r   s    r   test_sha512_rfc4231z'TestVectorsTestCase.test_sha512_rfc4231R  r   r   c                     G d dt               }t        j                         5  t        j                  dt               | j                  t              5  t        j                  dd|       | j                  d       d d d        d|_	        | j                  t              5  t        j                  dd|       | j                  d	       d d d        d d d        y # 1 sw Y   `xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nc                   "    e Zd ZdZd Zd Zd Zy)JTestVectorsTestCase.test_legacy_block_size_warnings.<locals>.MockCrazyHashz#Ain't no block_size attribute here.c                 h    t        j                  | | _        | j                  j                  | _        y r   )rD   r   _xr$   )r&   r   s     r   __init__zSTestVectorsTestCase.test_legacy_block_size_warnings.<locals>.MockCrazyHash.__init__Z  s$    !..$/#'77#6#6 r   c                 :    | j                   j                  |       y r   )r   r0   )r&   vs     r   r0   zQTestVectorsTestCase.test_legacy_block_size_warnings.<locals>.MockCrazyHash.update]  s    q!r   c                 6    | j                   j                         S r   )r   r    r   s    r   r    zQTestVectorsTestCase.test_legacy_block_size_warnings.<locals>.MockCrazyHash.digest_  s    ww~~''r   N)__name__
__module____qualname____doc__r   r0   r    r   r   r   MockCrazyHashr   X  s    57"(r   r   error   a   br+   z)Expected warning about missing block_sizerO   z'Expected warning about small block_size)
objectr   r   simplefilterRuntimeWarningassertRaisesr.   r   failr%   )r&   r   s     r   test_legacy_block_size_warningsz3TestVectorsTestCase.test_legacy_block_size_warningsV  s    	(F 	( $$& 		E!!'>:"">2 G		$>		EFG ()M$"">2 E		$>		CDE		E 		EG G
E E		E 		Es;   0C5*C>$C5"*C)C5C&	"C5)C2	.C55C>c                    | j                  t        d      5  d}d}t        j                  ||d       ddd       | j                  t        d      5  t        j                         ddd       | j                  t        d      5  t        j                  d       ddd       y# 1 sw Y   vxY w# 1 sw Y   MxY w# 1 sw Y   yxY w)z5The digestmod parameter is required as of Python 3.8.zrequired.*digestmodrG   rH   Nr+    )msgr,   )assertRaisesRegex	TypeErrorr.   r   r1   )r&   r8   r9   s      r   test_with_digestmod_no_defaultz2TestVectorsTestCase.test_with_digestmod_no_defaultm  s    ##I/EF 	1CDIIc440	1 ##I/EF 	 HHS$	 ##I/EF 	3IIctr2	3 	3	1 	1	  	 	3 	3s#   B)B5C)B25B>C
c                    t        t        d      }	 t        j                  |d<   t        j                  ddd      j                         }d}| j                  ||       |j                  d       y # |j                  d       w xY w)N__builtin_constructor_cachefoo   keys   message@6e9ef29b75fffc5b7abae527d58fdadb2fe42e7219011976917343065f58ed4a)r5   rD   r   r.   r    hexr   pop)r&   cacher   expecteds       r   test_with_fallbackz&TestVectorsTestCase.test_with_fallbackx  sj    !>?	">>E%LFJ>BBDIYHY1IIeEIIes   AA0 0BN)r   r   r   r)   r<   r   requires_hashdigestr]   rl   r   r   r   r   r   r   r   r   r   r   r   r   r   (   s"   3HT (^''t<'4 ='4R (^''=%< >%<Nun (^''$?C @C (^''$?C @C (^''$?D @D (^''$?D @D (^''1E 2E,	3r   r   c                      e Zd ZdZ ej
                  d      d        Z ej
                  d      d        Z ej
                  d      d        Z ej
                  d      d        Z	 ej
                  d      d        Z
 ej
                  d      d        Z ej
                  d      d	        Z ej                  ed
ud      d        Z ej                  ed
ud      d        Zy
)ConstructorTestCase@6c845b47f52b3b47f6590c502db7825aad757bf4fadc8fa972f7cd2e76a5bdebr   c                 t    	 t        j                  dd       y # t        $ r | j                  d       Y y w xY w)Nr   r   r+   z+Standard constructor call raised exception.)r.   r   	Exceptionr   r   s    r   test_normalzConstructorTestCase.test_normal  s4    	EIIf1 	EIICD	Es    77c                     | j                  t              5  t        j                  dd      }d d d        y # 1 sw Y   y xY wNr8   r   r+   )r   r   r.   r   r&   r'   s     r   test_with_str_keyz%ConstructorTestCase.test_with_str_key  s7     y) 	5		%84A	5 	5 	5	   7A c                     | j                  t              5  t        j                  dd      }d d d        y # 1 sw Y   y xY wr   )r   r   r.   r1   r   s     r   test_dot_new_with_str_keyz-ConstructorTestCase.test_dot_new_with_str_key  s7     y) 	4(3A	4 	4 	4r   c                     	 t        j                  ddd      }| j	                  j                         | j                         y # t        $ r | j                  d       Y Gw xY w)Nr   
   hash this!r   r+   z5Constructor call with text argument raised exception.)r.   r   r   r   r   r   r   r   s     r   test_withtextz!ConstructorTestCase.test_withtext  sV    	O		&-8DA 	6  	OIIMN	Os   A A"!A"c                     	 t        j                  t        d      t        d      d      }| j                  j                         | j                         y # t        $ r | j	                  d       Y Gw xY w)Nr   r   r   r+   z;Constructor call with bytearray arguments raised exception.)r.   r   	bytearrayr   r   r   r   r   r   s     r   test_with_bytearrayz'ConstructorTestCase.test_with_bytearray  sc    	U		)F+Y}-E$,.A 	6  	UIIST	Us   *A A43A4c                     	 t        j                  dt        d      d      }| j                  j                         | j                         y # t        $ r | j	                  d       Y Gw xY w)Nr   r   r   r+   z6Constructor call with memoryview msg raised exception.)r.   r   
memoryviewr   r   r   r   r   r   s     r   test_with_memoryview_msgz,ConstructorTestCase.test_with_memoryview_msg  s[    	P		&*]";xPA 	6  	PIINO	Ps   !A A+*A+c                     	 t        j                  ddt        j                        }y # t        $ r | j                  d       Y y w xY w)Nr   r   z6Constructor call with hashlib.sha256 raised exception.)r.   r   rD   r   r   r   r   s     r   test_withmodulez#ConstructorTestCase.test_withmodule  s<    	P		&#w~~6A 	PIINO	Ps   %( AANzneed _hashlibc                     t        | t               | j                  t        d      5  d t        _        d d d        y # 1 sw Y   y xY w)Nzimmutable type)r   C_HMACr   r   valuer   s    r   test_internal_typesz'ConstructorTestCase.test_internal_types  s;     	%T62##I/?@ 	 FL	  	  	 s	   <Azneed _sha256c                    t        j                  ddt        j                        }| j	                  |j                         | j                         | j	                  |j                  d       t        j                  ddt        j                        }| j	                  |t        j                  | j                               y )Nr   r   r+   zhmac-sha256)r.   r   sha256_moduler   r   r   r   r#   r    r!   r"   )r&   r'   r    s      r   test_with_sha256_modulez+ConstructorTestCase.test_with_sha256_module  s    IIfm}7K7KL6/V]M4H4HI!3!3DMM!BCr   )r   r   r   r   r   r   r   r   r   r   r   r   r   unittest
skipUnlessr   r   r   r   r   r   r   r   r     sK    	K  (^''1E 2E (^''15 25 (^''14 24 (^''17 27 (^''17 27 (^''17 27 (^''1P 2P Xt+_=  >  Xd2NCD DDr   r   c                   <    e Zd Z ej                  d      d        Zy)SanityTestCaser   c                     	 t        j                  dd      }|j                  d       |j                          |j	                          |j                          y # t        $ r | j                  d       Y y w xY w)Ns   my secret keyr   r+   s   compute the hash of this text!z3Exception raised during normal usage of HMAC class.)r.   r   r0   r    r   r/   r   r   r   s     r   test_exercise_all_methodsz(SanityTestCase.test_exercise_all_methods  s_    	M		*h?AHH67HHJKKMFFH 	MIIKL	Ms   AA A87A8N)r   r   r   r   r   r   r   r   r   r   r     s#    '^''1
M 2
Mr   r   c                   <    e Zd Z ej                  d      d        Zy)UpdateTestCaser   c                     | j                  t              5  t        j                  dd      }|j	                  d       d d d        y # 1 sw Y   y xY w)Nr   r   r+   zinvalid update)r   r   r.   r1   r0   r   s     r   test_with_str_updatez#UpdateTestCase.test_with_str_update  sB    y) 	'84AHH%&	' 	' 	's   )AAN)r   r   r   r   r   r   r   r   r   r   r     s!    '^''1' 2'r   r   c                   ,   e Zd Z ej                  d      d        Z ej                  d      d        Z ej                  e	du d       ej                  d      d               Z
 ej                  d      d        Z ej                  d      d        Zy)	CopyTestCaser   c                    t         j                  j                  t         j                        }|j                  ddd       |j	                         }| j                  t        |j                        t        |j                        d       | j                  t        |j                        t        |j                        d       y )Nr      msgr   r+   zTypes of inner don't match.zTypes of outer don't match.)	r.   r   r2   r3   r/   r   type_inner_outerr&   h1r;   s      r   test_attributes_oldz CopyTestCase.test_attributes_old  s     YYtyy)
VVx8WWYbii$ryy/)	+bii$ryy/)	+r   c                    t         j                  j                  t         j                        }|j                  ddd       |j	                         }| j                  t        |      t        |      k7  d       | j                  t        |j                        t        |j                        k7  d       | j                  t        |j                        t        |j                        k7  d       | j                  |j                  d        y )Nr   r   r   r+   "No real copy of the HMAC instance.z&No real copy of the attribute 'inner'.z&No real copy of the attribute 'outer'.)r.   r   r2   r3   r/   
assertTrueidr   r   assertIs_hmacr   s      r   test_realcopy_oldzCopyTestCase.test_realcopy_old  s     YYtyy)
VVx8WWY2"R&(*NO299BII64	6299BII64	6bhh%r   Nztest requires _hashopensslc                    t         j                  j                  t         j                        }|j                  ddd       |j	                         }| j                  t        |j                        t        |j                        k7         y )Nr   r   r   r+   )r.   r   r2   r7   r/   r  r  r  r   s      r   test_realcopy_hmaczCopyTestCase.test_realcopy_hmac  sZ     YYtyy)
ff9WWY28828845r   c                 0   t        j                  dd      }|j                  d       |j                         }| j	                  |j                         |j                         d       | j	                  |j                         |j                         d       y )Nr   r   r+      some random text-Digest of copy doesn't match original digest.3Hexdigest of copy doesn't match original hexdigest.)r.   r   r0   r/   r   r    r   r   s      r   test_equalityzCopyTestCase.test_equality  so     YYv2
		%&WWYbiik;	=A	Cr   c                 ~   t        j                  dd      }|j                  d       |j                         }| j	                  t        |      t        |      k7  d       | j                  |j                         |j                         d       | j                  |j                         |j                         d       y )Nr   r   r+   r	  r   r
  r  )	r.   r1   r0   r/   r  r  r   r    r   r   s      r   test_equality_newzCopyTestCase.test_equality_new  s     XXf1
		%&WWYrFbfB	
 	biik;	=A	Cr   )r   r   r   r   r   r   r  r   skipIfr6   r  r  r  r   r   r   r   r     s    '^''1+ 2+ (^''1& 2& X__\T)+GH'^''16 2 I6 (^''1C 2C (^''1C 2Cr   r   c                   T    e Zd Zd Zd Z ej                  edu d      d        Zd Z	y)CompareDigestTestCasec                     | j                  t        j                         t        %| j	                  t        j                  t               y | j	                  t        j                  t
               y r   )_test_compare_digestr.   r   openssl_compare_digestr  operator_compare_digestr   s    r   test_hmac_compare_digestz.CompareDigestTestCase.test_hmac_compare_digest)  sF    !!$"5"56!-MM$--/EFMM$--/FGr   c                 .    | j                  t               y r   )r  r  r   s    r   test_operator_compare_digestz2CompareDigestTestCase.test_operator_compare_digest0  s    !!"9:r   Nztest requires _hashlibc                 .    | j                  t               y r   )r  r  r   s    r   test_openssl_compare_digestz1CompareDigestTestCase.test_openssl_compare_digest3  s    !!"89r   c                    d\  }}| j                  t        |||       d\  }}| j                  t        |||       d\  }}| j                  t        |||       d\  }}| j                  t        |||       d\  }}| j                  t        |||       d\  }}| j                   |||             d\  }}| j                   |||             d\  }}| j                   |||             d	\  }}| j                   |||             d
\  }}| j                   |||             d\  }}| j                   |||             t	        d      t	        d      }}| j                   |||             t	        d      t	        d      }}| j                   |||             t	        d      t	        d      }}| j                   |||             t	        d      d}}| j                   |||             | j                   |||             t	        d      d}}| j                   |||             | j                   |||             t	        d      d}}| j                   |||             | j                   |||             d\  }}| j                   |||             d\  }}| j                   |||             d\  }}| j                   |||             d\  }}| j                  t        |||       d\  }}| j                  t        |||       d\  }}| j                  t        |||       d\  }}| j                  t        |||       d\  }}| j                  t        |||        G d dt
              } |d       |d      }}| j                   |||              |d      d}}| j                   |||              |d       |d      }}| j                   |||              G d dt              } |d       |d      }}| j                   |||              |d      d}}| j                   |||              |d       |d      }}| j                   |||             y )N)d      )r     foobar)r  r  )foobarr  )r  r  )r     foo)   ޭs   ޭ)r     foobaz)r!  s   )r  r  )r!  r!  r  r   r"  )r  r  )r   r  )r  foobaz)r  rO   )   fooär$  c                       e Zd Zd Zy)9CompareDigestTestCase._test_compare_digest.<locals>.mystrc                      yNFr   r&   others     r   __eq__z@CompareDigestTestCase._test_compare_digest.<locals>.mystr.__eq__      r   Nr   r   r   r+  r   r   r   mystrr&        r   r.  r  r#  c                       e Zd Zd Zy);CompareDigestTestCase._test_compare_digest.<locals>.mybytesc                      yr(  r   r)  s     r   r+  zBCompareDigestTestCase._test_compare_digest.<locals>.mybytes.__eq__  r,  r   Nr-  r   r   r   mybytesr1    r/  r   r3  )r   r   assertFalser  r   strr[   )r&   r   abr.  r3  s         r   r  z*CompareDigestTestCase._test_compare_digest7  sU   1)^Q:1)^Q:1)^Q:"1)^Q:"1)^Q: !11-./11-. $11-.711-. $1q!,-71q!,- #Yy%91q!,- #Yv%611-. #Yy%911-. #Y1q!,-q!,- #V11-.1-. #Y11-.1-. "1q!,- 11-. "11-. #1)^Q:"1)^Q:1)^Q:1)^Q:1)^Q:	C 	 Xh1q!,-X1q!,-Xh11-.	e 	 y!79#51q!,-y!91q!,-y!79#511-.r   )
r   r   r   r  r  r   r  r  r  r  r   r   r   r  r  '  s<    H; X__+t35MN: O:g/r   r  __main__)"r!   r   r.   rD   r   unittest.mockr   test.supportr   r   	_operatorr   r  _hashlibr6   r   r   r   r4   r   r  ImportError_sha256r   r   TestCaser   r   r   r   r   r  r   mainr   r   r   <module>rA     s          E @	"#'/A#
X(++ Xv
LD(++ LD^MX&& M 'X&& ':C8$$ :Czw/H-- w/t zHMMO _  "LFJ!	"  Ms#   C  C3  C0/C03C=<C=