관리-도구
편집 파일: hmac.cpython-39.opt-1.pyc
a �a} � @ s: d dl mZmZmZ d dlmZmZ G dd� dej�ZdS )� )�InvalidSignature�UnsupportedAlgorithm�_Reasons)� constant_time�hashesc @ sp e Zd Zdeejd�dd�Zeejd�dd��Zd d�dd �Z edd �dd�Z ed�d d�Zedd�dd�ZdS )�_HMACContextN)�key� algorithmc C s� || _ || _|d u r�| jj�� }| j�|| jjjk� | jj�|| jjj�}| j� |�}|| jjjkrzt d�|j�t j��| jj�|�}| jj�||t|�|| jjj�}| j�|dk� || _|| _d S )Nz*{} is not a supported hash on this backendr )� _algorithm�_backend�_lib�HMAC_CTX_new�openssl_assert�_ffi�NULL�gc� HMAC_CTX_freeZ_evp_md_from_algorithmr �format�namer ZUNSUPPORTED_HASH�from_bufferZHMAC_Init_ex�len�_ctx�_key)�selfZbackendr r �ctxZevp_mdZkey_ptr�res� r �O/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/hmac.py�__init__ s* ���z_HMACContext.__init__)�returnc C s | j S )N)r )r r r r r * s z_HMACContext.algorithmc C sp | j j�� }| j �|| j jjk� | j j�|| j jj�}| j j�|| j �}| j �|dk� t | j | j| j|d�S )Nr )r ) r r r r r r r r Z HMAC_CTX_copyr r r r )r Z copied_ctxr r r r �copy. s ��z_HMACContext.copy)�datar c C s: | j j�|�}| j j�| j|t|��}| j �|dk� d S )Nr )r r r r ZHMAC_Updater r r )r r! Zdata_ptrr r r r �update: s z_HMACContext.updatec C sz | j j�d| j jj�}| j j�d�}| j j�| j||�}| j �|dk� | j �|d | jj k� | j j� |�d |d � S )Nzunsigned char[]zunsigned int *r )r r �newr ZEVP_MAX_MD_SIZEZ HMAC_Finalr r r �digest_size�buffer)r �bufZoutlenr r r r �finalize? s �z_HMACContext.finalize)� signaturer c C s | � � }t�||�std��d S )NzSignature did not match digest.)r'