a b@sPddlZddlmZddlmZddlmZejr>ddlm Z GdddZ dS)N)utils)AlreadyFinalized)ciphers) _CMACContextc@seZdZUejded<ejed<dejejejddddZ e ddd d Z e d d d Z e ddddZ dd ddZdS)CMACr_ctx _algorithmN) algorithmbackendctxcCsHt|tjstd||_|dur>ddlm}||j|_n||_dS)Nz*Expected instance of BlockCipherAlgorithm.r)r ) isinstancerBlockCipherAlgorithm TypeErrorrZ,cryptography.hazmat.backends.openssl.backendr Zcreate_cmac_ctxr)selfr r r ZosslrJ/tmp/pip-target-98j97qn4/lib/python/cryptography/hazmat/primitives/cmac.py__init__s  z CMAC.__init__)datareturncCs.|jdurtdtd||j|dS)NContext was already finalized.r)rrr _check_bytesupdate)rrrrrr)s  z CMAC.update)rcCs&|jdurtd|j}d|_|S)Nr)rrfinalize)rdigestrrrr0s   z CMAC.finalize) signaturercCs:td||jdurtd|jd}|_||dS)Nrr)rrrrverify)rrr rrrr7s   z CMAC.verifycCs&|jdurtdt|j|jdS)Nr)r )rrrrcopy)rrrrr?s z CMAC.copy)NN)__name__ __module__ __qualname__typingOptional__annotations__rr Anyrbytesrrrrrrrrrs   r) r Z cryptographyrZcryptography.exceptionsrZcryptography.hazmat.primitivesr TYPE_CHECKINGZ)cryptography.hazmat.backends.openssl.cmacrrrrrrs