NAME¶
FBB::ISymCryptStream - Istream performing symmetric encryption
SYNOPSIS¶
#include <bobcat/isymcryptstream>
Linking option:
-lbobcat -lcrypto
DESCRIPTION¶
FBB::ISymCryptStream objects may be used to encrypt or decrypt
information that is available on a separate
std::istream.
The
class ISymCryptStream is a class template, using a
FBB::CryptType template non-type parameter. Objects of the class
FBB::ISymCryptStream<FBB::ENCRYPT> encrypt the information they
receive, objects of the class
FBB::ISymCryptStream<FBB::DECRYPT>
decrypt the information they receive.
All symmetric encryption methods defined by the OpenSSL library that can be
selected by name may be used in combination with
EncryptBuf objects. To
select a particular encryption method an identifier is passed to the
constructor. E.g.,
"aes-128-cbc" indicating the AES
(Rijndael) method, using 128 bit sized keys and blocks using `cbc’ mode
(see below for an explanation).
Refer to the
isymcryptstreambuf(3bobcat) man-page for a descryption of
available encryption methods.
NAMESPACE¶
FBB
All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace
FBB.
INHERITS FROM¶
FBB::ISymCryptStreambuf (private),
std::istream
CONSTRUCTOR¶
- o
- ISymCryptStream<CryptType>( std::istream &in, char
const *type, std::string const &key, std::string const
&iv, size_t bufSize = 100, size_t filterBufSize = 1000,
ENGINE *engine = 0):
This constructor initializes a std::istream providing it with an
FBB::ISymCryptStreambuf stream buffer. The
ISymCryptStreambuf’s constructor receives all arguments that
are passed to this constructor.
- - ISymCryptStream<ENCRYPT> objects perform encryption;
ISymCryptStream<DECRYPT> objects perform decryption;
- ISymCryptStream<CryptType> objects obtain the bytes to
encrypt or decrypt from std::istream ∈
- The encryption method to use is specified by the type parameter.
E.g., "bf-cbc" selects the Blowfish Cipher Block Chaining
method;
- The symmetric key to use is specified by the key parameter;
- The initialization vector is specified by the iv parameter;
- The FBB::ISymCryptStreambuf internally used buffer will contain
bufSize characters. The default value is the smallest value that is
used. When a smaller bufSize value is specified, the default value
is used;
- The internally used IFilterStreambuf is initialized with a buffer
of size filterBufSize, using a lower bound of 100;
- The parameter ENGINE can be used to specify a hardware
accelleration engine, as supported by the used encryption/decryption
method. Its default argument value indicates that no hardware
accelleration is available.
INHERITED MEMBERS¶
Since the class uses public derivation from
std::istream, all members of
this class can be used.
EXAMPLE¶
#include "../isymcryptstream"
#include <iostream>
using namespace std;
using namespace FBB;
int main()
{
ISymCryptStream<ENCRYPT> encryptor(cin, "bf-cbc",
"1234567890", "1234567890");
ISymCryptStream<DECRYPT> decryptor(encryptor, "bf-cbc",
"1234567890", "1234567890");
cout << decryptor.rdbuf();
}
FILES¶
bobcat/isymcryptstream - defines the class interface
SEE ALSO¶
bobcat(7),
isymcryptstreambuf(3bobcat)
BUGS¶
Sep/Oct 2013: due to a change in library handling by the linker (cf.
http://fedoraproject.org/wiki/UnderstandingDSOLinkChange and
https://wiki.debian.org/ToolChain/DSOLinking) libraries that are indirectly
required are no longer automatically linked to your program. With
BigInt this is
libcrypto, which requires programs to link to
both
bobcat and
crypto.
DISTRIBUTION FILES¶
- o
- bobcat_3.23.01-x.dsc: detached signature;
- o
- bobcat_3.23.01-x.tar.gz: source archive;
- o
- bobcat_3.23.01-x_i386.changes: change log;
- o
- libbobcat1_3.23.01-x_*.deb: debian package holding the
libraries;
- o
- libbobcat1-dev_3.23.01-x_*.deb: debian package holding the
libraries, headers and manual pages;
- o
- http://sourceforge.net/projects/bobcat: public archive location;
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).