]> www.wagner.pp.ru Git - oss/ctypescrypto.git/blob - tests/testcipher.py
ae74d412dd44c2befb829ef885c6457750502003
[oss/ctypescrypto.git] / tests / testcipher.py
1 from ctypescrypto.oid import Oid
2 from ctypescrypto import cipher
3 import unittest
4
5
6 class TestCipherType(unittest.TestCase):
7         def test_ciphdescbc(self):
8                 ct=cipher.CipherType("des-cbc")
9                 self.assertEqual(ct.block_size(),8)
10                 self.assertEqual(ct.key_length(),8)
11                 self.assertEqual(ct.iv_length(),8)
12                 self.assertEqual(ct.oid().shortname(),"DES-CBC")
13                 self.assertEqual(ct.mode(),"CBC")
14         def test_ciphaesofb(self):
15                 ct=cipher.CipherType("aes-256-ofb")
16                 self.assertEqual(ct.block_size(),1)
17                 self.assertEqual(ct.key_length(),32)
18                 self.assertEqual(ct.iv_length(),16)
19                 self.assertEqual(ct.oid().shortname(),"AES-256-OFB")
20                 self.assertEqual(ct.mode(),"OFB")
21
22 class TestEncryptDecrypt(unittest.TestCase):
23         def test_blockcipher(self):
24                 data="sdfdsddf"
25                 key='abcdabcd'
26                 c=cipher.new("DES-CBC",key)
27                 enc=c.update(data)+c.finish()
28                 # See if padding is added by default
29                 self.assertEqual(len(enc),16)
30                 d=cipher.new("DES-CBC",key,encrypt=False)
31                 dec=d.update(enc)+d.finish()
32                 self.assertEqual(data,dec)
33         def test_blockcipher_nopadding(self):
34                 data="sdfdsddf"
35                 key='abcdabcd'
36                 c=cipher.new("DES-CBC",key)
37                 c.padding(False)
38                 enc=c.update(data)+c.finish()
39                 # See if padding is added by default
40                 self.assertEqual(len(enc),8)
41                 d=cipher.new("DES-CBC",key,encrypt=False)
42                 d.padding(False)
43                 dec=d.update(enc)+d.finish()
44                 self.assertEqual(data,dec)
45         def test_ofb_cipher(self):
46                 data="sdfdsddfxx"
47                 key='abcdabcd'
48                 iv='abcdabcd'
49                 c=cipher.new("DES-OFB",key,iv=iv)
50                 enc=c.update(data)+c.finish()
51                 # See if padding is added by default
52                 self.assertEqual(len(enc),len(data))
53                 d=cipher.new("DES-OFB",key,encrypt=False,iv=iv)
54                 dec=d.update(enc)+d.finish()
55                 self.assertEqual(data,dec)
56
57         def test_ofb_noiv(self):
58                 data="sdfdsddfxx"
59                 encryptkey='abcdabcd'*4
60                 decryptkey=encryptkey[0:5]+encryptkey[5:]
61
62
63                 c=cipher.new("AES-256-OFB",encryptkey)
64                 enc=c.update(data)+c.finish()
65                 # See if padding is added by default
66                 self.assertEqual(len(enc),len(data))
67                 d=cipher.new("AES-256-OFB",decryptkey)
68                 dec=d.update(enc)+d.finish()
69                 self.assertEqual(data,dec)
70 if __name__ == '__main__':
71         unittest.main()