
    <e9g                        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 n# e$ r dZdZdZdZY nw xY w	 d dlZn# e$ r dZY nw xY wd Z G d d	ej                  Z G d
 dej                  Z G d dej                  Z G d dej                  Z G d dej                  Zedk    r ej                      dS dS )    N)hashlib_helpercheck_disallow_instantiation)_compare_digest)HMAC)hmac_new)compare_digestc                 F     t          j                    fd            }|S )Nc                      t          j                    5  t          j        dt                      | i |cd d d            S # 1 swxY w Y   d S )Nignore)category)warningscatch_warningsfilterwarningsDeprecationWarning)argskwargsfuncs     %/usr/lib/python3.11/test/test_hmac.pywrapperzignore_warning.<locals>.wrapper   s    $&& 	) 	)#H-?A A A A4(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   #AA	A	)	functoolswraps)r   r   s   ` r   ignore_warningr      s8    _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dS )TestVectorsTestCasec                    |                      |                                                                |                                           |                      |                                t	          j        |                     |                      |j        d|            |                      |j        |           |                      |j        |           d S )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%?%?@@@!3!3!3444444z22222r   c                 	   t          j        |||          }|                     |||||           t          j        |||          }|                     |||||           t          j        ||          }|                                }	|	                    d           |                    |           |                     |                                                                |                                           t          j        |||          }|                     |||||           t          j        |d |          }|                    |           |                     |                                                                |                                           t          j        ||          }|                    |           |                     |                                                                |                                           t          j        |||          }|                     |                                                                |                                           |                     t          j	        |||          t          j        |                     |                     t          j	        |||          t          j        |                     t           j                            t           j                  }|                    |||           |                     |||||           t          et          |||          }|                     |||||           t          ||          }|                                }	|	                    d           |                    |           |                     |                                                                |                                           t          t           d|           }
