1 """OpenSSL/M2Crypto RC4 implementation.""" 2 3 from cryptomath import * 4 from RC4 import RC4 5 6 if m2cryptoLoaded: 7 8 def new(key): 9 return OpenSSL_RC4(key) 10 11 class OpenSSL_RC4(RC4): 12 13 def __init__(self, key): 14 RC4.__init__(self, key, "openssl") 15 self.rc4 = m2.rc4_new() 16 m2.rc4_set_key(self.rc4, key) 17 18 def __del__(self): 19 m2.rc4_free(self.rc4) 20 21 def encrypt(self, plaintext): 22 return m2.rc4_update(self.rc4, plaintext) 23 24 def decrypt(self, ciphertext): 25 return self.encrypt(ciphertext) 26