diff options
author | lloyd <[email protected]> | 2014-01-10 03:41:59 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2014-01-10 03:41:59 +0000 |
commit | 6894dca64c04936d07048c0e8cbf7e25858548c3 (patch) | |
tree | 5d572bfde9fe667dab14e3f04b5285a85d8acd95 /src/lib/stream/rc4/rc4.h | |
parent | 9efa3be92442afb3d0b69890a36c7f122df18eda (diff) |
Move lib into src
Diffstat (limited to 'src/lib/stream/rc4/rc4.h')
-rw-r--r-- | src/lib/stream/rc4/rc4.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/lib/stream/rc4/rc4.h b/src/lib/stream/rc4/rc4.h new file mode 100644 index 000000000..c23f8c853 --- /dev/null +++ b/src/lib/stream/rc4/rc4.h @@ -0,0 +1,55 @@ +/* +* RC4 +* (C) 1999-2008 Jack Lloyd +* +* Distributed under the terms of the Botan license +*/ + +#ifndef BOTAN_RC4_H__ +#define BOTAN_RC4_H__ + +#include <botan/stream_cipher.h> +#include <botan/types.h> + +namespace Botan { + +/** +* RC4 stream cipher +*/ +class BOTAN_DLL RC4 : public StreamCipher + { + public: + void cipher(const byte in[], byte out[], size_t length); + + void clear(); + std::string name() const; + + StreamCipher* clone() const { return new RC4(SKIP); } + + Key_Length_Specification key_spec() const + { + return Key_Length_Specification(1, 256); + } + + /** + * @param skip skip this many initial bytes in the keystream + */ + RC4(size_t skip = 0); + + ~RC4() { clear(); } + private: + void key_schedule(const byte[], size_t); + void generate(); + + const size_t SKIP; + + byte X, Y; + secure_vector<byte> state; + + secure_vector<byte> buffer; + size_t position; + }; + +} + +#endif |