File: //lib/python3.10/__pycache__/hmac.cpython-310.pyc
o
    E�h%  �                   @   s�   d Z ddlZzddlZW n ey   dZdZddlmZ	 Y n	w ej	Z	e
ej�ZddlZe
dd� ed�D ��Ze
dd� ed�D ��ZdZG dd	� d	�Zddd�Zd
d� ZdS )zqHMAC (Keyed-Hashing for Message Authentication) module.
Implements the HMAC algorithm as described by RFC 2104.
�    N)�_compare_digestc                 c   �   � | ]}|d A V  qdS )�\   N� ��.0�xr   r   �/usr/lib/python3.10/hmac.py�	<genexpr>   �   � r
   �   c                 c   r   )�6   Nr   r   r   r   r	   r
      r   c                   @   sf   e Zd ZdZdZdZddd�Zdd	� Zd
d� Ze	dd
� �Z
dd� Zdd� Zdd� Z
dd� Zdd� ZdS )�HMACz~RFC 2104 HMAC class.  Also complies with RFC 4231.
    This supports the API for Cryptographic Hash Functions (PEP 247).
    �@   )�_hmac�_inner�_outer�
block_size�digest_sizeN� c                 C   s�   t |ttf�stdt|�j ��|std��tr<t |ttf�r<z
| �	|||� W dS  tj
y;   | �|||� Y dS w | �|||� 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.
        z,key: expected bytes or bytearray, but got %rz'Missing required parameter 'digestmod'.N)�
isinstance�bytes�	bytearray�	TypeError�type�__name__�_hashopenssl�str�	_functype�
_init_hmac�UnsupportedDigestmodError�	_init_old��self�key�msg�	digestmodr   r   r	   �__init__&