3 ê…­h�ã@s|ddlmZmZmZddlmZddlmZmZm Z ddl m Z ddl m Z ddlmZmZejejƒGdd„deƒƒZd S) é)Úabsolute_importÚdivisionÚprint_function)Úutils)ÚAlreadyFinalizedÚUnsupportedAlgorithmÚ_Reasons)Ú _get_backend)Ú CMACBackend)ÚciphersÚmacc@s6eZdZd dd„Zdd„Zdd„Zdd „Zd d „ZdS) ÚCMACNcCsbt|ƒ}t|tƒstdtjƒ‚t|tjƒs2tdƒ‚||_ ||_ |dkrX|j j |j ƒ|_ n||_ dS)Nz.Backend object does not implement CMACBackend.z*Expected instance of BlockCipherAlgorithm.) r Ú isinstancer rrZBACKEND_MISSING_INTERFACEr ZBlockCipherAlgorithmÚ TypeErrorÚ _algorithmÚ_backendZcreate_cmac_ctxÚ_ctx)ÚselfÚ algorithmÚbackendÚctx©rú/usr/lib64/python3.6/cmac.pyÚ__init__s  z CMAC.__init__cCs.|jdkrtdƒ‚tjd|ƒ|jj|ƒdS)NzContext was already finalized.Údata)rrrÚ _check_bytesÚupdate)rrrrrr&s  z CMAC.updatecCs&|jdkrtdƒ‚|jjƒ}d|_|S)NzContext was already finalized.)rrÚfinalize)rZdigestrrrr-s   z CMAC.finalizecCs:tjd|ƒ|jdkrtdƒ‚|jd}|_|j|ƒdS)NÚ signaturezContext was already finalized.)rrrrÚverify)rrrrrrr4s   z CMAC.verifycCs*|jdkrtdƒ‚t|j|j|jjƒd�S)NzContext was already finalized.)rr)rrr rrÚcopy)rrrrr <s z CMAC.copy)NN)Ú__name__Ú __module__Ú __qualname__rrrrr rrrrr s  r N)Z __future__rrrZ cryptographyrZcryptography.exceptionsrrrZcryptography.hazmat.backendsr Z'cryptography.hazmat.backends.interfacesr Zcryptography.hazmat.primitivesr r Zregister_interfaceZ MACContextÚobjectr rrrrÚs