1 # -*- encoding: utf-8 -*-
2 from ctypescrypto.oid import Oid
3 from base64 import b16decode,b16encode
4 from ctypescrypto.mac import *
5 from ctypescrypto.engine import set_default
8 class TestMac(unittest.TestCase):
9 def test_hmac_default(self):
10 d=MAC('hmac',key='1234'*4)
11 d.update('The Quick brown fox jumps over the lazy dog\n')
12 self.assertEqual(d.name,'hmac-md5')
13 self.assertEqual(d.hexdigest(),'A9C16D91CDF2A99273B72336D0D16B56')
14 def test_hmac_digestdataa(self):
15 d=MAC('hmac',key='1234'*4)
16 h=d.hexdigest('The Quick brown fox jumps over the lazy dog\n')
17 self.assertEqual(d.name,'hmac-md5')
18 self.assertEqual(h,'A9C16D91CDF2A99273B72336D0D16B56')
19 def test_hmac_byoid(self):
20 d=MAC(Oid('hmac'),key='1234'*4)
21 d.update('The Quick brown fox jumps over the lazy dog\n')
22 self.assertEqual(d.name,'hmac-md5')
23 self.assertEqual(d.hexdigest(),'A9C16D91CDF2A99273B72336D0D16B56')
24 def test_mac_wrongtype(self):
25 with self.assertRaises(TypeError):
26 d=MAC(Oid('hmac').nid,key='1234'*4)
27 def test_hmac_sha256(self):
28 d=MAC('hmac',key='1234'*16,digest='sha256')
29 d.update('The Quick brown fox jumps over the lazy dog\n')
30 self.assertEqual(d.name,'hmac-sha256')
31 self.assertEqual(d.hexdigest(),'BEBA086E1C67200664DCDEEC697D99DB1A8DAA72933A36B708FC5FD568173095')
32 def test_gostmac(self):
34 d=MAC('gost-mac',key='1234'*8)
35 d.update('The Quick brown fox jumps over the lazy dog\n')
36 self.assertEqual(d.name,'gost-mac')
37 self.assertEqual(d.digest_size,4)
38 self.assertEqual(d.hexdigest(),'76F25AE3')
39 with self.assertRaisesRegexp(DigestError,"invalid mac key length"):
40 d=MAC('gost-mac',key='1234'*4)
42 if __name__ == "__main__":