Poco::Crypto

class CryptoTransform

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

CryptoTransform();

Creates a new CryptoTransform object.

Destructor

~CryptoTransform virtual

virtual ~CryptoTransform();

Destroys the CryptoTransform.

Member Functions

blockSize virtual

virtual std::size_t blockSize() const = 0;

Returns the block size for this CryptoTransform.

finalize virtual

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

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

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

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

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.