3 ê…h1 ã @ sˆ d dl mZmZmZ d dlmZ d dlmZmZm Z d dl mZ d dlm Z d dlmZmZ ejejƒejejƒG dd„ deƒƒƒZd S ) é )Úabsolute_importÚdivisionÚprint_function)Úutils)ÚAlreadyFinalizedÚUnsupportedAlgorithmÚ_Reasons)Ú_get_backend)ÚHMACBackend)ÚhashesÚmacc @ s@ e Zd Zd dd„ZejdƒZdd„ Zdd„ Zd d „ Z dd„ Z dS )ÚHMACNc C sj t |ƒ}t|tƒstdtjƒ‚t|tjƒs2tdƒ‚|| _ || _ || _|d kr`| j j|| j ƒ| _n|| _d S )Nz.Backend object does not implement HMACBackend.z*Expected instance of hashes.HashAlgorithm.)r Ú isinstancer r r ZBACKEND_MISSING_INTERFACEr Z HashAlgorithmÚ TypeErrorÚ _algorithmÚ_backendÚ_keyZcreate_hmac_ctxÚ algorithmÚ_ctx)ÚselfÚkeyr ÚbackendÚctx© r ú/usr/lib64/python3.6/hmac.pyÚ__init__ s z HMAC.__init__r c C s. | j d krtdƒ‚tjd|ƒ | j j|ƒ d S )NzContext was already finalized.Údata)r r r Z_check_byteslikeÚupdate)r r r r r r * s zHMAC.updatec C s. | j d krtdƒ‚t| j| j| j| j jƒ d�S )NzContext was already finalized.)r r )r r r r r r Úcopy)r r r r r 0 s z HMAC.copyc C s&