summaryrefslogtreecommitdiff
path: root/src/M2Crypto/RC4.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/M2Crypto/RC4.py')
-rw-r--r--src/M2Crypto/RC4.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/M2Crypto/RC4.py b/src/M2Crypto/RC4.py
new file mode 100644
index 0000000..26e1079
--- /dev/null
+++ b/src/M2Crypto/RC4.py
@@ -0,0 +1,36 @@
+from __future__ import absolute_import
+
+"""M2Crypto wrapper for OpenSSL RC4 API.
+
+Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved."""
+
+from M2Crypto.m2 import rc4_free, rc4_new, rc4_set_key, rc4_update
+
+
+class RC4(object):
+ """Object interface to the stream cipher RC4."""
+
+ rc4_free = rc4_free
+
+ def __init__(self, key=None):
+ # type: (bytes) -> None
+ self.cipher = rc4_new()
+ if key:
+ rc4_set_key(self.cipher, key)
+
+ def __del__(self):
+ # type: () -> None
+ if getattr(self, 'cipher', None):
+ self.rc4_free(self.cipher)
+
+ def set_key(self, key):
+ # type: (bytes) -> None
+ rc4_set_key(self.cipher, key)
+
+ def update(self, data):
+ # type: (bytes) -> bytes
+ return rc4_update(self.cipher, data)
+
+ def final(self):
+ # type: () -> str
+ return ''