- ReleaseX86.zip
- BasicAdmin.db
- BasicAdmin2.db
- BasicAdmin2.exe
- BasicAdmin2_Config.dll
- BasicAdmin2_Contacts.dll
- BasicAdmin2_Database.dll
- BasicAdmin2_GraphFinance.dll
- BasicAdmin2_Model.dll
- BasicAdmin2_Notes.dll
- BasicAdmin2_Utils.dll
- BasicAdmin2_Web.dll
- CryptoLib.dll
- GraphParser.dll
- Preferences.db
- Settings.db
- SQLiteBase.dll
- SourceCode.zip
- BasicAdmin2
- BasicAdmin2.sln
- BasicAdmin2.suo
- BasicAdmin2
- BasicAdmin2_Config
- BasicAdmin2_Contacts
- BasicAdmin2_Database
- BasicAdmin2_GraphFinance
- BasicAdmin2_Model
- BasicAdmin2_Notes
- BasicAdmin2_Utils
- BasicAdmin2_Web
- Data
- BasicAdmin2.db
- Preferences.db
- Settings.db
- Librerias
- GraphParser
- Libs
- Debug
- Release
- LibsX64
- Debug
- Release
- SQLiteBase
- BasicAdmin2_Librerias
- Librerias
- CryptoLib
- GraphParser
- Librerias.sln
- Librerias.suo
- SQLiteBase
- UpgradeLog.XML
- UpgradeLog2.XML
|
#ifndef CRYPTOPP_CBCMAC_H
#define CRYPTOPP_CBCMAC_H
#include "seckey.h"
#include "secblock.h"
NAMESPACE_BEGIN(CryptoPP)
//! _
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE CBC_MAC_Base : public MessageAuthenticationCode
{
public:
CBC_MAC_Base() {}
void UncheckedSetKey(const byte *key, unsigned int length, const NameValuePairs ¶ms);
void Update(const byte *input, size_t length);
void TruncatedFinal(byte *mac, size_t size);
unsigned int DigestSize() const {return const_cast<CBC_MAC_Base*>(this)->AccessCipher().BlockSize();}
protected:
virtual BlockCipher & AccessCipher() =0;
private:
void ProcessBuf();
SecByteBlock m_reg;
unsigned int m_counter;
};
//! <a href="http://www.weidai.com/scan-mirror/mac.html#CBC-MAC">CBC-MAC</a>
/*! Compatible with FIPS 113. T should be a class derived from BlockCipherDocumentation.
Secure only for fixed length messages. For variable length messages use CMAC or DMAC.
*/
template <class T>
class CBC_MAC : public MessageAuthenticationCodeImpl<CBC_MAC_Base, CBC_MAC<T> >, public SameKeyLengthAs<T>
{
public:
CBC_MAC() {}
CBC_MAC(const byte *key, size_t length=SameKeyLengthAs<T>::DEFAULT_KEYLENGTH)
{this->SetKey(key, length);}
static std::string StaticAlgorithmName() {return std::string("CBC-MAC(") + T::StaticAlgorithmName() + ")";}
private:
BlockCipher & AccessCipher() {return m_cipher;}
typename T::Encryption m_cipher;
};
NAMESPACE_END
#endif
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
System developer from Argentina.
Programmed in VB 5,6,.NET, C#, Java, PL-SQL, Transac-SQL, C, C++ and even some "calculator" language.
Love to build small, useful applications.
Usually building big and complicated apps based on solid, reliable components.
Hobbies: reading, photography, chess, paddle, running.