Arduino Cryptography Library
|
BLAKE2b hash algorithm. More...
#include <BLAKE2b.h>
Public Member Functions | |
BLAKE2b () | |
Constructs a BLAKE2b hash object. | |
virtual | ~BLAKE2b () |
Destroys this BLAKE2b hash object after clearing sensitive information. | |
size_t | hashSize () const |
Size of the hash result from finalize(). More... | |
size_t | blockSize () const |
Size of the internal block used by the hash algorithm. More... | |
void | reset () |
Resets the hash ready for a new hashing process. More... | |
void | reset (uint8_t outputLength) |
Resets the hash ready for a new hashing process with a specified output length. More... | |
void | reset (const void *key, size_t keyLen, uint8_t outputLength=64) |
Resets the hash ready for a new hashing process with a specified key and output length. More... | |
void | update (const void *data, size_t len) |
Updates the hash with more data. More... | |
void | finalize (void *hash, size_t len) |
Finalizes the hashing process and returns the hash. More... | |
void | clear () |
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing process. More... | |
void | resetHMAC (const void *key, size_t keyLen) |
Resets the hash ready for a new HMAC hashing process. More... | |
void | finalizeHMAC (const void *key, size_t keyLen, void *hash, size_t hashLen) |
Finalizes the HMAC hashing process and returns the hash. More... | |
Public Member Functions inherited from Hash | |
Hash () | |
Constructs a new hash object. | |
virtual | ~Hash () |
Destroys this hash object. More... | |
Static Public Attributes | |
static const size_t | HASH_SIZE = 64 |
Constant for the size of the hash output of BLAKE2b. | |
static const size_t | BLOCK_SIZE = 128 |
Constant for the block size of BLAKE2b. | |
Additional Inherited Members | |
Protected Member Functions inherited from Hash | |
void | formatHMACKey (void *block, const void *key, size_t len, uint8_t pad) |
Formats a HMAC key into a block. More... | |
BLAKE2b hash algorithm.
BLAKE2b is a variation on the ChaCha stream cipher, designed for hashing, with a 512-bit hash output. It is intended as a high performance replacement for SHA512 for when speed is critical but exact SHA512 compatibility is not.
This class supports two types of keyed hash. The BLAKE2 keyed hash and traditional HMAC. The BLAKE2 keyed hash is recommended unless there is some higher-level application need to be compatible with the HMAC construction. The keyed hash is computed as follows:
The HMAC is computed as follows (the output length is always 64):
References: https://blake2.net/, RFC 7693
|
virtual |
Size of the internal block used by the hash algorithm.
Implements Hash.
Definition at line 104 of file BLAKE2b.cpp.
|
virtual |
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing process.
Implements Hash.
Definition at line 243 of file BLAKE2b.cpp.
|
virtual |
Finalizes the hashing process and returns the hash.
hash | The buffer to return the hash value in. |
len | The length of the hash buffer, normally hashSize(). |
If len is less than hashSize(), then the hash value will be truncated to the first len bytes. If len is greater than hashSize(), then the remaining bytes will left unchanged.
If finalize() is called again, then the returned hash value is undefined. Call reset() first to start a new hashing process.
Implements Hash.
Definition at line 227 of file BLAKE2b.cpp.
|
virtual |
Finalizes the HMAC hashing process and returns the hash.
key | Points to the HMAC key for the hashing process. The contents of this array must be identical to the value passed to resetHMAC(). |
keyLen | Size of the HMAC key in bytes. |
hash | The buffer to return the hash value in. |
hashLen | The length of the hash buffer, normally hashSize(). |
Implements Hash.
Definition at line 256 of file BLAKE2b.cpp.
|
virtual |
Size of the hash result from finalize().
Implements Hash.
Definition at line 99 of file BLAKE2b.cpp.
|
virtual |
Resets the hash ready for a new hashing process.
Implements Hash.
Definition at line 119 of file BLAKE2b.cpp.
void BLAKE2b::reset | ( | const void * | key, |
size_t | keyLen, | ||
uint8_t | outputLength = 64 |
||
) |
Resets the hash ready for a new hashing process with a specified key and output length.
key | Points to the key. |
keyLen | The length of the key in bytes, between 0 and 64. |
outputLength | The output length to use for the final hash in bytes, between 1 and 64. |
If keyLen is greater than 64, then the key will be truncated to the first 64 bytes.
Definition at line 172 of file BLAKE2b.cpp.
void BLAKE2b::reset | ( | uint8_t | outputLength | ) |
Resets the hash ready for a new hashing process with a specified output length.
outputLength | The output length to use for the final hash in bytes, between 1 and 64. |
Definition at line 141 of file BLAKE2b.cpp.
|
virtual |
Resets the hash ready for a new HMAC hashing process.
key | Points to the HMAC key for the hashing process. |
keyLen | Size of the HMAC key in bytes. |
The following example computes a HMAC over a series of data blocks with a specific key:
The same key must be passed to both resetHMAC() and finalizeHMAC().
Implements Hash.
Definition at line 249 of file BLAKE2b.cpp.
|
virtual |
Updates the hash with more data.
data | Data to be hashed. |
len | Number of bytes of data to be hashed. |
If finalize() has already been called, then the behavior of update() will be undefined. Call reset() first to start a new hashing process.
Implements Hash.
Definition at line 202 of file BLAKE2b.cpp.