#include <cbcmac.h>
Inheritance diagram for CBC_MAC_Base:

Definition at line 10 of file cbcmac.h.
Public Types | |
| enum | IV_Requirement { STRUCTURED_IV = 0, RANDOM_IV, UNPREDICTABLE_RANDOM_IV, INTERNALLY_GENERATED_IV, NOT_RESYNCHRONIZABLE } |
Public Member Functions | |
| void | CheckedSetKey (void *, Empty empty, const byte *key, unsigned int length, const NameValuePairs ¶ms) |
| void | Update (const byte *input, unsigned int length) |
| process more input | |
| void | TruncatedFinal (byte *mac, unsigned int size) |
| truncated version of Final() | |
| unsigned int | DigestSize () const |
| size of the hash returned by Final() | |
| virtual byte * | CreateUpdateSpace (unsigned int &size) |
| request space to write input into | |
| virtual void | Final (byte *digest) |
| compute hash for current message, then restart for a new message | |
| virtual void | Restart () |
| discard the current state, and restart with a new message | |
| virtual unsigned int | BlockSize () const |
| block size of underlying compression function, or 0 if not block based | |
| virtual unsigned int | OptimalBlockSize () const |
| input to Update() should have length a multiple of this for optimal speed | |
| virtual unsigned int | OptimalDataAlignment () const |
| returns how input should be aligned for optimal performance | |
| virtual void | CalculateDigest (byte *digest, const byte *input, unsigned int length) |
| use this if your input is in one piece and you don't want to call Update() and Final() separately | |
| virtual bool | Verify (const byte *digest) |
| verify that digest is a valid digest for the current message, then reinitialize the object | |
| virtual bool | VerifyDigest (const byte *digest, const byte *input, unsigned int length) |
| use this if your input is in one piece and you don't want to call Update() and Verify() separately | |
| virtual void | CalculateTruncatedDigest (byte *digest, unsigned int digestSize, const byte *input, unsigned int length) |
| truncated version of CalculateDigest() | |
| virtual bool | TruncatedVerify (const byte *digest, unsigned int digestLength) |
| truncated version of Verify() | |
| virtual bool | VerifyTruncatedDigest (const byte *digest, unsigned int digestLength, const byte *input, unsigned int length) |
| truncated version of VerifyDigest() | |
| virtual std::string | AlgorithmName () const |
| returns name of this algorithm, not universally implemented yet | |
| virtual Clonable * | Clone () const |
| this is not implemented by most classes yet | |
| virtual unsigned int | MinKeyLength () const =0 |
| returns smallest valid key length in bytes */ | |
| virtual unsigned int | MaxKeyLength () const =0 |
| returns largest valid key length in bytes */ | |
| virtual unsigned int | DefaultKeyLength () const =0 |
| returns default (recommended) key length in bytes */ | |
| virtual unsigned int | GetValidKeyLength (unsigned int n) const =0 |
| returns the smallest valid key length in bytes that is >= min(n, GetMaxKeyLength()) | |
| virtual bool | IsValidKeyLength (unsigned int n) const |
| returns whether n is a valid key length | |
| virtual void | SetKey (const byte *key, unsigned int length, const NameValuePairs ¶ms=g_nullNameValuePairs)=0 |
| set or reset the key of this object | |
| void | SetKeyWithRounds (const byte *key, unsigned int length, int rounds) |
| calls SetKey() with an NameValuePairs object that just specifies "Rounds" | |
| void | SetKeyWithIV (const byte *key, unsigned int length, const byte *iv) |
| calls SetKey() with an NameValuePairs object that just specifies "IV" | |
| virtual IV_Requirement | IVRequirement () const =0 |
| returns the minimal requirement for secure IVs | |
| bool | IsResynchronizable () const |
| returns whether this object can be resynchronized (i.e. supports initialization vectors) | |
| bool | CanUseRandomIVs () const |
| returns whether this object can use random IVs (in addition to ones returned by GetNextIV) | |
| bool | CanUsePredictableIVs () const |
| returns whether this object can use random but possibly predictable IVs (in addition to ones returned by GetNextIV) | |
| bool | CanUseStructuredIVs () const |
| returns whether this object can use structured IVs, for example a counter (in addition to ones returned by GetNextIV) | |
| virtual unsigned int | IVSize () const |
| returns size of IVs used by this object | |
| virtual void | Resynchronize (const byte *IV) |
| resynchronize with an IV | |
| virtual void | GetNextIV (byte *IV) |
| get a secure IV for the next message | |
Protected Member Functions | |
| virtual BlockCipher & | AccessCipher ()=0 |
| void | ThrowIfInvalidTruncatedSize (unsigned int size) const |
| void | ThrowIfInvalidKeyLength (const Algorithm &algorithm, unsigned int length) |
| void | ThrowIfResynchronizable () |
| void | ThrowIfInvalidIV (const byte *iv) |
| const byte * | GetIVAndThrowIfInvalid (const NameValuePairs ¶ms) |
| void | AssertValidKeyLength (unsigned int length) const |
|
|
compute hash for current message, then restart for a new message
Referenced by PKCS5_PBKDF2_HMAC< T >::DeriveKey(), HashFilter::Put2(), and HMAC_Base::TruncatedFinal(). |
|
|
verify that digest is a valid digest for the current message, then reinitialize the object Default implementation is to call Final() and do a bitwise comparison between its output and digest. Definition at line 563 of file cryptlib.h. |
|
||||||||||||||||
|
set or reset the key of this object
Implemented in HermeticHashFunctionMAC< T_Hash, T_Info >, and HermeticHashFunctionMAC< PanamaHash< B > >.
Referenced by SimpleKeyingInterface::SetKeyWithIV(), and SimpleKeyingInterface::SetKeyWithRounds(). |
|
|
returns whether this object can be resynchronized (i.e. supports initialization vectors) If this function returns true, and no IV is passed to SetKey() and CanUseStructuredIVs()==true, an IV of all 0's will be assumed. Definition at line 389 of file cryptlib.h. |
|
|
n=right valign=top> |
|
n=right valign=top> |
|
n=right valign=top> |
|
n=right valign=top> |
|
n=right valign=top> |
|
n=right |