- add sources.
[platform/framework/web/crosswalk.git] / src / third_party / tlslite / tlslite / utils / Cryptlib_AES.py
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)