a
    ññ"h[  ã                   @   s¨   d dl Zzd dlZW n& ey:   dZdZd dlmZ Y n0 e	ej
ƒZejZd dlZedd„ edƒD ƒƒZedd„ edƒD ƒƒZdZG dd„ dƒZdd
d„Zdd„ ZdS )é    N)Ú_compare_digestc                 c   s   | ]}|d A V  qdS )é\   N© ©Ú.0Úxr   r   ú,/opt/python-3.9.21/usr/lib/python3.9/hmac.pyÚ	<genexpr>   ó    r	   é   c                 c   s   | ]}|d A V  qdS )é6   Nr   r   r   r   r   r	      r
   c                   @   sv   e Zd ZdZdZddd„Zedd„ ƒZed	d
„ ƒZedd„ ƒZ	edd„ ƒZ
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚHMACé@   )Ú_digest_consÚ_innerÚ_outerÚ
block_sizeÚdigest_sizeNÚ c                    sF  t |ttfƒs tdt|ƒj ƒ‚ˆ s,tdƒ‚tˆ ƒr<ˆ | _n,t ˆ tƒrXd‡ fdd„	| _nd‡ fdd„	| _|  ¡ | _	|  ¡ | _
| j
j| _t| j
dƒrÂ| j
j}|dk rÜt d	|| jf td
¡ | j}nt d| j td
¡ | j}|| _t|ƒ|k rþ|  |¡ ¡ }| |d¡}| j	 | t¡¡ | j
 | t¡¡ |d urB|  |¡ d S )Nz,key: expected bytes or bytearray, but got %rz'Missing required parameter 'digestmod'.r
   c                    s   t  ˆ | ¡S ©N©Ú_hashlibÚnew©Úd©Ú	digestmodr   r   Ú<lambda>=   r
   zHMAC.__init__.<locals>.<lambda>c                    s
   ˆ   | ¡S r   ©r   r   r   r   r   r   ?   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
   )r
   )Ú
isinstanceÚbytesÚ	bytearrayÚ	TypeErrorÚtypeÚ__name__Úcallabler   Ústrr   r   r   Úhasattrr   Ú	_warningsÚwarnÚ	blocksizeÚRuntimeWarningÚlenÚdigestÚljustÚupdateÚ	translateÚtrans_5CÚtrans_36)ÚselfÚkeyÚmsgr   r-   r   r   r   Ú__init__&   sF    



ÿþÿþ
zHMAC.__init__c                 C   s   d| j j S )Nzhmac-)r   Úname©r6   r   r   r   r:   _   s    z	HMAC.namec                 C   s   | j S r   )r   r;   r   r   r   Údigest_consc   s    zHMAC.digest_consc                 C   s   | j S r   )r   r;   r   r   r   Úinnerg   s    z
HMAC.innerc                 C   s   | j S r   )r   r;   r   r   r   Úouterk   s    z
HMAC.outerc                 C   s   | j  |¡ d S r   )r   r2   )r6   r8   r   r   r   r2   o   s    zHMAC.updatec                 C   s:   | j  | j ¡}| j|_| j|_| j ¡ |_| j ¡ |_|S r   )Ú	__class__Ú__new__r   r   r   Úcopyr   )r6   Úotherr   r   r   rA   s   s    z	HMAC.copyc                 C   s   | j  ¡ }| | j ¡ ¡ |S r   )r   rA   r2   r   r0   ©r6   Úhr   r   r   Ú_current€   s    
zHMAC._currentc                 C   s   |   ¡ }| ¡ S r   )rE   r0   rC   r   r   r   r0   ‰   s    zHMAC.digestc                 C   s   |   ¡ }| ¡ S r   )rE   Ú	hexdigestrC   r   r   r   rF   “   s    zHMAC.hexdigest)Nr   )r'   Ú
__module__Ú__qualname__r-   Ú	__slots__r9   Úpropertyr:   r<   r=   r>   r2   rA   rE   r0   rF   r   r   r   r   r      s    
9



	
r   r   c                 C   s   t | ||ƒS r   )r   )r7   r8   r   r   r   r   r   ™   s    r   c                    sâ   t d ur(tˆ tƒr(ˆ tv r(t  | |ˆ ¡S tˆ ƒr6ˆ }n(tˆ tƒrPd‡ fdd„	}nd	‡ fdd„	}|ƒ }|ƒ }t|ddƒ}t| ƒ|krŽ|| ƒ ¡ } | d|t| ƒ   } | 	|  
t¡¡ | 	|  
t¡¡ | 	|¡ | 	| ¡ ¡ | ¡ S )
Nr
   c                    s   t  ˆ | ¡S r   r   r   ©r0   r   r   r   ½   r
   zdigest.<locals>.<lambda>c                    s
   ˆ   | ¡S r   r   r   rK   r   r   r   ¿   r
   r   r   r!   )r
   )r
   )Ú_hashopensslr"   r)   Ú_openssl_md_methsZhmac_digestr(   Úgetattrr/   r0   r2   r3   r5   r4   )r7   r8   r0   r<   r=   r>   r-   r   rK   r   r0   ­   s,    	ÿÿ

r0   )Nr   )Úwarningsr+   r   rL   ÚImportErrorrM   Ú	_operatorr   Zcompare_digestÚ	frozensetZopenssl_md_meth_namesZhashlibr#   Úranger4   r5   r   r   r   r0   r   r   r   r   Ú<module>   s   
~