t          |||
          }|                     |||||           t           j                            t           j                  }|                    |||           |                     |||||           d S d S )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   sO    Ic48444""vxj	
 	
 	
 Ic48444""vxj	
 	
 	
 IcX...VVXX
		.!!!	,,..???HS$(333""vxj	
 	
 	
 HS$(333	,,..???HSH---	,,..???HS$(333,,..???KT(333v&&	
 	
 	
 	KT(333v&&	
 	
 	

 Idi((	C222""vxj	
 	
 	
 !3999A&&68[*   3(333ABIIn%%%HHTNNNQ[[]]0022FLLNNCCC<)>H)>)>??D3555A&&68[*   	!!$),,ALLdhL77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           d S )Nc           	      T                         | ||t          j        ddd           d S )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 	4 	4 	/2	4 	4 	4 	2	4 	4 	4 	eArll##2	4 	4 	4 	'2	4 	4 	4 	I2	4 	4 	4 	82	4 	4 	4 	4 	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           d S )Nc           	      T                         | ||t          j        ddd           d S )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
   	 	 	 	 	 	:	< 	< 	< 	/:	< 	< 	< 	:	< 	< 	< 	eArll##:	< 	< 	< 	':	< 	< 	< 	I:	< 	< 	< 	8:	< 	< 	< 	< 	<r   c                 T     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           d S )(Nc           	      P    |         }                     | ||           d S )NrC   )r<   )	r8   r9   
hexdigestsr    r%   r$   	hash_namer:   r&   s	       r   hmactestz9TestVectorsTestCase._rfc4231_test_cases.<locals>.hmactest   sG    )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   | ]}|V  d S N ).0xs     r   	<genexpr>z:TestVectorsTestCase._rfc4231_test_cases.<locals>.<genexpr>  s"      <<1Q<<<<<<r   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   sS   		 		 		 		 		 		 		 		 		 	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                 J    |                      t          j        ddd           d S )Nr      rB   )r   rD   r   r&   s    r   test_sha224_rfc4231z'TestVectorsTestCase.test_sha224_rfc4231F  $      2rBBBBBr   r   c                 J    |                      t          j        ddd           d S )Nr       rB   )r   rD   r   r   s    r   test_sha256_rfc4231z'TestVectorsTestCase.test_sha256_rfc4231J  r   r   r   c                 J    |                      t          j        ddd           d S )Nr   0      )r   rD   r   r   s    r   test_sha384_rfc4231z'TestVectorsTestCase.test_sha384_rfc4231N  $      2sCCCCCr   r   c                 J    |                      t          j        ddd           d S )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                     |                     t                    5  t          j        dd|           |                     d           d d d            n# 1 swxY w Y   d|_	        |                     t                    5  t          j        dd|           |                     d	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nc                   $    e Zd ZdZd Zd Zd ZdS )JTestVectorsTestCase.test_legacy_block_size_warnings.<locals>.MockCrazyHashz#Ain't no block_size attribute here.c                 N    t          j        | | _        | j        j        | _        d S r   )rD   r   _xr$   )r&   r   s     r   __init__zSTestVectorsTestCase.test_legacy_block_size_warnings.<locals>.MockCrazyHash.__init__Z  s#    !.$/#'7#6   r   c                 :    | j                             |           d S r   )r   r0   )r&   vs     r   r0   zQTestVectorsTestCase.test_legacy_block_size_warnings.<locals>.MockCrazyHash.update]  s    q!!!!!r   c                 4    | j                                         S r   )r   r    r   s    r   r    zQTestVectorsTestCase.test_legacy_block_size_warnings.<locals>.MockCrazyHash.digest_  s    w~~'''r   N)__name__
__module____qualname____doc__r   r0   r    r   r   r   MockCrazyHashr   X  sG        557 7 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 		E!'>:::"">22 G G	$>>>>		EFFFG G G G G G G G G G G G G G G ()M$"">22 E E	$>>>>		CDDDE E E E E E E E E E E E E E E		E 		E 		E 		E 		E 		E 		E 		E 		E 		E 		E 		E 		E 		E 		E 		E 		E 		EsY   5D-B	DB	DB	$D-C:.D:C>	>DC>	DDDc                    |                      t          d          5  d}d}t          j        ||d           ddd           n# 1 swxY w Y   |                      t          d          5  t          j        ||           ddd           n# 1 swxY w Y   |                      t          d          5  t          j        ||d           ddd           dS # 1 swxY w Y   dS )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F 	1 	1CDIc440000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 ##I/EFF 	  	 HS$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ##I/EFF 	3 	3Ictr2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s5   AAA*BBB2CCCc                 .   t          t          d          }	 t          j        |d<   t          j        ddd                                          }d}|                     ||           |                    d           d S # |                    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  s    !>??	">E%LFJ>>BBDDIYHY111IIeEIIes   AA= =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 3 3H H HT (^'t<<<'4 '4 =<'4R (^'===%< %< >=%<Nu u un (^'$???C C @?C (^'$???C C @?C (^'$???D D @?D (^'$???D D @?D (^'11E E 21E,	3 	3 	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d
S )ConstructorTestCase@6c845b47f52b3b47f6590c502db7825aad757bf4fadc8fa972f7cd2e76a5bdebr   c                     	 t          j        dd           d S # t          $ r |                     d           Y d S w xY w)Nr   r   r+   z+Standard constructor call raised exception.)r.   r   	Exceptionr   r   s    r   test_normalzConstructorTestCase.test_normal  s^    	EIf111111 	E 	E 	EIICDDDDDD	Es    ==c                     |                      t                    5  t          j        dd          }d d d            d S # 1 swxY w Y   d S Nr8   r   r+   )r   r   r.   r   r&   r'   s     r   test_with_str_keyz%ConstructorTestCase.test_with_str_key  s     y)) 	5 	5	%8444A	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5   ?AAc                     |                      t                    5  t          j        dd          }d d d            d S # 1 swxY w Y   d S r   )r   r   r.   r1   r   s     r   test_dot_new_with_str_keyz-ConstructorTestCase.test_dot_new_with_str_key  s     y)) 	4 	4(333A	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4r   c                     	 t          j        ddd          }n%# t          $ r |                     d           Y nw xY w|                     |                                | j                   d S )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  s~    	O	&-8DDDAA 	O 	O 	OIIMNNNNN	O66666s    <<c                    	 t          j        t          d          t          d          d          }n%# t          $ r |                     d           Y nw xY w|                     |                                | j                   d S )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  s    	U	)F++Y}-E-E$,. . .AA 	U 	U 	UIISTTTTT	U66666s   14 AAc                     	 t          j        dt          d          d          }n%# t          $ r |                     d           Y nw xY w|                     |                                | j                   d S )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PPPAA 	P 	P 	PIINOOOOO	P66666s   $' A	A	c                     	 t          j        ddt          j                  }d S # t          $ r |                     d           Y d S 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~66AAA 	P 	P 	PIINOOOOOO	Ps    $ AANzneed _hashlibc                     t          | t                     |                     t          d          5  d t          _        d d d            d S # 1 swxY w Y   d S )Nzimmutable type)r   C_HMACr   r   valuer   s    r   test_internal_typesz'ConstructorTestCase.test_internal_types  s     	%T6222##I/?@@ 	  	 FL	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   AAAzneed _sha256c                 r   t          j        ddt          j                  }|                     |                                | j                   |                     |j        d           t          j        ddt          j                  }|                     |t          j
        | j                             d S )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    Ifm}7KLLL666///V]M4HII!3DM!B!BCCCCCr   )r   r   r   r   r   r   r   r   r   r   r   r   r   unittest
