Home | History | Annotate | Download | only in utils
      1 """Cryptlib RC4 implementation."""
      2 
      3 from cryptomath import *
      4 from RC4 import RC4
      5 
      6 if cryptlibpyLoaded:
      7 
      8     def new(key):
      9         return Cryptlib_RC4(key)
     10 
     11     class Cryptlib_RC4(RC4):
     12 
     13         def __init__(self, key):
     14             RC4.__init__(self, key, "cryptlib")
     15             self.context = cryptlib_py.cryptCreateContext(cryptlib_py.CRYPT_UNUSED, cryptlib_py.CRYPT_ALGO_RC4)
     16             cryptlib_py.cryptSetAttribute(self.context, cryptlib_py.CRYPT_CTXINFO_KEYSIZE, len(key))
     17             cryptlib_py.cryptSetAttributeString(self.context, cryptlib_py.CRYPT_CTXINFO_KEY, key)
     18 
     19         def __del__(self):
     20              cryptlib_py.cryptDestroyContext(self.context)
     21 
     22         def encrypt(self, plaintext):
     23             bytes = stringToBytes(plaintext)
     24             cryptlib_py.cryptEncrypt(self.context, bytes)
     25             return bytesToString(bytes)
     26 
     27         def decrypt(self, ciphertext):
     28             return self.encrypt(ciphertext)