diff options
author | James Cook <james@lindenlab.com> | 2007-02-15 20:24:08 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-02-15 20:24:08 +0000 |
commit | 12ac04231b8d358e70c830f7958f7efbc0f7c0d1 (patch) | |
tree | 189b9bc4e3bfa63275cc41be8dc42a28b0f54ffe /indra/llmessage/llblowfishcipher.h | |
parent | 4feabe4a9caec380cad405d5410bc762c862113d (diff) |
merge -r 57761:57967 im-email-session-3, removes database load from IM to email session tracking, introduces new format for email return addresses
Diffstat (limited to 'indra/llmessage/llblowfishcipher.h')
-rw-r--r-- | indra/llmessage/llblowfishcipher.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/indra/llmessage/llblowfishcipher.h b/indra/llmessage/llblowfishcipher.h new file mode 100644 index 0000000000..3c5ee1a626 --- /dev/null +++ b/indra/llmessage/llblowfishcipher.h @@ -0,0 +1,39 @@ +/** + * @file llblowfishcipher.h + * @brief A symmetric block cipher, designed in 1993 by Bruce Schneier. + * We use it because it has an 8 byte block size, allowing encryption of + * two UUIDs and a timestamp (16x2 + 4 = 36 bytes) with only 40 bytes of + * output. AES has a block size of 32 bytes, so this would require 64 bytes. + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#ifndef LLBLOWFISHCIPHER_H +#define LLBLOWFISHCIPHER_H + +#include "llcipher.h" + + +class LLBlowfishCipher : public LLCipher +{ +public: + // Secret may be up to 56 bytes in length per Blowfish spec. + LLBlowfishCipher(const U8* secret, size_t secret_size); + virtual ~LLBlowfishCipher(); + + // See llcipher.h for documentation. + /*virtual*/ U32 encrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len); + /*virtual*/ U32 decrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len); + /*virtual*/ U32 requiredEncryptionSpace(U32 src_len) const; + +#ifdef _DEBUG + static BOOL testHarness(); +#endif + +private: + U8* mSecret; + size_t mSecretSize; +}; + +#endif // LL_LLCRYPTO_H |