ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ.. 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