Skip to content

Algorithms - SHA 128/224/256/384/512

Functions

Name
int wc_ShaHash(const byte * data, word32 len, byte * hash)
Convenience function, handles all the hashing and places the result into hash.
int wc_Sha256Hash(const byte * data, word32 len, byte * hash)
Convenience function, handles all the hashing and places the result into hash.
int wc_Sha224Hash(const byte * data, word32 len, byte * hash)
Convenience function, handles all the hashing and places the result into hash.
int wc_Sha512Hash(const byte * data, word32 len, byte * hash)
Convenience function, handles all the hashing and places the result into hash.
int wc_Sha384Hash(const byte * data, word32 len, byte * hash)
Convenience function, handles all the hashing and places the result into hash.
int wc_InitSha(wc_Sha * )
This function initializes SHA. This is automatically called by wc_ShaHash.
int wc_ShaUpdate(wc_Sha * sha, const byte * data, word32 len)
Can be called to continually hash the provided byte array of length len.
int wc_ShaFinal(wc_Sha * sha, byte * hash)
Finalizes hashing of data. Result is placed into hash. Resets state of sha struct.
void wc_ShaFree(wc_Sha * )
Used to clean up memory used by an initialized Sha struct. Note: this is only supported if you have WOLFSSL_TI_HASH defined.
int wc_ShaGetHash(wc_Sha * sha, byte * hash)
Gets hash data. Result is placed into hash. Does not reset state of sha struct.
int wc_InitSha256(wc_Sha256 * )
This function initializes SHA256. This is automatically called by wc_Sha256Hash.
int wc_Sha256Update(wc_Sha256 * sha, const byte * data, word32 len)
Can be called to continually hash the provided byte array of length len.
int wc_Sha256Final(wc_Sha256 * sha256, byte * hash)
Finalizes hashing of data. Result is placed into hash. Resets state of sha256 struct.
void wc_Sha256Free(wc_Sha256 * )
Resets the Sha256 structure. Note: this is only supported if you have WOLFSSL_TI_HASH defined.
int wc_Sha256GetHash(wc_Sha256 * sha256, byte * hash)
Gets hash data. Result is placed into hash. Does not reset state of sha256 struct.
int wc_InitSha224(wc_Sha224 * )
Used to initialize a Sha224 struct.
int wc_Sha224Update(wc_Sha224 * sha224, const byte * data, word32 len)
Can be called to continually hash the provided byte array of length len.
int wc_Sha224Final(wc_Sha224 * sha224, byte * hash)
Finalizes hashing of data. Result is placed into hash. Resets state of sha224 struct.
int wc_InitSha512(wc_Sha512 * )
This function initializes SHA512. This is automatically called by wc_Sha512Hash.
int wc_Sha512Update(wc_Sha512 * sha, const byte * data, word32 len)
Can be called to continually hash the provided byte array of length len.
int wc_Sha512Final(wc_Sha512 * sha512, byte * hash)
Finalizes hashing of data. Result is placed into hash.
int wc_InitSha384(wc_Sha384 * )
This function initializes SHA384. This is automatically called by wc_Sha384Hash.
int wc_Sha384Update(wc_Sha384 * sha, const byte * data, word32 len)
Can be called to continually hash the provided byte array of length len.
int wc_Sha384Final(wc_Sha384 * sha384, byte * hash)
Finalizes hashing of data. Result is placed into hash.

Functions Documentation

function wc_ShaHash

int wc_ShaHash(
    const byte * data,
    word32 len,
    byte * hash
)

Convenience function, handles all the hashing and places the result into hash.

Parameters:

  • data the data to hash
  • len the length of data
  • hash Byte array to hold hash value.

See:

Return:

  • 0 Returned upon successfully ….
  • Memory_E memory error, unable to allocate memory. This is only possible with the small stack option enabled.

Example

none

function wc_Sha256Hash

int wc_Sha256Hash(
    const byte * data,
    word32 len,
    byte * hash
)

Convenience function, handles all the hashing and places the result into hash.

Parameters:

  • data the data to hash
  • len the length of data
  • hash Byte array to hold hash value.

See:

Return:

  • 0 Returned upon successfully …
  • Memory_E memory error, unable to allocate memory. This is only possible with the small stack option enabled.

Example

none

function wc_Sha224Hash

int wc_Sha224Hash(
    const byte * data,
    word32 len,
    byte * hash
)

Convenience function, handles all the hashing and places the result into hash.

Parameters:

  • data the data to hash
  • len the length of data
  • hash Byte array to hold hash value.

