def test_simple(self): algo = 'sha1' for d in self.data: h = EVP.HMAC(d[0], algo) h.update(d[1]) ret = h.final() self.assertEqual(ret, d[2]) with self.assertRaises(ValueError): EVP.HMAC(d[0], algo='nosuchalgo')
def make_chain_HMAC(self, key, start, input, algo='sha1'): chain = [] hmac = EVP.HMAC(key, algo) hmac.update( ` start `) digest = hmac.final() chain.append((digest, start)) for i in input: hmac.reset(digest) hmac.update( ` i `) digest = hmac.final() chain.append((digest, i)) return chain
def verify_chain_HMAC(self, key, start, chain, algo='sha1'): hmac = EVP.HMAC(key, algo) hmac.update( ` start `) digest = hmac.final() c = chain[0] if c[0] != digest or c[1] != start: return 0 for d, v in chain[1:]: hmac.reset(digest) hmac.update( ` v `) digest = hmac.final() if digest != d: return 0 return 1
def HMAC(self, *data): hmac = EVP.HMAC(self.cipher.hmac_key, algo="sha1") for d in data: hmac.update(d) return hmac.final()
def HMAC(self, data): hmac = EVP.HMAC(self.cipher.hmac_key, algo="sha1") hmac.update(data) return hmac.final()