I'm curious if I'm creating filters "correctly". This works, just
making sure it is the right way of doing it. I have created a class
to AES encrypt some data, and that works well. I wanted to turn it
into a filter, and this is what I came up with. The part I'm mainly
unsure of is buffering the data, as I haven't seen any of the other
filters do it this way. My AES class needs all the data to decrypt,
so I buffer the data in the Put2 method until MesageEnd, at which time
I decrypt and pass the data on to the next BufferedTransformation.
Any comments are appreciated!
#include "AESEncryptor.h"
/
*****************************************************************************
* Constructor - takes a passphrase.
*****************************************************************************/
AESEncryptor::AESEncryptor(const string& passphrase,
BufferedTransformation* attachment) : Filter(attachment)
{
_passphrase = passphrase;
}
/
*****************************************************************************
* Encrypt the data with the given passphrase.
*****************************************************************************/
size_t AESEncryptor::Put2(const byte* inString, size_t length,
int messageEnd, bool blocking)
{
try
{
string cipher;
// Buffer the data until message end.
if (length)
_buffer += string(reinterpret_cast<const char*>(inString),
length);
if (!messageEnd)
return 0;
// Encrypt the data and clear the buffer.
_aes.Encrypt(new StringSource(_buffer, true),
new StringSource(_passphrase, true),
new StringSink(cipher));
_buffer.clear();
// Pass the data on to the next bt.
return AttachedTransformation()->Put2(
reinterpret_cast<const byte*>(cipher.c_str()), cipher.length(),
messageEnd, blocking);
}
catch (Exception e)
{
throw (string(e.what()));
}
catch (string s)
{
throw (s);
}
}
--
You received this message because you are subscribed to the "Crypto++ Users"
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at
http://www.cryptopp.com.