See:

Return:

  • 0 Success
  • <0 Error

Example

none

function wc_Sha512Hash

int wc_Sha512Hash(
    const byte * data,
    word32 len,
    byte * hash
)

Convenience function, handles all the hashing and places the result into hash.

Parameters:

  • data the data to hash
  • len the length of data
  • hash Byte array to hold hash value.

See:

Return:

  • 0 Returned upon successfully hashing the inputted data
  • Memory_E memory error, unable to allocate memory. This is only possible with the small stack option enabled.

Example

none

function wc_Sha384Hash

int wc_Sha384Hash(
    const byte * data,
    word32 len,
    byte * hash
)

Convenience function, handles all the hashing and places the result into hash.

Parameters:

  • data the data to hash
  • len the length of data
  • hash Byte array to hold hash value.

See:

Return:

  • 0 Returned upon successfully hashing the data
  • Memory_E memory error, unable to allocate memory. This is only possible with the small stack option enabled.

Example

none

function wc_InitSha

int wc_InitSha(
    wc_Sha * 
)

This function initializes SHA. This is automatically called by wc_ShaHash.

Parameters:

  • sha pointer to the sha structure to use for encryption

See:

Return: 0 Returned upon successfully initializing

Example

Sha sha[1];
if ((ret = wc_InitSha(sha)) != 0) {
   WOLFSSL_MSG("wc_InitSha failed");
}
else {
   wc_ShaUpdate(sha, data, len);
   wc_ShaFinal(sha, hash);
}

function wc_ShaUpdate

int wc_ShaUpdate(
    wc_Sha * sha,
    const byte * data,
    word32 len
)

Can be called to continually hash the provided byte array of length len.

Parameters:

  • sha pointer to the sha structure to use for encryption
  • data the data to be hashed
  • len length of data to be hashed

See:

Return: 0 Returned upon successfully adding the data to the digest.

Example

