diff options
author | Matěj Cepl <mcepl@cepl.eu> | 2021-01-13 11:47:29 +0100 |
---|---|---|
committer | Matěj Cepl <mcepl@cepl.eu> | 2021-01-14 14:29:59 +0100 |
commit | 9178c4d56b7270a6b813995f55a4828ce96256d8 (patch) | |
tree | ac6a539983294f42cc2b97d404f95912d2c7a8fe /src/M2Crypto/RC4.py | |
parent | d93ee3c676929ae1ca9b3acb94a8ce9c3f9c936d (diff) | |
download | m2crypto-9178c4d56b7270a6b813995f55a4828ce96256d8.tar.gz |
Move project to src/ layout
Diffstat (limited to 'src/M2Crypto/RC4.py')
-rw-r--r-- | src/M2Crypto/RC4.py | 36 |
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 '' |