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 description of available encryption methods.
- 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 IFilterBuf is initialized with a buffer of
size filterBufSize, using a lower bound of 100;
- The parameter ENGINE can be used to specify a hardware
acceleration engine, as supported by the used encryption/decryption
method. Its default argument value indicates that no hardware acceleration is
available.
Copy and move constructors (and assignment operators) are not available.
Since the class uses public derivation from std::istream, all members of this class can be used.
#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(); }
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.