Sha sha[1];
byte data[] = { // Data to be hashed };
word32 len = sizeof(data);

if ((ret = wc_InitSha(sha)) != 0) {
   WOLFSSL_MSG("wc_InitSha failed");
}
else {
   wc_ShaUpdate(sha, data, len);
   wc_ShaFinal(sha, hash);
}

function wc_ShaFinal

int wc_ShaFinal(
    wc_Sha * sha,
    byte * hash
)

Finalizes hashing of data. Result is placed into hash. Resets state of sha struct.

Parameters:

  • sha pointer to the sha structure to use for encryption
  • hash Byte array to hold hash value.

See:

Return: 0 Returned upon successfully finalizing.

Example

Sha sha[1];
byte data[] = { Data to be hashed };
word32 len = sizeof(data);

if ((ret = wc_InitSha(sha)) != 0) {
   WOLFSSL_MSG("wc_InitSha failed");
}
else {
   wc_ShaUpdate(sha, data, len);
   wc_ShaFinal(sha, hash);
}

function wc_ShaFree

void wc_ShaFree(
    wc_Sha * 
)

Used to clean up memory used by an initialized Sha struct. Note: this is only supported if you have WOLFSSL_TI_HASH defined.

Parameters:

  • sha Pointer to the Sha struct to free.

See:

Return: No returns.

Example

Sha sha;
wc_InitSha(&sha);
// Use sha
wc_ShaFree(&sha);

function wc_ShaGetHash

int wc_ShaGetHash(
    wc_Sha * sha,
    byte * hash
)

Gets hash data. Result is placed into hash. Does not reset state of sha struct.

Parameters:

  • sha pointer to the sha structure to use for encryption
  • hash Byte array to hold hash value.

See:

Return: 0 Returned upon successfully finalizing.

Example

Sha sha[1];
if ((ret = wc_InitSha(sha)) != 0) {
WOLFSSL_MSG("wc_InitSha failed");
}
else {
    wc_ShaUpdate(sha, data, len);
    wc_ShaGetHash(sha, hash);
}

function wc_InitSha256

int wc_InitSha256(
    wc_Sha256 * 
)

This function initializes SHA256. This is automatically called by wc_Sha256Hash.

Parameters:

  • sha256 pointer to the sha256 structure to use for encryption

See:

Return: 0 Returned upon successfully initializing

Example

Sha256 sha256[1];
if ((ret = wc_InitSha256(sha256)) != 0) {
    WOLFSSL_MSG("wc_InitSha256 failed");
}
else {
    wc_Sha256Update(sha256, data, len);
    wc_Sha256Final(sha256, hash);
}

function wc_Sha256Update

int wc_Sha256Update(
    wc_Sha256 * sha,
    const byte * data,
    word32 len
)

Can be called to continually hash the provided byte array of length len.

Parameters:

  • sha256 pointer to the sha256 structure to use for encryption
  • data the data to be hashed
  • len length of data to be hashed

See:

Return: 0 Returned upon successfully adding the data to the digest.

Example

Sha256 sha256[1];
byte data[] = { Data to be hashed };
word32 len = sizeof(data);

if ((ret = wc_InitSha256(sha256)) != 0) {
   WOLFSSL_MSG("wc_InitSha256 failed");
}
else {
    wc_Sha256Update(sha256, data, len);
    wc_Sha256Final(sha256, hash);
}

function wc_Sha256Final

int wc_Sha256Final(
    wc_Sha256 * sha256,
    byte * hash
)

Finalizes hashing of data. Result is placed into hash. Resets state of sha256 struct.

Parameters:

  • sha256 pointer to the sha256 structure to use for encryption
  • hash Byte array to hold hash value.

See:

Return: 0 Returned upon successfully finalizing.

Example

Sha256 sha256[1];
byte data[] = { Data to be hashed };
word32 len = sizeof(data);

if ((ret = wc_InitSha256(sha256)) != 0) {
   WOLFSSL_MSG("wc_InitSha256 failed");
}
else {
   wc_Sha256Update(sha256, data, len);
   wc_Sha256Final(sha256, hash);
}

function wc_Sha256Free

void wc_Sha256Free(
    wc_Sha256 * 
)

Resets the Sha256 structure. Note: this is only supported if you have WOLFSSL_TI_HASH defined.

Parameters:

  • sha256 Pointer to the sha256 structure to be freed.

See:

Return: none No returns.

Example

Sha256 sha256;
byte data[] = { Data to be hashed };
word32 len = sizeof(data);

if ((ret = wc_InitSha256(&sha256)) != 0) {
    WOLFSSL_MSG("wc_InitSha256 failed");
}
else {
    wc_Sha256Update(&sha256, data, len);
    wc_Sha256Final(&sha256, hash);
    wc_Sha256Free(&sha256);
}

function wc_Sha256GetHash

int wc_Sha256GetHash(
    wc_Sha256 * sha256,
    byte * hash
)

Gets hash data. Result is placed into hash. Does not reset state of sha256 struct.

Parameters:

  • sha256 pointer to the sha256 structure to use for encryption
  • hash Byte array to hold hash value.

See:

Return: 0 Returned upon successfully finalizing.

Example

Sha256 sha256[1];
if ((ret = wc_InitSha256(sha256)) != 0) {
   WOLFSSL_MSG("wc_InitSha256 failed");
}
else {
   wc_Sha256Update(sha256, data, len);
   wc_Sha256GetHash(sha256, hash);
}

function wc_InitSha224

int wc_InitSha224(
    wc_Sha224 * 
)

Used to initialize a Sha224 struct.

Parameters:

  • sha224 Pointer to a Sha224 struct to initialize.

See:

Return:

  • 0 Success
  • 1 Error returned because sha224 is null.

Example

Sha224 sha224;
if(wc_InitSha224(&sha224) != 0)
{
    // Handle error
}

function wc_Sha224Update

int wc_Sha224Update(
    wc_Sha224 * sha224,
    const byte * data,
    word32 len
)

Can be called to continually hash the provided byte array of length len.

Parameters:

  • sha224 Pointer to the Sha224 structure to use for encryption.
  • data Data to be hashed.
  • len Length of data to be hashed.

See:

Return:

  • 0 Success
  • 1 Error returned if function fails.
  • BAD_FUNC_ARG Error returned if sha224 or data is null.

Example

Sha224 sha224;
byte data[] = { /* Data to be hashed };
word32 len = sizeof(data);

if ((ret = wc_InitSha224(&sha224)) != 0) {
   WOLFSSL_MSG("wc_InitSha224 failed");
}
else {
  wc_Sha224Update(&sha224, data, len);
  wc_Sha224Final(&sha224, hash);
}

function wc_Sha224Final

int wc_Sha224Final(
    wc_Sha224 * sha224,
    byte * hash
)

Finalizes hashing of data. Result is placed into hash. Resets state of sha224 struct.

Parameters:

  • sha224 pointer to the sha224 structure to use for encryption
  • hash Byte array to hold hash value.

See:

Return:

  • 0 Success
  • <0 Error

Example

Sha224 sha224;
byte data[] = { /* Data to be hashed };
word32 len = sizeof(data);

if ((ret = wc_InitSha224(&sha224)) != 0) {
    WOLFSSL_MSG("wc_InitSha224 failed");
}
else {
    wc_Sha224Update(&sha224, data, len);
    wc_Sha224Final(&sha224, hash);
}

function wc_InitSha512

int wc_InitSha512(
    wc_Sha512 * 
)

This function initializes SHA512. This is automatically called by wc_Sha512Hash.

Parameters:

  • sha512 pointer to the sha512 structure to use for encryption

See:

Return: 0 Returned upon successfully initializing

Example

Sha512 sha512[1];
if ((ret = wc_InitSha512(sha512)) != 0) {
   WOLFSSL_MSG("wc_InitSha512 failed");
}
else {
   wc_Sha512Update(sha512, data, len);
   wc_Sha512Final(sha512, hash);
}

function wc_Sha512Update

int wc_Sha512Update(
    wc_Sha512 * sha,
    const byte * data,
    word32 len
)

Can be called to continually hash the provided byte array of length len.

Parameters:

  • sha512 pointer to the sha512 structure to use for encryption
  • data the data to be hashed
  • len length of data to be hashed

See:

Return: 0 Returned upon successfully adding the data to the digest.

Example

Sha512 sha512[1];
byte data[] = { Data to be hashed };
word32 len = sizeof(data);

if ((ret = wc_InitSha512(sha512)) != 0) {
   WOLFSSL_MSG("wc_InitSha512 failed");
}
else {
   wc_Sha512Update(sha512, data, len);
   wc_Sha512Final(sha512, hash);
}

function wc_Sha512Final

int wc_Sha512Final(
    wc_Sha512 * sha512,
    byte * hash
)

Finalizes hashing of data. Result is placed into hash.

Parameters:

  • sha512 pointer to the sha512 structure to use for encryption
  • hash Byte array to hold hash value.

See:

Return: 0 Returned upon successfully finalizing the hash.

Example

Sha512 sha512[1];
byte data[] = { Data to be hashed };
word32 len = sizeof(data);

if ((ret = wc_InitSha512(sha512)) != 0) {
    WOLFSSL_MSG("wc_InitSha512 failed");
}
else {
   wc_Sha512Update(sha512, data, len);
   wc_Sha512Final(sha512, hash);
}

function wc_InitSha384

int wc_InitSha384(
    wc_Sha384 * 
)

This function initializes SHA384. This is automatically called by wc_Sha384Hash.

Parameters:

  • sha384 pointer to the sha384 structure to use for encryption

See:

Return: 0 Returned upon successfully initializing

Example

Sha384 sha384[1];
if ((ret = wc_InitSha384(sha384)) != 0) {
   WOLFSSL_MSG("wc_InitSha384 failed");
}
else {
   wc_Sha384Update(sha384, data, len);
   wc_Sha384Final(sha384, hash);
}

function wc_Sha384Update

int wc_Sha384Update(
    wc_Sha384 * sha,
    const byte * data,
    word32 len
)

Can be called to continually hash the provided byte array of length len.

Parameters:

  • sha384 pointer to the sha384 structure to use for encryption
  • data the data to be hashed
  • len length of data to be hashed

See:

Return: 0 Returned upon successfully adding the data to the digest.

Example

Sha384 sha384[1];
byte data[] = { Data to be hashed };
word32 len = sizeof(data);

if ((ret = wc_InitSha384(sha384)) != 0) {
   WOLFSSL_MSG("wc_InitSha384 failed");
}
else {
   wc_Sha384Update(sha384, data, len);
   wc_Sha384Final(sha384, hash);
}

function wc_Sha384Final

int wc_Sha384Final(
    wc_Sha384 * sha384,
    byte * hash
)

Finalizes hashing of data. Result is placed into hash.

Parameters:

  • sha384 pointer to the sha384 structure to use for encryption
  • hash Byte array to hold hash value.

See:

Return: 0 Returned upon successfully finalizing.

Example

Sha384 sha384[1];
byte data[] = { Data to be hashed };
word32 len = sizeof(data);

if ((ret = wc_InitSha384(sha384)) != 0) {
   WOLFSSL_MSG("wc_InitSha384 failed");
}
else {
   wc_Sha384Update(sha384, data, len);
   wc_Sha384Final(sha384, hash);
}

Updated on 2022-05-18 at 08:30:58 +0000