o )%a @sZddlmZddlmZmZmZddlmZddlm Z ddl m Z Gddde j Z dS) )utils)AlreadyFinalizedUnsupportedAlgorithm_Reasons) _get_backend) HMACBackend)hashesc@sleZdZ  ddedejfddZedZ deddfd d Z dd d Z defd dZ deddfddZ dS)HMACNkey algorithmcCslt|}t|tstdtjt|tjstd||_ ||_ ||_ |dur1|j ||j |_dS||_dS)Nz.Backend object does not implement HMACBackend.z*Expected instance of hashes.HashAlgorithm.)r isinstancerrrBACKEND_MISSING_INTERFACEr HashAlgorithm TypeError _algorithm_backend_keycreate_hmac_ctxr _ctx)selfr r backendctxrE/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/hmac.py__init__s   z HMAC.__init__rdatareturncCs.|jdur tdtd||j|dS)NContext was already finalized.r)rrr_check_byteslikeupdate)rrrrrr-s  z HMAC.updatecCs.|jdur tdt|j|j|j|jdS)Nr)rr)rrr rr rcopy)rrrrr 3s z HMAC.copycCs&|jdur td|j}d|_|S)Nr)rrfinalize)rdigestrrrr!=s  z HMAC.finalize signaturecCs:td||jdurtd|jd}|_||dS)Nr#r)r _check_bytesrrverify)rr#rrrrr%Ds  z HMAC.verify)NN)rr )__name__ __module__ __qualname__bytesrrrrread_only_propertyr rr r!r%rrrrr s   r N) cryptographyrcryptography.exceptionsrrrcryptography.hazmat.backendsr'cryptography.hazmat.backends.interfacesrcryptography.hazmat.primitivesr HashContextr rrrrs