
    =Og$                         	 d dl Z	 d dlZej        Z eej                  Zn# e$ r dZdZd dl	m
Z Y nw xY wd dlZ ed  ed          D                       Z ed  ed          D                       ZdZ G d d          Zdd	Zd
 ZdS )    N)_compare_digestc              #       K   | ]	}|d z  V  
dS )\   N .0xs     /usr/lib64/python3.11/hmac.py	<genexpr>r      &      00!d(000000       c              #       K   | ]	}|d z  V  
dS )6   Nr   r   s     r
   r   r      r   r   c                   `    e Zd Z	 dZdZddZd Zd Zed             Z	d	 Z
d
 Zd Zd Zd ZdS )HMAC@   )_hmac_inner_outer
block_sizedigest_sizeN c                    	 t          |t          t          f          s$t          dt	          |          j        z            |st          d          t          rct          |t          t          f          rG	 | 	                    |||           d S # t          j
        $ r |                     |||           Y d S w xY w|                     |||           d S )Nz,key: expected bytes or bytearray, but got %rz&Missing required argument 'digestmod'.)
isinstancebytes	bytearray	TypeErrortype__name___hashopensslstr	_functype
_init_hmacUnsupportedDigestmodError	_init_oldselfkeymsg	digestmods       r
   __init__zHMAC.__init__&   s    	 #y122 	aJTRUYYM__``` 	FDEEE 	0Jy3	2BCC 	04S)444449 4 4 4sC3333334 NN3Y/////s   7B &B:9B:c                     t          j        |||          | _        | j        j        | _        | j        j        | _        d S )N)r+   )r!   hmac_newr   r   r   r'   s       r
   r$   zHMAC._init_hmacB   s8    !*3yIII
:1*/r   c                 l   t                    r}n"t          t                    rd
fd	}nd
fd	}d | _         |            | _         |            | _        | j        j        | _        t          | j        d          r?| j        j        }|dk     r,t          j
        d|| j        fz  t          d           | j        }n*t          j
        d| j        z  t          d           | j        }t          |          |k    r ||                                          }|| _        |                    |d	          }| j                            |                    t$                               | j                            |                    t&                               ||                     |           d S d S )Nr   c                 .    t          j        |           S N_hashlibnewdr+   s    r
   <lambda>z HMAC._init_old.<locals>.<lambda>K   s    Y(B(B r   c                 .                         |           S r1   r4   r5   s    r
   r7   z HMAC._init_old.<locals>.<lambda>M   s    	a(8(8 r   r      z:block_size of %d seems too small; using our default of %d.   z<No block_size attribute on given digest object; Assuming %d.    r   )callabler   r"   r   r   r   r   hasattrr   	_warningswarn	blocksizeRuntimeWarninglendigestljustupdate	translatetrans_5Ctrans_36)r(   r)   r*   r+   digest_consrB   s      `  r
   r&   zHMAC._init_oldG   s   I 	9#KK	3'' 	9BBBBBKK88888K
!kmm!kmm;24;-- 	'.I2~~  03<dn2M N-q2 2 2 !N	N *-1^=)1. . . Is88i+c""))++C $ii	5))3==223333==22333?KK ?r   c                 F    | j         r| j         j        S d| j        j         S )Nzhmac-)r   namer   )r(   s    r
   rM   z	HMAC.namen   s)    : 	.:?"-4;+---r   c                 N    	 | j         p| j        }|                    |           d S r1   )r   r   rG   )r(   r*   insts      r
   rG   zHMAC.updateu   s+    :z(T[Cr   c                 L   	 | j                             | j                   }| j        |_        | j        r-| j                                        |_        d x|_        |_        nCd |_        | j                                        |_        | j                                        |_        |S r1   )	__class____new__r   r   copyr   r   )r(   others     r
   rS   z	HMAC.copyz   s    	
 &&t~66 ,: 	.*//++EK*..EL5<<EK;++--EL;++--ELr   c                     	 | j         r| j         S | j                                        }|                    | j                                                   |S r1   )r   r   rS   rG   r   rE   r(   hs     r
   _currentzHMAC._current   sS    	 : 	:  ""AHHT[''))***Hr   c                 T    	 |                                  }|                                S r1   )rX   rE   rV   s     r
   rE   zHMAC.digest   s$    	 MMOOxxzzr   c                 T    	 |                                  }|                                S r1   )rX   	hexdigestrV   s     r
   r[   zHMAC.hexdigest   s"    	MMOO{{}}r   Nr   )r    
__module____qualname__rB   	__slots__r,   r$   r&   propertyrM   rG   rS   rX   rE   r[   r   r   r
   r   r      s         II0 0 0 080 0 0
% % %N . . X.  
  "
 
 
      r   r   r   c                 &    	 t          | ||          S r1   )r   )r)   r*   r+   s      r
   r4   r4      s      S)$$$r   c                 :   	 t           Ht          t          t          f          r,	 t          j        | |          S # t           j        $ r Y nw xY wt                    r}n"t          t                    rdfd	}ndfd	} |            } |            }t          |dd          }t          |           |k    r ||           	                                } | d|t          |           z
  z  z   } |
                    |                     t                               |
                    |                     t                               |
                    |           |
                    |	                                           |	                                S )Nr   c                 .    t          j        |           S r1   r2   r6   rE   s    r
   r7   zdigest.<locals>.<lambda>   s    HL$;$; r   c                 .                         |           S r1   r9   rd   s    r
   r7   zdigest.<locals>.<lambda>   s    FJJqMM r   r   r   r<   r=   )r!   r   r"   r#   hmac_digestr%   r>   getattrrD   rE   rG   rH   rJ   rI   )r)   r*   rE   rK   innerouterrB   s     `    r
   rE   rE      s    JvY7G$H$H	+Cf===5 	 	 	D	  2	FC	 	  2;;;;;11111KMMEKMME|R00I
3xx)k#%%''
9s3xx/0
0C	LLx(()))	LLx(()))	LL	LL   <<>>s   = AAr\   )warningsr@   r3   r!   compare_digestr   openssl_sha256r#   ImportError	_operatorr   hashlibr   rangerI   rJ   r   r   r4   rE   r   r   r
   <module>rq      sE  
    2#### "0N\011II  < < <LI;;;;;;;;<    500UU3ZZ00000500UU3ZZ00000 J J J J J J J JX% % % %(         s   # 55