default.h
#ifndef CRYPTOPP_DEFAULT_H
#define CRYPTOPP_DEFAULT_H
#include "sha.h"
#include "hmac.h"
#include "des.h"
#include "filters.h"
#include "modes.h"
NAMESPACE_BEGIN(CryptoPP)
typedef DES_EDE2 Default_BlockCipher;
typedef SHA DefaultHashModule;
typedef HMAC<DefaultHashModule> DefaultMAC;
//! Password-Based Encryptor using DES-EDE2
class DefaultEncryptor : public ProxyFilter
{
public:
DefaultEncryptor(const char *passphrase, BufferedTransformation *attachment = NULL);
DefaultEncryptor(const byte *passphrase, size_t passphraseLength, BufferedTransformation *attachment = NULL);
protected:
void FirstPut(const byte *);
void LastPut(const byte *inString, size_t length);
private:
SecByteBlock m_passphrase;
CBC_Mode<Default_BlockCipher>::Encryption m_cipher;
};
//! Password-Based Decryptor using DES-EDE2
class DefaultDecryptor : public ProxyFilter
{
public:
DefaultDecryptor(const char *passphrase, BufferedTransformation *attachment = NULL, bool throwException=true);
DefaultDecryptor(const byte *passphrase, size_t passphraseLength, BufferedTransformation *attachment = NULL, bool throwException=true);
class Err : public Exception
{
public:
Err(const std::string &s)
: Exception(DATA_INTEGRITY_CHECK_FAILED, s) {}
};
class KeyBadErr : public Err {public: KeyBadErr() : Err("DefaultDecryptor: cannot decrypt message with this passphrase") {}};
enum State {WAITING_FOR_KEYCHECK, KEY_GOOD, KEY_BAD};
State CurrentState() const {return m_state;}
protected:
void FirstPut(const byte *inString);
void LastPut(const byte *inString, size_t length);
State m_state;
private:
void CheckKey(const byte *salt, const byte *keyCheck);
SecByteBlock m_passphrase;
CBC_Mode<Default_BlockCipher>::Decryption m_cipher;
member_ptr<FilterWithBufferedInput> m_decryptor;
bool m_throwException;
};
//! Password-Based Encryptor using DES-EDE2 and HMAC/SHA-1
class DefaultEncryptorWithMAC : public ProxyFilter
{
public:
DefaultEncryptorWithMAC(const char *passphrase, BufferedTransformation *attachment = NULL);
DefaultEncryptorWithMAC(const byte *passphrase, size_t passphraseLength, BufferedTransformation *attachment = NULL);
protected:
void FirstPut(const byte *inString) {}
void LastPut(const byte *inString, size_t length);
private:
member_ptr<DefaultMAC> m_mac;
};
//! Password-Based Decryptor using DES-EDE2 and HMAC/SHA-1
class DefaultDecryptorWithMAC : public ProxyFilter
{
public:
class MACBadErr : public DefaultDecryptor::Err {public: MACBadErr() : DefaultDecryptor::Err("DefaultDecryptorWithMAC: MAC check failed") {}};
DefaultDecryptorWithMAC(const char *passphrase, BufferedTransformation *attachment = NULL, bool throwException=true);
DefaultDecryptorWithMAC(const byte *passphrase, size_t passphraseLength, BufferedTransformation *attachment = NULL, bool throwException=true);
DefaultDecryptor::State CurrentState() const;
bool CheckLastMAC() const;
protected:
void FirstPut(const byte *inString) {}
void LastPut(const byte *inString, size_t length);
private:
member_ptr<DefaultMAC> m_mac;
HashVerifier *m_hashVerifier;
bool m_throwException;
};
NAMESPACE_END
#endif
Exception
base class for all exceptions thrown by Crypto++
Definition: cryptlib.h:109
ProxyFilter
Base class for Filter classes that are proxies for a chain of other filters.
Definition: filters.h:539
DefaultEncryptor
Password-Based Encryptor using DES-EDE2.
Definition: default.h:17
modes.h
SecBlock< byte >
DefaultDecryptor::KeyBadErr
Definition: default.h:45
DefaultDecryptor::Err
Definition: default.h:39
BufferedTransformation
interface for buffered transformations
Definition: cryptlib.h:770
DefaultDecryptorWithMAC::MACBadErr
Definition: default.h:84
Exception::DATA_INTEGRITY_CHECK_FAILED
data integerity check (such as CRC or MAC) failed
Definition: cryptlib.h:121
DefaultDecryptor
Password-Based Decryptor using DES-EDE2.
Definition: default.h:33
member_ptr< FilterWithBufferedInput >
HashVerificationFilter
Filter Wrapper for HashTransformation.
Definition: filters.h:310
CipherModeFinalTemplate_CipherHolder
_
Definition: modes.h:248
DES_EDE2
DES-EDE2
Definition: des.h:62
SHA1
SHA-1
Definition: sha.h:9
DefaultEncryptorWithMAC
Password-Based Encryptor using DES-EDE2 and HMAC/SHA-1.
Definition: default.h:66
des.h
filters.h
HMAC
HMAC
Definition: hmac.h:40
DefaultDecryptorWithMAC
Password-Based Decryptor using DES-EDE2 and HMAC/SHA-1.
Definition: default.h:81