| FBB::HMacBuf(3bobcat) | Compute HMAC Message Digests | FBB::HMacBuf(3bobcat) |
FBB::HMacBuf - Computes HMAC Message Digests from information inserted into a std::ostream
#include <bobcat/hmacbuf>
Linking option: -lbobcat -lcrypto
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.
All the message digest and cipher algorithms defined by the OpenSSL library that can be selected by name, may be used in combination with HMacBuf objects.
For the currently supported message digest algorithms issue the command
openssl list -digest-commands
For the currently supported message cipher algorithms issue the command
openssl list -cipher-commands
The defaults used by HMacBuf constructors are the sha256 digest
algorithm and the aes-128-cbc cipher algorithm.
FBB
All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace FBB.
std::streambuf
All members of std::streambuf are available, as FBB::HMacBuf inherits from this class.
1. create a HMacBuf object
2. use it to create a std::ostream object
3. insert information into the ostream object
4. call the HMacBuf object’s eoi() member or insert eoi into the ostream
object
5. obtain/process the hash value from the HMacBuf object.
#include <fstream>
#include <iostream>
#include <bobcat/hmacbuf>
using namespace std;
using namespace FBB;
int main(int argc, char **argv)
try
{
// using the default (sha256) digest algorithm
if (argc == 1)
throw Exception{} <<
"Usage: arg1: 16-byte key, arg2: file to process,\n"
" arg3 (opt) buf size (default 1024)";
HMacBuf hmacbuf{ argv[1], "aes-128-cbc", "sha256",
argc == 3 ? 1024 : stoul(argv[3]) };
HMacBuf empty; // Demo: an empty HMacBuf
empty = HMacBuf{ argv[1], "sha256", 100 }; // Demo: move assignmeent
ostream out(&hmacbuf); // the ostream receiving the
// input to compute the hmac of
ifstream in{ argv[2] }; // the file to process
out << in.rdbuf() << eoi; // compute the hmac
// and show the hmac value
cout << " computed hmac value: >" << hmacbuf << "<\n";
in.seekg(0); // to illustrate ’reset’: do it
hmacbuf.reset(); // again
out << in.rdbuf();
eoi(out); // calling eoi as a function
cout << "recomputed hmac value: >" << hmacbuf << "<\n";
}
catch(exception const &err)
{
cout << err.what() << endl;
return errno;
}
bobcat/hmacbuf - defines the class interface
bobcat(7), digestbuf(3bobcat), std::streambuf
None reported
Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.
This is free software, distributed under the terms of the GNU General Public License (GPL).
Frank B. Brokken (f.b.brokken@rug.nl).
| 2005-2024 | libbobcat-dev_6.06.02 |