1 """Cryptlib AES implementation.""" 2 3 from cryptomath import * 4 from AES import * 5 6 if cryptlibpyLoaded: 7 8 def new(key, mode, IV): 9 return Cryptlib_AES(key, mode, IV) 10 11 class Cryptlib_AES(AES): 12 13 def __init__(self, key, mode, IV): 14 AES.__init__(self, key, mode, IV, "cryptlib") 15 self.context = cryptlib_py.cryptCreateContext(cryptlib_py.CRYPT_UNUSED, cryptlib_py.CRYPT_ALGO_AES) 16 cryptlib_py.cryptSetAttribute(self.context, cryptlib_py.CRYPT_CTXINFO_MODE, cryptlib_py.CRYPT_MODE_CBC) 17 cryptlib_py.cryptSetAttribute(self.context, cryptlib_py.CRYPT_CTXINFO_KEYSIZE, len(key)) 18 cryptlib_py.cryptSetAttributeString(self.context, cryptlib_py.CRYPT_CTXINFO_KEY, key) 19 cryptlib_py.cryptSetAttributeString(self.context, cryptlib_py.CRYPT_CTXINFO_IV, IV) 20 21 def __del__(self): 22 cryptlib_py.cryptDestroyContext(self.context) 23 24 def encrypt(self, plaintext): 25 AES.encrypt(self, plaintext) 26 bytes = stringToBytes(plaintext) 27 cryptlib_py.cryptEncrypt(self.context, bytes) 28 return bytesToString(bytes) 29 30 def decrypt(self, ciphertext): 31 AES.decrypt(self, ciphertext) 32 bytes = stringToBytes(ciphertext) 33 cryptlib_py.cryptDecrypt(self.context, bytes) 34 return bytesToString(bytes) 35