openssl_rc4.py revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
1"""OpenSSL/M2Crypto RC4 implementation."""
2
3from cryptomath import *
4from rc4 import RC4
5
6if 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