.. hazmat:: Message authentication codes ============================ While cryptography supports both the CMAC and HMAC algorithms, we strongly recommend that HMAC should be used unless you have a good reason otherwise. For more information on why HMAC is preferred, see `Use cases for CMAC vs. HMAC?`_ HMAC and CMAC both use the ``MACContext`` interface: .. currentmodule:: cryptography.hazmat.primitives.mac .. class:: MACContext .. versionadded:: 0.7 .. method:: update(data) :param bytes data: The data you want to authenticate. .. method:: finalize() :return: The message authentication code. .. method:: copy() :return: A :class:`~cryptography.hazmat.primitives.mac.MACContext` that is a copy of the current context. .. method:: verify(signature) :param bytes signature: The signature to verify. :raises cryptography.exceptions.InvalidSignature: This is raised when the provided signature does not match the expected signature. .. _`CMAC`: https://en.wikipedia.org/wiki/CMAC .. _`Use cases for CMAC vs. HMAC?`: https://crypto.stackexchange.com/questions/15721/use-cases-for-cmac-vs-hmac .. toctree:: :maxdepth: 1 cmac hmac