Arduino Cryptography Library
Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
SHA512 Class Reference

SHA-512 hash algorithm. More...

#include <SHA512.h>

Inheritance diagram for SHA512:
Hash SHA384

Public Member Functions

 SHA512 ()
 Constructs a SHA-512 hash object.
 
virtual ~SHA512 ()
 Destroys this SHA-512 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 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 SHA512.
 
static const size_t BLOCK_SIZE = 128
 Constant for the block size of SHA512.
 

Protected Member Functions

void processChunk ()
 Processes a single 1024-bit chunk with the core SHA-512 algorithm. More...
 
- 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...
 

Protected Attributes

struct {
   uint64_t   h [8]
 
   uint64_t   w [16]
 
   uint64_t   lengthLow
 
   uint64_t   lengthHigh
 
   uint8_t   chunkSize
 
state
 

Friends

class Ed25519
 

Detailed Description

SHA-512 hash algorithm.

Reference: http://en.wikipedia.org/wiki/SHA-2

See also
SHA224, SHA256, SHA3_512, BLAKE2b

Definition at line 30 of file SHA512.h.

Member Function Documentation

◆ blockSize()

size_t SHA512::blockSize ( ) const
virtual

Size of the internal block used by the hash algorithm.

See also
update(), hashSize()

Implements Hash.

Definition at line 71 of file SHA512.cpp.

◆ clear()

void SHA512::clear ( )
virtual

Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing process.

See also
reset()

Implements Hash.

Definition at line 147 of file SHA512.cpp.

◆ finalize()

void SHA512::finalize ( void *  hash,
size_t  len 
)
virtual

Finalizes the hashing process and returns the hash.

Parameters
hashThe buffer to return the hash value in.
lenThe 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.

See also
reset(), update(), finalizeHMAC()

Implements Hash.

Definition at line 115 of file SHA512.cpp.

◆ finalizeHMAC()

void SHA512::finalizeHMAC ( const void *  key,
size_t  keyLen,
void *  hash,
size_t  hashLen 
)
virtual

Finalizes the HMAC hashing process and returns the hash.

Parameters
keyPoints to the HMAC key for the hashing process. The contents of this array must be identical to the value passed to resetHMAC().
keyLenSize of the HMAC key in bytes.
hashThe buffer to return the hash value in.
hashLenThe length of the hash buffer, normally hashSize().
See also
resetHMAC(), finalize()

Implements Hash.

Definition at line 160 of file SHA512.cpp.

◆ hashSize()

size_t SHA512::hashSize ( ) const
virtual

Size of the hash result from finalize().

See also
finalize(), blockSize()

Implements Hash.

Definition at line 66 of file SHA512.cpp.

◆ processChunk()

void SHA512::processChunk ( )
protected

Processes a single 1024-bit chunk with the core SHA-512 algorithm.

Reference: http://en.wikipedia.org/wiki/SHA-2

Definition at line 177 of file SHA512.cpp.

◆ reset()

void SHA512::reset ( )
virtual

Resets the hash ready for a new hashing process.

See also
update(), finalize(), resetHMAC()

Implements Hash.

Definition at line 76 of file SHA512.cpp.

◆ resetHMAC()

void SHA512::resetHMAC ( const void *  key,
size_t  keyLen 
)
virtual

Resets the hash ready for a new HMAC hashing process.

Parameters
keyPoints to the HMAC key for the hashing process.
keyLenSize of the HMAC key in bytes.

The following example computes a HMAC over a series of data blocks with a specific key:

hash.resetHMAC(key, sizeof(key));
hash.update(data1, sizeof(data1));
hash.update(data2, sizeof(data2));
...
hash.update(dataN, sizeof(dataN));
hash.finalizeHMAC(key, sizeof(key), hmac, sizeof(hmac));

The same key must be passed to both resetHMAC() and finalizeHMAC().

See also
finalizeHMAC(), reset()

Implements Hash.

Definition at line 153 of file SHA512.cpp.

◆ update()

void SHA512::update ( const void *  data,
size_t  len 
)
virtual

Updates the hash with more data.

Parameters
dataData to be hashed.
lenNumber 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.

See also
reset(), finalize()

Implements Hash.

Definition at line 89 of file SHA512.cpp.


The documentation for this class was generated from the following files: