File: //usr/lib64/python3.8/__pycache__/hmac.cpython-38.pyc
U
&.e @ s d Z ddlZddlmZ zddlZW n ek
r@ dZdZ Y nX e
ejZ ddlZddlZ
ddlZedd edD Zedd edD ZdZG dd d Zd
d ZG dd
d
ejZe
reZdddZdd ZdS )zqHMAC (Keyed-Hashing for Message Authentication) module.
Implements the HMAC algorithm as described by RFC 2104.
N)_compare_digestc c s | ]}|d A V qdS )\ N .0xr r /usr/lib64/python3.8/hmac.py <genexpr> s r c c s | ]}|d A V qdS )6 Nr r r r r r s c @ sR e Zd ZdZdZdddZedd Zd d
Zdd Z d
d Z
dd Zdd ZdS )HMACz~RFC 2104 HMAC class. Also complies with RFC 4231.
This supports the API for Cryptographic Hash Functions (PEP 247).
@ N c sV t rtdt|ttfs0tdt|j s<tdt rL | _
n,t trhd fdd | _
nd fdd | _
|
| _|
| _
| j
j| _t| j
dr| j
j}|d k rtd
|| jf td | j}ntd| j td | j}|| _t||kr|
| }||d
}| j|t | j
|t |dk rR| | dS )a? Create a new HMAC object.
key: bytes or buffer, key for the keyed hash object.
msg: bytes or buffer, Initial input for the hash or None.
digestmod: A hash name suitable for hashlib.new(). *OR*
A hashlib constructor returning a new hash object. *OR*
A module supporting PEP 247.
Required as of 3.8, despite its position after the optional
msg argument. Passing it as a keyword argument is
recommended, though not required for legacy API reasons.
z9This class is not available in FIPS mode. Use hmac.new().,key: expected bytes or bytearray, but got %rz'Missing required parameter 'digestmod'. c s t | S N_hashlibnewd digestmodr r <lambda>? r zHMAC.__init__.<locals>.<lambda>c s
| S r r r r r r r A r
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. N)r )r )_hashlibopenssl
get_fips_mode
ValueError
isinstancebytes bytearray TypeErrortype__name__callabledigest_consstrouterinnerdigest_sizehasattrr _warningswarn blocksizeRuntimeWarninglendigestljustupdate translatetrans_5Ctrans_36)selfkeymsgr r1 r r r __init__# sR
z
HMAC.__init__c C s d| j j S )Nzhmac-)r, name)r: r r r r>