# FBB::CryptBuf(3bobcat)

## Base class for DecryptBuf and EncryptBuf
(libbobcat-dev_5.11.00)

## 2005-2022

## NAME

FBB::CryptBuf - std::streambuf derived base class for DecryptBuf and EncryptBuf

## SYNOPSIS

#include <bobcat/cryptbuf>
Linking option: -lbobcat -lcrypto

## DESCRIPTION

The class CryptBuf inherits from EoiBuf and may therefore be used as a base class of classes specializing std::streambuf. It is used as base class for the classes DecryptBuf and EncryptBuf, offering a protected member for accessing cipher information.

## NAMESPACE

FBB
All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the namespace FBB.

## INHERITS FROM

EoiBuf (and thus from: std::streambuf)

## PROTECTED CONSTRUCTOR

Analogously to std::streambuf only a protected constructor is available.

- CryptBuf(char const *type, size_t bufSize):
  The type is a null-terminated byte string specifying the de/encryption method. E.g., aes-128-cbc. For an overview see the encryptbuf(3bobcat) man-page. The bufSize parameter defines the initial size of the internally used buffer (defined by EoiBuf).

Copy and move constructors (and assignment operators) are not available.

## PROTECTED MEMBER FUNCTION

All members of std:streambuf and EoiBuf are available, as FBB::CryptBuf inherits from these classes.

- EVP_CIPHER const *md() const:
  A pointer to the cipher information is returned.

## EXAMPLE

Here is an example from the implementation of EncryptBuf's constructor:

    #include "encryptbuf.ih"

    EncryptBuf::EncryptBuf(ostream &outStream, char const *type,
                           string key, string const &iv, size_t size)
    :
        CryptBuf(type, size),
        d_ctx(EVP_CIPHER_CTX_new()),
        d_encrypted(size + EVP_MAX_BLOCK_LENGTH, 0),
        d_iv(iv),
        d_key(key),
        d_outStream(outStream)
    {
        prepareIV();

        if (
            not EVP_EncryptInit_ex(d_ctx, md(), 0, ucharPtr(d_key),
                                                   ucharPtr(d_iv))
        )
            throw Exception{ 1 } << "Encrypt initialization failed";

        setp();
    }

## FILES

bobcat/cryptbuf - defines the class interface

## SEE ALSO

bobcat(7), decryptbuf(3bobcat), encryptbuf(3bobcat), eoibuf(3bobcat), eoi(3bobcat)

## BUGS

None Reported.

## BOBCAT PROJECT FILES

- https://fbb-git.gitlab.io/bobcat/: gitlab project page;
- bobcat_5.11.00-x.dsc: detached signature;
- bobcat_5.11.00-x.tar.gz: source archive;
- bobcat_5.11.00-x_i386.changes: change log;
- libbobcat1_5.11.00-x_*.deb: debian package containing the libraries;
- libbobcat1-dev_5.11.00-x_*.deb: debian package containing the libraries, headers and manual pages;

## BOBCAT

Bobcat is an acronym of `Brokken's Own Base Classes And Templates'.

## COPYRIGHT

This is free software, distributed under the terms of the GNU General Public License (GPL).

## AUTHOR

Frank B. Brokken (f.b.brokken@rug.nl).