3 L]@slddlmZmZmZddlmZddlmZmZm Z ddl m Z ddl m Z eje jGdddeZdS) )absolute_importdivisionprint_function)utils)AlreadyFinalizedUnsupportedAlgorithm_Reasons) HMACBackend)hashesc@s@eZdZd ddZejdZddZddZd d Z d d Z dS)HMACNcCsbt|tstdtjt|tjs*td||_||_ ||_ |dkrX|j j ||j |_ n||_ dS)Nz.Backend object does not implement HMACBackend.z*Expected instance of hashes.HashAlgorithm.) isinstancer rrZBACKEND_MISSING_INTERFACEr Z HashAlgorithm TypeError _algorithm_backend_keyZcreate_hmac_ctx algorithm_ctx)selfkeyrbackendctxrM/tmp/pip-install-wfra5znf/cryptography/cryptography/hazmat/primitives/hmac.py__init__s  z HMAC.__init__rcCs.|jdkrtdtjd||jj|dS)NzContext was already finalized.data)rrrZ_check_byteslikeupdate)rrrrrr%s  z HMAC.updatecCs.|jdkrtdt|j|j|j|jjdS)NzContext was already finalized.)rr)rrr rrrcopy)rrrrr+s z HMAC.copycCs&|jdkrtd|jj}d|_|S)NzContext was already finalized.)rrfinalize)rdigestrrrr5s   z HMAC.finalizecCs:tjd||jdkrtd|jd}|_|j|dS)N signaturezContext was already finalized.)r _check_bytesrrverify)rrrrrrr!<s   z HMAC.verify)N) __name__ __module__ __qualname__rrZread_only_propertyrrrrr!rrrrr s    r N) __future__rrrZ cryptographyrZcryptography.exceptionsrrrZ'cryptography.hazmat.backends.interfacesr Zcryptography.hazmat.primitivesr Zregister_interfaceZ HashContextobjectr rrrrs