skipUnlessr   r   r   r   r   r   r   r   r     s        	K  (^'11E E 21E (^'115 5 215 (^'114 4 214 (^'117 7 217 (^'117 7 217 (^'117 7 217 (^'11P P 21P Xt+_==    >=  Xd2NCCD D DCD D Dr   r   c                   @    e Zd Z ej        d          d             ZdS )SanityTestCaser   c                 "   	 t          j        dd          }|                    d           |                                 |                                 |                                 d S # t          $ r |                     d           Y d S 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77HHJJJKKMMMFFHHHHH 	M 	M 	MIIKLLLLLL	Ms   A'A+ +BBN)r   r   r   r   r   r   r   r   r   r   r     s@        '^'11
M 
M 21
M 
M 
M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dS )	CopyTestCaser   c                    t           j                            t           j                  }|                    ddd           |                                }|                     t          |j                  t          |j                  d           |                     t          |j                  t          |j                  d           d S )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     Yty))
VVx888WWYYbi$ry//)	+ 	+ 	+bi$ry//)	+ 	+ 	+ 	+ 	+r   c                 F   t           j                            t           j                  }|                    ddd           |                                }|                     t          |          t          |          k    d           |                     t          |j                  t          |j                  k    d           |                     t          |j                  t          |j                  k    d           | 	                    |j
        d            d S )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     Yty))
