"""
Return cipher's algorithm name, derived from OID
"""
- return self.oid().short_name()
+ return self.oid().shortname()
def oid(self):
"""
Returns ASN.1 object identifier of the cipher as
if (cipher_type.flags() & 8) != 0:
# Variable key length cipher.
result = libcrypto.EVP_CipherInit_ex(self.ctx, cipher_type.cipher, None, None, None, c_int(enc))
- result=libcrypto.EVP_CIPHER_CTX_set_key_length(self.ctx,len(key))
+ result = libcrypto.EVP_CIPHER_CTX_set_key_length(self.ctx,len(key))
if result == 0:
self._clean_ctx()
raise CipherError("Unable to set key length")
def _clean_ctx(self):
try:
if self.ctx is not None:
- self.libcrypto.EVP_CIPHER_CTX_cleanup(self.ctx)
- self.libcrypto.EVP_CIPHER_CTX_free(self.ctx)
+ libcrypto.EVP_CIPHER_CTX_cleanup(self.ctx)
+ libcrypto.EVP_CIPHER_CTX_free(self.ctx)
del(self.ctx)
except AttributeError:
pass
self.assertEqual(ct.block_size(),8)
self.assertEqual(ct.key_length(),8)
self.assertEqual(ct.iv_length(),8)
+ self.assertEqual(ct.algo(),'DES-CBC')
self.assertEqual(ct.oid().shortname(),"DES-CBC")
self.assertEqual(ct.mode(),"CBC")
def test_ciphaesofb(self):
self.assertEqual(ct.block_size(),1)
self.assertEqual(ct.key_length(),32)
self.assertEqual(ct.iv_length(),16)
+ self.assertEqual(ct.algo(),'AES-256-OFB')
self.assertEqual(ct.oid().shortname(),"AES-256-OFB")
self.assertEqual(ct.mode(),"OFB")
+ def test_unknowncipher(self):
+ with self.assertRaises(cipher.CipherError):
+ ct=cipher.CipherType("no-such-cipher")
class TestEncryptDecrypt(unittest.TestCase):
+ def test_cons_nokey(self):
+ ct=cipher.CipherType("DES-CBC")
+ with self.assertRaises(ValueError):
+ c=cipher.Cipher(ct,None,None)
def test_blockcipher(self):
data="sdfdsddf"
key='abcdabcd'
with self.assertRaises(ValueError):
c=cipher.new("AES-128-OFB",key,iv=iv)
def test_variable_keylength(self):
- encryptkey="abcdefabcdef"
+ encryptkey="abcdefabcdefghtlgvasdgdgsdgdsg"
data="asdfsdfsdfsdfsdfsdfsdfsdf"
iv="abcdefgh"
c=cipher.new("bf-ofb",encryptkey,iv=iv)
d=cipher.new("bf-ofb",decryptkey,encrypt=False,iv=iv)
deciph=d.update(ciphertext)+d.finish()
self.assertEqual(deciph,data)
+
if __name__ == '__main__':
unittest.main()