File Information
Library: Crypto
Package: Cipher
Header: Poco/Crypto/CryptoTransform.h
Description
This interface represents the basic operations for cryptographic transformations to be used with a CryptoInputStream or a CryptoOutputStream.
Implementations of this class are returned by the Cipher class to perform encryption or decryption of data.
Member Summary
Member Functions: blockSize, finalize, getTag, setPadding, setTag, transform
Types Aliases
Ptr
using Ptr = Poco::SharedPtr < CryptoTransform >;
Constructors
CryptoTransform
Creates a new CryptoTransform object.
Destructor
~CryptoTransform
virtual ~CryptoTransform();
Destroys the CryptoTransform.
Member Functions
blockSize
virtual std::size_t blockSize() const = 0;
Returns the block size for this CryptoTransform.
finalize
virtual std::streamsize finalize(
unsigned char * output,
std::streamsize length
) = 0;
Finalizes the transformation. The output buffer must contain enough space for at least two blocks, ie.
length >= 2*blockSize()
must be true. Returns the number of bytes written to the output buffer.
getTag
virtual std::string getTag(
std::size_t tagSize = 16
) = 0;
Returns the GCM tag after encrypting using GCM mode.
Must be called after finalize().
setPadding
virtual int setPadding(
int padding
);
Enables or disables padding. By default encryption operations are padded using standard block padding and the padding is checked and removed when decrypting. If the padding parameter is zero then no padding is performed, the total amount of data encrypted or decrypted must then be a multiple of the block size or an error will occur.
setTag
virtual void setTag(
const std::string & tag
) = 0;
Sets the GCM tag for authenticated decryption using GCM mode.
Must be set before finalize() is called, otherwise decryption will fail.
transform
virtual std::streamsize transform(
const unsigned char * input,
std::streamsize inputLength,
unsigned char * output,
std::streamsize outputLength
) = 0;
Transforms a chunk of data. The inputLength is arbitrary and does not need to be a multiple of the block size. The output buffer has a maximum capacity of the given outputLength that must be at least
inputLength + blockSize() - 1
Returns the number of bytes written to the output buffer.