VVx888WWYY2"R&&(*NOOO29BI64	6 	6 	629BI64	6 	6 	6bh%%%%%r   Nztest requires _hashopensslc                 *   t           j                            t           j                  }|                    ddd           |                                }|                     t          |j                  t          |j                  k               d S )Nr   r   r   r+   )r.   r   r2   r7   r/   r   r   r   r   s      r   test_realcopy_hmaczCopyTestCase.test_realcopy_hmac  sm     Yty))
ff999WWYY2828455555r   c                 p   t          j        dd          }|                    d           |                                }|                     |                                |                                d           |                     |                                |                                d           d S )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  s     Yv222
		%&&&WWYYbiikk;	= 	= 	=A	C 	C 	C 	C 	Cr   c                    t          j        dd          }|                    d           |                                }|                     t          |          t          |          k    d           |                     |                                |                                d           |                     |                                |                                d           d S )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     Xf111
		%&&&WWYYrFFbffB	
 	
 	
 	biikk;	= 	= 	=A	C 	C 	C 	C 	Cr   )r   r   r   r   r   r   r  r   skipIfr6   r  r  r
  r   r   r   r   r     s       '^'11+ + 21+ (^'11& & 21& X_\T)+GHH'^'116 6 21 IH6 (^'11C C 21C (^'11C C 21C C Cr   r   c                   X    e Zd Zd Zd Z ej        edu d          d             Zd Z	dS )CompareDigestTestCasec                     |                      t          j                   t          '|                     t          j        t                     d S |                     t          j        t
                     d S r   )_test_compare_digestr.   r   openssl_compare_digestr   operator_compare_digestr   s    r   test_hmac_compare_digestz.CompareDigestTestCase.test_hmac_compare_digest!  s[    !!$"5666!-MM$-/EFFFFFMM$-/FGGGGGr   c                 :    |                      t                     d S r   )r  r  r   s    r   test_operator_compare_digestz2CompareDigestTestCase.test_operator_compare_digest(  s    !!"9:::::r   Nztest requires _hashlibc                 :    |                      t                     d S r   )r  r  r   s    r   test_openssl_compare_digestz1CompareDigestTestCase.test_openssl_compare_digest+  s    !!"899999r   c                 "   d\  }}|                      t          |||           d\  }}|                      t          |||           d\  }}|                      t          |||           d\  }}|                      t          |||           d\  }}|                      t          |||           d\  }}|                      |||                     d\  }}|                      |||                     d\  }}|                      |||                     d	\  }}|                      |||                     d
\  }}|                      |||                     d\  }}|                      |||                     t	          d          t	          d          }}|                      |||                     t	          d          t	          d          }}|                      |||                     t	          d          t	          d          }}|                      |||                     t	          d          d}}|                      |||                     |                      |||                     t	          d          d}}|                      |||                     |                      |||                     t	          d          d}}|                      |||                     |                      |||                     d\  }}|                      |||                     d\  }}|                      |||                     d\  }}|                      |||                     d\  }}|                      t          |||           d\  }}|                      t          |||           d\  }}|                      t          |||           d\  }}|                      t          |||           d\  }}|                      t          |||            G d dt
                    } |d           |d          }}|                      |||                      |d          d}}|                      |||                      |d           |d          }}|                      |||                      G d dt                    } |d           |d          }}|                      |||                      |d          d}}|                      |||                      |d           |d          }}|                      |||                     d S )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dS )9CompareDigestTestCase._test_compare_digest.<locals>.mystrc                     dS NFr   r&   others     r   __eq__z@CompareDigestTestCase._test_compare_digest.<locals>.mystr.__eq__      ur   Nr   r   r   r'  r   r   r   mystrr"    #            r   r*  r  r  c                       e Zd Zd ZdS );CompareDigestTestCase._test_compare_digest.<locals>.mybytesc                     dS r$  r   r%  s     r   r'  zBCompareDigestTestCase._test_compare_digest.<locals>.mybytes.__eq__  r(  r   Nr)  r   r   r   mybytesr-    r+  r   r/  )r   r   assertFalser   r   strr[   )r&   r   abr*  r/  s         r   r  z*CompareDigestTestCase._test_compare_digest/  s#   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%9%91q!,,--- ##Yv%6%611--... ##Yy%9%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 	 	 	 uXh1q!,,---uX1q!,,---uXh11--...	 	 	 	 	e 	 	 	 wy!!779#5#51q!,,---wy!!91q!,,---wy!!779#5#511--.....r   )
r   r   r   r  r  r   r  r  r  r  r   r   r   r  r    s{        H H H; ; ; X_+t35MNN: : ON:g/ g/ g/ g/ 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   mainr   r   r   <module>r=     sv                E E E E E E E E @ @ @ @ @ @	"####''''''//////AAAAAAA " " "LFJ!	"#####   MMM  X X X X X(+ X X Xv
LD LD LD LD LD(+ LD LD LD^M M M M MX& M M M :C :C :C :C :C8$ :C :C :Czw/ w/ w/ w/ w/H- w/ w/ w/t zHMOOOOO s#   A AAA A&%A&