]> www.wagner.pp.ru Git - oss/ctypescrypto.git/commitdiff
First tests for cipher
authorVictor Wagner <wagner@atlas-card.ru>
Fri, 6 Jun 2014 09:11:54 +0000 (13:11 +0400)
committerVictor Wagner <wagner@atlas-card.ru>
Fri, 6 Jun 2014 09:11:54 +0000 (13:11 +0400)
tests/testcipher.py [new file with mode: 0644]

diff --git a/tests/testcipher.py b/tests/testcipher.py
new file mode 100644 (file)
index 0000000..052193c
--- /dev/null
@@ -0,0 +1,68 @@
+from ctypescrypto.oid import Oid
+from ctypescrypto import cipher
+import unittest
+
+
+class TestCipherType(unittest.TestCase):
+       def test_ciphdescbc(self):
+               ct=cipher.CipherType("des-cbc")
+               self.assertEqual(ct.block_size(),8)
+               self.assertEqual(ct.key_length(),8)
+               self.assertEqual(ct.iv_length(),8)
+               self.assertEqual(ct.oid().shortname(),"DES-CBC")
+               self.assertEqual(ct.mode(),"CBC")
+       def test_ciphaesofb(self):
+               ct=cipher.CipherType("aes-256-ofb")
+               self.assertEqual(ct.block_size(),1)
+               self.assertEqual(ct.key_length(),32)
+               self.assertEqual(ct.iv_length(),16)
+               self.assertEqual(ct.oid().shortname(),"AES-256-OFB")
+               self.assertEqual(ct.mode(),"OFB")
+
+class TestEncryptDecrypt(unittest.TestCase):
+       def test_blockcipher(self):
+               data="sdfdsddf"
+               key='abcdabcd'
+               c=cipher.new("DES-CBC",key)
+               enc=c.update(data)+c.finish()
+               # See if padding is added by default
+               self.assertEqual(len(enc),16)
+               d=cipher.new("DES-CBC",key,encrypt=False)
+               dec=d.update(enc)+d.finish()
+               self.assertEqual(data,dec)
+       def test_blockcipher_nopadding(self):
+               data="sdfdsddf"
+               key='abcdabcd'
+               c=cipher.new("DES-CBC",key)
+               c.padding(False)
+               enc=c.update(data)+c.finish()
+               # See if padding is added by default
+               self.assertEqual(len(enc),8)
+               d=cipher.new("DES-CBC",key,encrypt=False)
+               d.padding(False)
+               dec=d.update(enc)+d.finish()
+               self.assertEqual(data,dec)
+       def test_ofb_cipher(self):
+               data="sdfdsddfxx"
+               key='abcdabcd'
+               iv='abcdabcd'
+               c=cipher.new("DES-OFB",key,iv=iv)
+               enc=c.update(data)+c.finish()
+               # See if padding is added by default
+               self.assertEqual(len(enc),len(data))
+               d=cipher.new("DES-OFB",key,encrypt=False,iv=iv)
+               dec=d.update(enc)+d.finish()
+               self.assertEqual(data,dec)
+
+       def test_ofb_noiv(self):
+               data="sdfdsddfxx"
+               key='abcdabcd'
+               c=cipher.new("AES-256-OFB",key)
+               enc=c.update(data)+c.finish()
+               # See if padding is added by default
+               self.assertEqual(len(enc),len(data))
+               d=cipher.new("AES-256-OFB",key,encrypt=False)
+               dec=d.update(enc)+d.finish()
+               self.assertEqual(data,dec)
+if __name__ == '__main__':
+       unittest.main()