1a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch# Author: Trevor Perrin
2a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch# See the LICENSE file for legal information regarding use of this file.
3a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"""Abstract class for RC4."""
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass RC4(object):
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    def __init__(self, keyBytes, implementation):
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if len(keyBytes) < 16 or len(keyBytes) > 256:
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            raise ValueError()
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        self.isBlockCipher = False
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        self.name = "rc4"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        self.implementation = implementation
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    def encrypt(self, plaintext):
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        raise NotImplementedError()
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    def decrypt(self, ciphertext):
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        raise NotImplementedError()