3 L]@s`ddlmZmZmZddlmZddlmZmZm Z ddl m Z ddl m Z GdddeZdS) )absolute_importdivisionprint_function)utils)AlreadyFinalizedUnsupportedAlgorithm_Reasons) CMACBackend)ciphersc@s6eZdZd ddZddZddZdd Zd d ZdS) CMACNcCsZt|tstdtjt|tjs*td||_||_ |dkrP|j j |j|_ n||_ dS)Nz.Backend object does not implement CMACBackend.z*Expected instance of BlockCipherAlgorithm.) isinstancer rrZBACKEND_MISSING_INTERFACEr ZBlockCipherAlgorithm TypeError _algorithm_backendZcreate_cmac_ctx_ctx)self algorithmbackendctxrM/tmp/pip-install-wfra5znf/cryptography/cryptography/hazmat/primitives/cmac.py__init__s  z CMAC.__init__cCs.|jdkrtdtjd||jj|dS)NzContext was already finalized.data)rrr _check_bytesupdate)rrrrrr#s  z CMAC.updatecCs&|jdkrtd|jj}d|_|S)NzContext was already finalized.)rrfinalize)rdigestrrrr*s   z CMAC.finalizecCs:tjd||jdkrtd|jd}|_|j|dS)N signaturezContext was already finalized.)rrrrverify)rrrrrrr1s   z CMAC.verifycCs*|jdkrtdt|j|j|jjdS)NzContext was already finalized.)rr)rrr rrcopy)rrrrr9s  z CMAC.copy)N)__name__ __module__ __qualname__rrrrrrrrrr s  r N) __future__rrrZ cryptographyrZcryptography.exceptionsrrrZ'cryptography.hazmat.backends.interfacesr Zcryptography.hazmat.primitivesr objectr rrrrs