FBB::HMacBuf(3bobcat)

Compute HMAC Message Digests
(libbobcat-dev_5.11.01)

2005-2022

NAME

FBB::HMacBuf - Computes HMAC Message Digests from information inserted into a std::ostream

SYNOPSIS

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

DESCRIPTION

FBB::HMacBuf objects are std::streambuf objects that can be used to initialize std::ostream objects with.

All information inserted into such a std::ostream is used to compute a message HMAC from.

All the message digest algorithms defined by the OpenSSL library that can be selected by name may be used in combination with HMacBuf objects.

The following message hmac algorithms are currently supported: mull, md2, md5, sha, sha1, sha224, sha256, sha384, sha512, dss, dss1, ecdsa, mdc2, ripemd160. These very names are the ones to use to select the particular digest algorithm for the class's constructor, below. It is quite possible that future releases of the openssl library will support additional message digest algorithms. The header file openssl/evp.h lists all available hmac algorithms (in that file look for EVP_MD *EVP_: a message digest algorithm immediately follows the 2nd underscore. E.g., const EVP_MD *EVP_md4(void) which refers to the md4 message digest algorithm).

NAMESPACE

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

INHERITS FROM

std::streambuf

CONSTRUCTORS

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

OVERLOADED OPERATOR

MEMBER FUNCTIONS

All members of std::streambuf are available, as FBB::HMacBuf inherits from this class.

MANIPULATOR

EXAMPLE

#include <iostream>
#include <ostream>
#include <cstring>
#include <iomanip>
#include <bobcat/exception>
#include "../hmacbuf"

using namespace std;
using namespace FBB;

int main(int argc, char **argv)
try
{
    if (argc < 3)
        throw Exception{} << "Arg1: key, arg2: digest method required";

    string key(argv[1]);

    HMacBuf hmacbuf{ key, argv[2] };
    ostream out(&hmacbuf);

    string hw{ "hello world\n" };

    out << hw << eoi;
    cout << ">" << hmacbuf << "<" << endl;

//    hmacbuf.reset();
//    out.write(hw.c_str(), hw.length()) << eoi;
//    cout << ">" << hmacbuf << "<" << endl;
}
catch(exception const &err)
{
    cout << err.what() << endl;
    return errno;
}

FILES

bobcat/hmacbuf - defines the class interface

SEE ALSO

bobcat(7), digestbuf(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).