U e]@slddlmZmZmZddlmZddlmZmZm Z ddl m Z ddl m Z ee jGdddeZdS) )absolute_importdivisionprint_function)utils)AlreadyFinalizedUnsupportedAlgorithm_Reasons) HMACBackend)hashesc@s@eZdZd ddZedZddZddZd d Z d d Z dS)HMACNcCsbt|tstdtjt|tjs*td||_||_ ||_ |dkrX|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)selfkeyrbackendctxrE/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/hmac.py__init__s  z HMAC.__init__rcCs.|jdkrtdtd||j|dS)NContext was already finalized.data)rrrZ_check_byteslikeupdate)rrrrrr%s  z HMAC.updatecCs.|jdkrtdt|j|j|j|jdS)Nr)rr)rrr rrrcopy)rrrrr+s z HMAC.copycCs&|jdkrtd|j}d|_|S)Nr)rrfinalize)rZdigestrrrr5s   z HMAC.finalizecCs:td||jdkrtd|jd}|_||dS)N signaturer)r _check_bytesrrverify)rrrrrrr!<s   z HMAC.verify)N) __name__ __module__ __qualname__rrZread_only_propertyrrrrr!rrrrr s    r N)Z __future__rrrZ cryptographyrZcryptography.exceptionsrrrZ'cryptography.hazmat.backends.interfacesr Zcryptography.hazmat.primitivesr Zregister_interfaceZ HashContextobjectr rrrrs