o )%an@sXddlmZddlmZmZmZddlmZddlm Z ddl m Z Gddde Z dS) )utils)AlreadyFinalizedUnsupportedAlgorithm_Reasons) _get_backend) CMACBackend)ciphersc@s\eZdZ ddejfddZdeddfddZdefd d Zd eddfd d Z dddZ dS)CMACN algorithmcCsdt|}t|tstdtjt|tjstd||_ ||_ |dur-|j |j |_ dS||_ dS)Nz.Backend object does not implement CMACBackend.z*Expected instance of BlockCipherAlgorithm.) r isinstancerrrBACKEND_MISSING_INTERFACErBlockCipherAlgorithm TypeError _algorithm_backendcreate_cmac_ctx_ctx)selfr backendctxrE/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/cmac.py__init__s   z CMAC.__init__datareturncCs.|jdur tdtd||j|dS)NContext was already finalized.r)rrr _check_bytesupdate)rrrrrr&s  z CMAC.updatecCs&|jdur td|j}d|_|S)Nr)rrfinalize)rdigestrrrr-s  z CMAC.finalize signaturecCs:td||jdurtd|jd}|_||dS)Nr r)rrrrverify)rr rrrrr!4s  z CMAC.verifycCs*|jdur tdt|j|j|jdS)Nr)rr)rrr rrcopy)rrrrr"<s z CMAC.copy)NN)rr ) __name__ __module__ __qualname__rr rbytesrrr!r"rrrrr s r N) cryptographyrcryptography.exceptionsrrrcryptography.hazmat.backendsr'cryptography.hazmat.backends.interfacesrcryptography.hazmat.primitivesrobjectr rrrrs