FBB::IBase64Buf(3bobcat)

Base64 converting Stream Buffer
(libbobcat-dev_6.02.02)

2005-2022

NAME

FBB::IBase64Buf - Input Filtering stream buffer doing base64 conversion

SYNOPSIS

#include <bobcat/ibase64buf>
Linking option: -lbobcat

DESCRIPTION

The information made available by IBase64Buf objects has been subject to base64 encoding or decoding. The information to be converted is made available to IBase64Buf object via std::istream objects.

The class IBase64Buf is a class template, using a FBB::CryptType template non-type parameter. Objects of the class FBB::IBase64Buf<FBB::ENCRYPT> base64 encode the information they receive, objects of the class FBB::IBase64Buf<FBB::DECRYPT> base64 decode the information they receive. See also section ENUMERATION below.

NAMESPACE

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

INHERITS FROM

FBB::IFilterBuf

ENUMERATION

IBase64Buf objects either base64 encode or decode information. IBase64Buf objects of the class FBB::IBase64Buf<FBB::ENCRYPT> base64 encode the data they receive, IBase64Buf objects of the class FBB::IBase64Buf<FBB::DECRYPT> base64 decode the data they receive.

The values ENCRYPT and DECRYPT are defined in the enum CryptType, which is defined in the FBB namespace.

CONSTRUCTOR

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

MEMBER FUNCTIONS

All members of FBB::IFilterBuf are available, as IBase64Buf inherits from this class.

EXAMPLE

The example shows the construction of IBase64Buf<ENCRYPT> objects encode which are used to initialize a std::istream object. The information read from this istream is base64 encoded.

IBase64Buf<DECRYPT> objects (decode reads base64 encoded information from std::istream objects and decodes it again).

The std::istream din object is initialized with the IBase64Buf<DECRYPT> object, and its content is sent to std::cout. The information that is presented at std::cin and that appears at std::cout should be identical.

#include <iostream>
#include <istream>

#include <bobcat/ibase64buf>

using namespace std;
using namespace FBB;

int main(int argc, char **argv)
{
    switch (argv[1][0])
    {
        case 'e':
        {
            IBase64Buf<ENCRYPT> encode(cin);
            istream ein(&encode);
            cout << ein.rdbuf();
        }
        break;

        case 'd':
        {
            IBase64Buf<DECRYPT> decode(cin);
            istream din(&decode);
            cout << din.rdbuf();
        }
        break;

        case 'b':
        {
            IBase64Buf<ENCRYPT> encode(cin);
            istream ein(&encode);

            IBase64Buf<DECRYPT> decode(ein);
            istream din(&decode);
            cout << din.rdbuf();
        }
        break;

        default:
            cout << "Usage: " << argv[0] << " [edb] < infile > outfile\n"
                    "to base64 -e-ncode, -d-ecode or -b-oth\n";
        break;
    }
}

FILES

bobcat/ibase64buf - defines the class interface

SEE ALSO

bobcat(7), isymcryptstreambuf(3bobcat), ibase64stream(3bobcat), ifilterbuf(3bobcat), ofilterbuf(3bobcat), std::streambuf.

BUGS

None reported.

BOBCAT PROJECT FILES

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).