Poco::Crypto

class Envelope

Library: Crypto
Package: Envelope
Header: Poco/Crypto/Envelope.h

Description

Envelope encrypts/decrypts data using a symmetric key.

Encryption and decryption with asymmetric keys is computationally expensive. To alleviate that, Envelope encrypts data using a symmetric session key; the key is then itself asymmetrically encrypted using a public key. It is also possible to encrypt the session key with multiple public keys, so that the message can be sent to multiple recipients.

Each recipient decrypts the session with their private key; the session key for the message decryption is the same for each recipient.

Member Summary

Member Functions: addKey, cipherNID, getContent, iv, keys, open, openAsString, seal, setContent, toString

Types Aliases

Byte

using Byte = unsigned char;

ByteVec

using ByteVec = std::vector < Byte >;

EVPPKeyVec

using EVPPKeyVec = std::vector < EVPPKey >;

EVP_PKEYVec

using EVP_PKEYVec = std::vector < EVP_PKEY * >;

EncKeyVec

using EncKeyVec = std::vector < ByteVec >;

Constructors

Envelope

Envelope() = delete;

Envelope

Envelope(
    const EVPPKey & key,
    int cipherNID
);

Creates a new Envelope object. Initialization vector is automatically generated.

Envelope

Envelope(
    const EVPPKeyVec & keys,
    int cipherNID
);

Creates a new Envelope object. Initialization vector is automatically generated.

Destructor

~Envelope

~Envelope();

Destroys the Envelope.

Member Functions

addKey

void addKey(
    const EVPPKey & key
);

Adds the key to the list of private keys.

cipherNID inline

int cipherNID() const;

Reurns the cipher NID.

getContent inline

const ByteVec & getContent() const;

Returns the encrypted content.

iv inline

const ByteVec & iv() const;

Returns the initialization vector.

keys inline

const EncKeyVec & keys() const;

Returns encrypted symmetric keys.

open

ByteVec open(
    const EVPPKey & privKey,
    const ByteVec & encKeys,
    const ByteVec & iv = ByteVec ()
);

Decrypts the stored encrypted data and returns it.

openAsString inline

std::string openAsString(
    const EVPPKey & privKey,
    const ByteVec & encKeys,
    const ByteVec & iv = ByteVec ()
);

Decrypts the stored encrypted data and returns it.

seal

const ByteVec & seal(
    const std::string & plainText
);

Encrypts the given text and returns the encrypted text.

seal

const ByteVec & seal(
    const ByteVec & plainData
);

Encrypts the given data and returns the encrypted data.

setContent inline

void setContent(
    const ByteVec & enc
);

Sets the encrypted content.

toString static inline

static std::string toString(
    const ByteVec & data
);

Converts and returns string from ByteVec.