Source code for M2Crypto.RC4

"""M2Crypto wrapper for OpenSSL RC4 API.

Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved."""

from typing import Optional
from M2Crypto import m2, types as C


[docs] class RC4(object): """Object interface to the stream cipher RC4.""" def __init__(self, key: Optional[bytes] = None) -> None: self.cipher = m2.rc4_new() if key: m2.rc4_set_key(self.cipher, key)
[docs] @staticmethod def rc4_free(cipher: C.RC4_KEY) -> None: m2.rc4_free(cipher)
def __del__(self) -> None: if getattr(self, "cipher", None): self.rc4_free(self.cipher)
[docs] def set_key(self, key: bytes) -> None: m2.rc4_set_key(self.cipher, key)
[docs] def update(self, data: bytes) -> bytes: return m2.rc4_update(self.cipher, data)
[docs] def final(self) -> str: return ""