3 ê…­h1 ã@sˆddlmZmZmZddlmZddlmZmZm Z ddl m Z ddl m Z ddlmZmZejejƒejejƒGdd„deƒƒƒZd S) é)Úabsolute_importÚdivisionÚprint_function)Úutils)ÚAlreadyFinalizedÚUnsupportedAlgorithmÚ_Reasons)Ú _get_backend)Ú HMACBackend)ÚhashesÚmacc@s@eZdZd dd„ZejdƒZdd„Zdd„Zd d „Z d d „Z dS)ÚHMACNcCsjt|ƒ}t|tƒstdtjƒ‚t|tjƒs2tdƒ‚||_ ||_ ||_ |dkr`|j j ||j ƒ|_n||_dS)Nz.Backend object does not implement HMACBackend.z*Expected instance of hashes.HashAlgorithm.)r Ú isinstancer rrZBACKEND_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__rcCs.|jdkrtdƒ‚tjd|ƒ|jj|ƒdS)NzContext was already finalized.Údata)rrrZ_check_byteslikeÚupdate)rrrrrr*s  z HMAC.updatecCs.|jdkrtdƒ‚t|j|j|j|jjƒd�S)NzContext was already finalized.)rr)rrr rrrÚcopy)rrrrr0s z HMAC.copycCs&|jdkrtdƒ‚|jjƒ}d|_|S)NzContext was already finalized.)rrÚfinalize)rZdigestrrrr:s   z HMAC.finalizecCs:tjd|ƒ|jdkrtdƒ‚|jd}|_|j|ƒdS)NÚ signaturezContext was already finalized.)rÚ _check_bytesrrÚverify)rr rrrrr"As   z HMAC.verify)NN) Ú__name__Ú __module__Ú __qualname__rrZread_only_propertyrrrrr"rrrrr s    r N)Z __future__rrrZ cryptographyrZcryptography.exceptionsrrrZcryptography.hazmat.backendsr Z'cryptography.hazmat.backends.interfacesr Zcryptography.hazmat.primitivesr r Zregister_interfaceZ MACContextZ HashContextÚobjectr rrrrÚs