a a!@s@ddlZddlmZddlmZddlmZGdddeZdS)N)utils)AlreadyFinalized)ciphersc@s^eZdZdejejdddZeddddZ edd d Z edd d d Z ddddZ dS)CMACN) algorithmbackendcCsHt|tjstd||_|dur>ddlm}||j|_n||_dS)Nz*Expected instance of BlockCipherAlgorithm.r)r) isinstancerBlockCipherAlgorithm TypeError _algorithmZ,cryptography.hazmat.backends.openssl.backendrZcreate_cmac_ctx_ctx)selfrrctxZosslrI/usr/lib64/python3.9/site-packages/cryptography/hazmat/primitives/cmac.py__init__s  z CMAC.__init__)datareturncCs.|jdurtdtd||j|dS)NContext was already finalized.r)r rr _check_bytesupdate)r rrrrr#s  z CMAC.update)rcCs&|jdurtd|j}d|_|S)Nr)r rfinalize)r Zdigestrrrr*s   z CMAC.finalize) signaturercCs:td||jdurtd|jd}|_||dS)Nrr)rrr rverify)r rrrrrr1s   z CMAC.verifycCs&|jdurtdt|j|jdS)Nr)r)r rrr copy)r rrrr9s z CMAC.copy)NN) __name__ __module__ __qualname__rr typingAnyrbytesrrrrrrrrrs r) rZ cryptographyrZcryptography.exceptionsrZcryptography.hazmat.primitivesrobjectrrrrrs