
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ct„jí  ã               @   sž   d dl Zd dlmZ d dlZd dl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
„ ZG dd„ dejƒZejƒ r�eZddd„ZdS )é    N)Ú_compare_digestc             c   s   | ]}|d A V  qdS )é\   N© )Ú.0Úxr   r   ú/usr/lib64/python3.6/hmac.pyú	<genexpr>   s    r   é   c             c   s   | ]}|d A V  qdS )é6   Nr   )r   r   r   r   r   r      s    c               @   sN   e Zd ZdZd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é@   Nc                sf  t jƒ rtdƒ‚t|ttfƒs0tdt|ƒj ƒ‚ˆ d krLt	j
dtdƒ tj‰ tˆ ƒr\ˆ | _n,tˆ tƒrxd‡ fdd„	| _nd‡ fd	d„	| _| jƒ | _| jƒ | _| jj| _t| jd
ƒrâ| jj}|dk ràt	j
d|| jf tdƒ | j}nt	j
d| j tdƒ | j}|| _t|ƒ|k�r| j|ƒjƒ }|j|dƒ}| jj|jtƒƒ | jj|jtƒƒ |d k	�rb| j|ƒ d S )Nz*This class is not available in FIPS mode. zUse hmac.new().z,key: expected bytes or bytearray, but got %rz<HMAC() without an explicit digestmod argument is deprecated.é   ó    c                s   t jˆ | ƒS )N)Ú_hashlibÚnew)Úd)Ú	digestmodr   r   Ú<lambda>;   s    zHMAC.__init__.<locals>.<lambda>c                s
   ˆ j | ƒS )N)r   )r   )r   r   r   r   =   s    Ú
block_sizeé   z:block_size of %d seems too small; using our default of %d.z<No block_size attribute on given digest object; Assuming %d.ó    z9This class is not available in FIPS mode. Use hmac.new().)r   )r   )Ú_hashlibopensslÚget_fips_modeÚ
ValueErrorÚ
isinstanceÚbytesÚ	bytearrayÚ	TypeErrorÚtypeÚ__name__Ú	_warningsÚwarnÚPendingDeprecationWarningr   Zmd5ÚcallableÚdigest_consÚstrÚouterÚinnerÚdigest_sizeÚhasattrr   Ú	blocksizeÚRuntimeWarningÚlenÚdigestÚljustÚupdateÚ	translateÚtrans_5CÚtrans_36)ÚselfÚkeyÚmsgr   r*   r   )r   r   Ú__init__   sJ     





zHMAC.__init__c             C   s   d| j j S )Nzhmac-)r'   Úname)r3   r   r   r   r7   ]   s    z	HMAC.namec             C   s    t jƒ rtdƒ‚| jj|ƒ d S )Nz'hmac.HMAC is not available in FIPS mode)r   r   r   r'   r/   )r3   r5   r   r   r   r/   a   s    zHMAC.updatec             C   s:   | j j| j ƒ}| j|_| j|_| jjƒ |_| jjƒ |_|S )N)Ú	__class__Ú__new__r$   r(   r'   Úcopyr&   )r3   Úotherr   r   r   r:   h   s    z	HMAC.copyc             C   s   | j jƒ }|j| jjƒ ƒ |S )N)r&   r:   r/   r'   r-   )r3   Úhr   r   r   Ú_currentu   s    
zHMAC._currentc             C   s   | j ƒ }|jƒ S )N)r=   r-   )r3   r<   r   r   r   r-   ~   s    zHMAC.digestc             C   s   | j ƒ }|jƒ S )N)r=   Ú	hexdigest)r3   r<   r   r   r   r>   ˆ   s    zHMAC.hexdigest)NN)r   Ú
__module__Ú__qualname__r*   r6   Úpropertyr7   r/   r:   r=   r-   r>   r   r   r   r   r      s   
A	
r   c             C   sX   | d krt dƒ‚t| tƒr"| jƒ S t| ƒr2| dƒ} t| tjƒsFtdƒ‚| jjƒ j	ddƒS )Nz.'digestmod' argument is mandatory in FIPS moder   z6Only OpenSSL hashlib hashes are accepted in FIPS mode.Ú_ú-)
r   r   r%   Úlowerr#   r   ZHASHr   r7   Úreplace)r   r   r   r   Ú_get_openssl_name�   s    
rF   c               @   s   e Zd Zddd„ZdS )ÚHMAC_opensslNc             C   sL   t |ttfƒs tdt|ƒj ƒ‚t|ƒ}tjj	| ||d�}|rH|j
|ƒ |S )Nz,key: expected bytes or bytearray, but got %r)r   )r   r   r   r   r   r   rF   Ú_hmacopensslr   r9   r/   )Úclsr4   r5   r   r7   Úresultr   r   r   r9   Ÿ   s    
zHMAC_openssl.__new__)NN)r   r?   r@   r9   r   r   r   r   rG   ž   s   rG   c             C   s   t | ||ƒS )N)r   )r4   r5   r   r   r   r   r   ®   s    r   )NN)Úwarningsr    Ú	_operatorr   Zcompare_digestZhashlibr   r   rH   r   Úranger1   r2   r(   r   rF   rG   r   r   r   r   r   r   Ú<module>   s   z