a a @ sB d dl Z d dlmZ d dlmZ d dlmZ G dd dejZdS ) N)utils)AlreadyFinalized)hashesc @ st e Zd ZdeejejdddZe ejdddZ eddd d Zd dddZedd dZ eddddZdS )HMACN)key algorithmbackendc C sP t |tjstd|| _|| _|d u rFddlm} ||| j | _ n|| _ d S )Nz*Expected instance of hashes.HashAlgorithm.r )r ) isinstancer HashAlgorithm TypeError _algorithm_keyZ,cryptography.hazmat.backends.openssl.backendr Zcreate_hmac_ctxr _ctx)selfr r r ctxZossl r I/usr/lib64/python3.9/site-packages/cryptography/hazmat/primitives/hmac.py__init__ s z HMAC.__init__)returnc C s | j S )N)r r r r r r % s zHMAC.algorithm)datar c C s. | j d u rtdtd| | j | d S )NContext was already finalized.r )r r r Z_check_byteslikeupdate)r r r r r r ) s zHMAC.updatec C s* | j d u rtdt| j| j| j dS )Nr )r )r r r r r copyr r r r r / s z HMAC.copyc C s&