ultimatepp/bazaar/AESStream/AESStream.h
koldo 9cd8764262 AESStream: Changed SHA2 functions
git-svn-id: svn://ultimatepp.org/upp/trunk@3243 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2011-02-25 16:21:37 +00:00

93 lines
2.3 KiB
C++

#ifndef _SSLTest_AESStream_h_
#define _SSLTest_AESStream_h_
#include <Core/Core.h>
#include <openssl/aes.h>
using namespace Upp;
//----------------------------------------------------------------------------------------------
String AESRandomString(int length);
String AESPadString(const String &s, int l);
//----------------------------------------------------------------------------------------------
class AESEncoderStream
{
public:
AESEncoderStream(qword size, const String &key) throw (const char *);
int AddData(const String &);
String GetEncryptedData();
private:
String GetHeader();
qword size,
blocks,
blocksDone;
AES_KEY key;
String data;
const String iv0;
StringBuffer iv;
bool encodedHeader;
};
inline String & operator << (String &s, AESEncoderStream &stream)
{
s << stream.GetEncryptedData();
return s;
}
inline AESEncoderStream & operator << (AESEncoderStream &stream, const String &s)
{
stream.AddData(s);
return stream;
}
//----------------------------------------------------------------------------------------------
class AESDecoderStream
{
public:
AESDecoderStream(const String &key) throw (const char *);
int AddData(const String &);
String GetDecryptedData() throw (const char *); //выброс исключения если ключ неверный
qword GetSize() {return size;}
private:
qword size,
sizeDone;
AES_KEY key;
String data;
StringBuffer iv;
bool decodedHeader;
};
inline String & operator << (String &s, AESDecoderStream &stream)
{
s << stream.GetDecryptedData();
return s;
}
inline AESDecoderStream & operator << (AESDecoderStream &stream, const String &s)
{
stream.AddData(s);
return stream;
}
//----------------------------------------------------------------------------------------------
extern const dword AES_CONTAINER_DWORD_HEADER;
// SHA2 functions
String SHA224String(const String& data);
String SHA224Hex(const String& data);
String SHA256String(const String& data);
String SHA256Hex(const String& data);
String SHA384String(const String& data);
String SHA384Hex(const String& data);
String SHA512String(const String& data);
String SHA512Hex(const String& data);
#endif