def test_CMAC_verify(self): # test CMAC verification function key = Fernet.generate_key() fernet = Fernet(key) # test against the cryptography.io library APIs for i in range(20): M = os.urandom(i) K = os.urandom(16) # use library API generation c = cmac.CMAC(algorithms.AES(K), backend=default_backend()) c.update(M) lib_cmac = c.finalize() # verify a library generated cmac assert fernet._AES_CMAC_verify(K, M, len(M), lib_cmac) # verify against our own API cmac_ = fernet._AES_CMAC_generate(K, M, len(M)) assert fernet._AES_CMAC_verify(K, M, len(M), cmac_) # # library verify our generated cmac c = cmac.CMAC(algorithms.AES(K), backend=default_backend()) c.update(M) try: c.verify(cmac_) except Exception: raise Exception