Skip to content

sha3.h

Functions

Name
int wc_InitSha3_224(wc_Sha3 * sha3, void * heap, int devId)
This function initializes SHA3-224. This is automatically called by wc_Sha3_224Hash.
int wc_Sha3_224_Update(wc_Sha3 * sha, const byte * data, word32 len)
Can be called to continually hash the provided byte array of length len.
int wc_Sha3_224_Final(wc_Sha3 * sha3, byte * hash)
Finalizes hashing of data. Result is placed into hash. Resets state of sha3 struct.
void wc_Sha3_224_Free(wc_Sha3 * )
Resets the wc_Sha3 structure. Note: this is only supported if you have WOLFSSL_TI_HASH defined.
int wc_Sha3_224_GetHash(wc_Sha3 * sha3, byte * hash)
Gets hash data. Result is placed into hash. Does not reset state of sha3 struct.
int wc_Sha3_224_Copy(wc_Sha3 * sha3, wc_Sha3 * dst)
Copy the state of the hash.
int wc_InitSha3_256(wc_Sha3 * sha3, void * heap, int devId)
This function initializes SHA3-256. This is automatically called by wc_Sha3_256Hash.
int wc_Sha3_256_Update(wc_Sha3 * sha, const byte * data, word32 len)
Can be called to continually hash the provided byte array of length len.
int wc_Sha3_256_Final(wc_Sha3 * sha3, byte * hash)
Finalizes hashing of data. Result is placed into hash. Resets state of sha3 struct.
void wc_Sha3_256_Free(wc_Sha3 * )
Resets the wc_Sha3 structure. Note: this is only supported if you have WOLFSSL_TI_HASH defined.
int wc_Sha3_256_GetHash(wc_Sha3 * sha3, byte * hash)
Gets hash data. Result is placed into hash. Does not reset state of sha3 struct.
int wc_Sha3_256_Copy(wc_Sha3 * sha3, wc_Sha3 * dst)
Copy the state of the hash.
int wc_InitSha3_384(wc_Sha3 * sha3, void * heap, int devId)
This function initializes SHA3-384. This is automatically called by wc_Sha3_384Hash.
int wc_Sha3_384_Update(wc_Sha3 * sha, const byte * data, word32 len)
Can be called to continually hash the provided byte array of length len.
int wc_Sha3_384_Final(wc_Sha3 * sha3, byte * hash)
Finalizes hashing of data. Result is placed into hash. Resets state of sha3 struct.
void wc_Sha3_384_Free(wc_Sha3 * )
Resets the wc_Sha3 structure. Note: this is only supported if you have WOLFSSL_TI_HASH defined.
int wc_Sha3_384_GetHash(wc_Sha3 * sha3, byte * hash)
Gets hash data. Result is placed into hash. Does not reset state of sha3 struct.
int wc_Sha3_384_Copy(wc_Sha3 * sha3, wc_Sha3 * dst)
Copy the state of the hash.
int wc_InitSha3_512(wc_Sha3 * sha3, void * heap, int devId)
This function initializes SHA3-512. This is automatically called by wc_Sha3_512Hash.
int wc_Sha3_512_Update(wc_Sha3 * sha, const byte * data, word32 len)
Can be called to continually hash the provided byte array of length len.
int wc_Sha3_512_Final(wc_Sha3 * sha3, byte * hash)
Finalizes hashing of data. Result is placed into hash. Resets state of sha3 struct.
void wc_Sha3_512_Free(wc_Sha3 * )
Resets the wc_Sha3 structure. Note: this is only supported if you have WOLFSSL_TI_HASH defined.
int wc_Sha3_512_GetHash(wc_Sha3 * sha3, byte * hash)
Gets hash data. Result is placed into hash. Does not reset state of sha3 struct.
int wc_Sha3_512_Copy(wc_Sha3 * sha3, wc_Sha3 * dst)
Copy the state of the hash.
int wc_InitShake128(wc_Shake * shake, void * heap, int devId)
This function initializes SHAKE-128. This is automatically called by wc_Shake128Hash.
int wc_Shake128_Update(wc_Shake * sha, const byte * data, word32 len)
Can be called to continually hash the provided byte array of length len.
int wc_Shake128_Final(wc_Shake * shake, byte * hash)
Finalizes hashing of data. Result is placed into hash. Resets state of shake struct.
int wc_Shake128_Absorb(wc_Shake * sha, const byte * data, word32 len)
Called to absorb the provided byte array of length len. Cannot be called incrementally.
int wc_Shake128_SqueezeBlocks(wc_Shake * shake, byte * out, word32 blockCnt)
Squeeze out more blocks of data. Result is placed into out. Can be called inrementally.
void wc_Shake128_Free(wc_Shake * )
Resets the wc_Shake structure. Note: this is only supported if you have WOLFSSL_TI_HASH defined.
int wc_Shake128_GetHash(wc_Shake * shake, byte * hash)
Gets hash data. Result is placed into hash. Does not reset state of shake struct.
int wc_Shake128_Copy(wc_Shake * shake, wc_Shake * dst)
Copy the state of the hash.
int wc_InitShake256(wc_Shake * shake, void * heap, int devId)
This function initializes SHAKE-256. This is automatically called by wc_Shake256Hash.
int wc_Shake256_Update(wc_Shake * sha, const byte * data, word32 len)
Can be called to continually hash the provided byte array of length len.
int wc_Shake256_Final(wc_Shake * shake, byte * hash, word32 hashLen)
Finalizes hashing of data. Result is placed into hash. Resets state of shake struct.
int wc_Shake256_Absorb(wc_Shake * sha, const byte * data, word32 len)
Called to absorb the provided byte array of length len. Cannot be called incrementally.
int wc_Shake256_SqueezeBlocks(wc_Shake * shake, byte * out, word32 blockCnt)
Squeeze out more blocks of data. Result is placed into out. Can be called incrementally.
void wc_Shake256_Free(wc_Shake * )
Resets the wc_Shake structure. Note: this is only supported if you have WOLFSSL_TI_HASH defined.
int wc_Shake256_GetHash(wc_Shake * shake, byte * hash)
Gets hash data. Result is placed into hash. Does not reset state of shake struct.
int wc_Shake256_Copy(wc_Shake * shake, wc_Shake * dst)
Copy the state of the hash.

Functions Documentation

function wc_InitSha3_224

int wc_InitSha3_224(
    wc_Sha3 * sha3,
    void * heap,
    int devId
)

This function initializes SHA3-224. This is automatically called by wc_Sha3_224Hash.

Parameters:

  • sha3 pointer to the sha3 structure to use for encryption

See:

Return: 0 Returned upon successfully initializing

Example

wc_Sha3 sha3[1];
if ((ret = wc_InitSha3_224(sha3, NULL, INVALID_DEVID)) != 0) {
    WOLFSSL_MSG("wc_InitSha3_224 failed");
}
else {
    wc_Sha3_224_Update(sha3, data, len);
    wc_Sha3_224_Final(sha3, hash);
}

function wc_Sha3_224_Update

int wc_Sha3_224_Update(
    wc_Sha3 * sha,
    const byte * data,
    word32 len
)

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

Parameters:

  • sha3 pointer to the sha3 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

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

if ((ret = wc_InitSha3_224(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_224 failed");
}
else {
    wc_Sha3_224_Update(sha3, data, len);
    wc_Sha3_224_Final(sha3, hash);
}

function wc_Sha3_224_Final

int wc_Sha3_224_Final(
    wc_Sha3 * sha3,
    byte * hash
)

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

Parameters:

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

See:

Return: 0 Returned upon successfully finalizing.

Example

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

if ((ret = wc_InitSha3_224(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_224 failed");
}
else {
   wc_Sha3_224_Update(sha3, data, len);
   wc_Sha3_224_Final(sha3, hash);
}

function wc_Sha3_224_Free

void wc_Sha3_224_Free(
    wc_Sha3 * 
)

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

Parameters:

  • sha3 Pointer to the sha3 structure to be freed.

See:

Return: none No returns.

Example

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

if ((ret = wc_InitSha3_224(&sha3, NULL, INVALID_DEVID)) != 0) {
    WOLFSSL_MSG("wc_InitSha3_224 failed");
}
else {
    wc_Sha3_224_Update(&sha3, data, len);
    wc_Sha3_224_Final(&sha3, hash);
    wc_Sha3_224_Free(&sha3);
}

function wc_Sha3_224_GetHash

int wc_Sha3_224_GetHash(
    wc_Sha3 * sha3,
    byte * hash
)

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

Parameters:

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

See:

Return: 0 Returned upon successful copying of the hash.

Example

wc_Sha3 sha3[1];
if ((ret = wc_InitSha3_224(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_224 failed");
}
else {
   wc_Sha3_224_Update(sha3, data, len);
   wc_Sha3_224_GetHash(sha3, hash);
}

function wc_Sha3_224_Copy

int wc_Sha3_224_Copy(
    wc_Sha3 * sha3,
    wc_Sha3 * dst
)

Copy the state of the hash.

Parameters:

  • sha3 pointer to the sha3 structure to copy
  • dst pointer to the sha3 structure to copy into

See:

Return: 0 Returned upon successful copying.

Example

wc_Sha3 sha3[1];
wc_Sha3 sha3_dup[1];
if ((ret = wc_InitSha3_224(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_224 failed");
}
else {
   wc_Sha3_224_Update(sha3, data, len);
   wc_Sha3_224_Copy(sha3, sha3_dup);
}

function wc_InitSha3_256

int wc_InitSha3_256(
    wc_Sha3 * sha3,
    void * heap,
    int devId
)

This function initializes SHA3-256. This is automatically called by wc_Sha3_256Hash.

Parameters:

  • sha3 pointer to the sha3 structure to use for encryption

See:

Return: 0 Returned upon successfully initializing

Example

wc_Sha3 sha3[1];
if ((ret = wc_InitSha3_256(sha3, NULL, INVALID_DEVID)) != 0) {
    WOLFSSL_MSG("wc_InitSha3_256 failed");
}
else {
    wc_Sha3_256_Update(sha3, data, len);
    wc_Sha3_256_Final(sha3, hash);
}

function wc_Sha3_256_Update

int wc_Sha3_256_Update(
    wc_Sha3 * sha,
    const byte * data,
    word32 len
)

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

Parameters:

  • sha3 pointer to the sha3 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

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

if ((ret = wc_InitSha3_256(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_256 failed");
}
else {
    wc_Sha3_256_Update(sha3, data, len);
    wc_Sha3_256_Final(sha3, hash);
}

function wc_Sha3_256_Final

int wc_Sha3_256_Final(
    wc_Sha3 * sha3,
    byte * hash
)

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

Parameters:

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

See:

Return: 0 Returned upon successfully finalizing.

Example

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

if ((ret = wc_InitSha3_256(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_256 failed");
}
else {
   wc_Sha3_256_Update(sha3, data, len);
   wc_Sha3_256_Final(sha3, hash);
}

function wc_Sha3_256_Free

void wc_Sha3_256_Free(
    wc_Sha3 * 
)

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

Parameters:

  • sha3 Pointer to the sha3 structure to be freed.

See:

Return: none No returns.

Example

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

if ((ret = wc_InitSha3_256(&sha3, NULL, INVALID_DEVID)) != 0) {
    WOLFSSL_MSG("wc_InitSha3_256 failed");
}
else {
    wc_Sha3_256_Update(&sha3, data, len);
    wc_Sha3_256_Final(&sha3, hash);
    wc_Sha3_256_Free(&sha3);
}

function wc_Sha3_256_GetHash

int wc_Sha3_256_GetHash(
    wc_Sha3 * sha3,
    byte * hash
)

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

Parameters:

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

See:

Return: 0 Returned upon successful copying of the hash.

Example

wc_Sha3 sha3[1];
if ((ret = wc_InitSha3_256(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_256 failed");
}
else {
   wc_Sha3_256_Update(sha3, data, len);
   wc_Sha3_256_GetHash(sha3, hash);
}

function wc_Sha3_256_Copy

int wc_Sha3_256_Copy(
    wc_Sha3 * sha3,
    wc_Sha3 * dst
)

Copy the state of the hash.

Parameters:

  • sha3 pointer to the sha3 structure to copy
  • dst pointer to the sha3 structure to copy into

See:

Return: 0 Returned upon successful copying.

Example

wc_Sha3 sha3[1];
wc_Sha3 sha3_dup[1];
if ((ret = wc_InitSha3_256(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_256 failed");
}
else {
   wc_Sha3_256_Update(sha3, data, len);
   wc_Sha3_256_Copy(sha3, sha3_dup);
}

function wc_InitSha3_384

int wc_InitSha3_384(
    wc_Sha3 * sha3,
    void * heap,
    int devId
)

This function initializes SHA3-384. This is automatically called by wc_Sha3_384Hash.

Parameters:

  • sha3 pointer to the sha3 structure to use for encryption

See:

Return: 0 Returned upon successfully initializing

Example

wc_Sha3 sha3[1];
if ((ret = wc_InitSha3_384(sha3, NULL, INVALID_DEVID)) != 0) {
    WOLFSSL_MSG("wc_InitSha3_384 failed");
}
else {
    wc_Sha3_384_Update(sha3, data, len);
    wc_Sha3_384_Final(sha3, hash);
}

function wc_Sha3_384_Update

int wc_Sha3_384_Update(
    wc_Sha3 * sha,
    const byte * data,
    word32 len
)

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

Parameters:

  • sha3 pointer to the sha3 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

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

if ((ret = wc_InitSha3_384(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_384 failed");
}
else {
    wc_Sha3_384_Update(sha3, data, len);
    wc_Sha3_384_Final(sha3, hash);
}

function wc_Sha3_384_Final

int wc_Sha3_384_Final(
    wc_Sha3 * sha3,
    byte * hash
)

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

Parameters:

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

See:

Return: 0 Returned upon successfully finalizing.

Example

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

if ((ret = wc_InitSha3_384(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_384 failed");
}
else {
   wc_Sha3_384_Update(sha3, data, len);
   wc_Sha3_384_Final(sha3, hash);
}

function wc_Sha3_384_Free

void wc_Sha3_384_Free(
    wc_Sha3 * 
)

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

Parameters:

  • sha3 Pointer to the sha3 structure to be freed.

See:

Return: none No returns.

Example

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

if ((ret = wc_InitSha3_384(&sha3, NULL, INVALID_DEVID)) != 0) {
    WOLFSSL_MSG("wc_InitSha3_384 failed");
}
else {
    wc_Sha3_384_Update(&sha3, data, len);
    wc_Sha3_384_Final(&sha3, hash);
    wc_Sha3_384_Free(&sha3);
}

function wc_Sha3_384_GetHash

int wc_Sha3_384_GetHash(
    wc_Sha3 * sha3,
    byte * hash
)

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

Parameters:

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

See:

Return: 0 Returned upon successful copying of the hash.

Example

wc_Sha3 sha3[1];
if ((ret = wc_InitSha3_384(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_38384ailed");
}
else {
   wc_Sha3_384_Update(sha3, data, len);
   wc_Sha3_384_GetHash(sha3, hash);
}

function wc_Sha3_384_Copy

int wc_Sha3_384_Copy(
    wc_Sha3 * sha3,
    wc_Sha3 * dst
)

Copy the state of the hash.

Parameters:

  • sha3 pointer to the sha3 structure to copy
  • dst pointer to the sha3 structure to copy into

See:

Return: 0 Returned upon successful copying.

Example

wc_Sha3 sha3[1];
wc_Sha3 sha3_dup[1];
if ((ret = wc_InitSha3_384(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_384 failed");
}
else {
   wc_Sha3_384_Update(sha3, data, len);
   wc_Sha3_384_Copy(sha3, sha3_dup);
}

function wc_InitSha3_512

int wc_InitSha3_512(
    wc_Sha3 * sha3,
    void * heap,
    int devId
)

This function initializes SHA3-512. This is automatically called by wc_Sha3_512Hash.

Parameters:

  • sha3 pointer to the sha3 structure to use for encryption

See:

Return: 0 Returned upon successfully initializing

Example

wc_Sha3 sha3[1];
if ((ret = wc_InitSha3_512(sha3, NULL, INVALID_DEVID)) != 0) {
    WOLFSSL_MSG("wc_InitSha3_512 failed");
}
else {
    wc_Sha3_512_Update(sha3, data, len);
    wc_Sha3_512_Final(sha3, hash);
}

function wc_Sha3_512_Update

int wc_Sha3_512_Update(
    wc_Sha3 * sha,
    const byte * data,
    word32 len
)

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

Parameters:

  • sha3 pointer to the sha3 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

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

if ((ret = wc_InitSha3_512(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_512 failed");
}
else {
    wc_Sha3_512_Update(sha3, data, len);
    wc_Sha3_512_Final(sha3, hash);
}

function wc_Sha3_512_Final

int wc_Sha3_512_Final(
    wc_Sha3 * sha3,
    byte * hash
)

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

Parameters:

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

See:

Return: 0 Returned upon successfully finalizing.

Example

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

if ((ret = wc_InitSha3_512(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_512 failed");
}
else {
   wc_Sha3_512_Update(sha3, data, len);
   wc_Sha3_512_Final(sha3, hash);
}

function wc_Sha3_512_Free

void wc_Sha3_512_Free(
    wc_Sha3 * 
)

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

Parameters:

  • sha3 Pointer to the sha3 structure to be freed.

See:

Return: none No returns.

Example

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

if ((ret = wc_InitSha3_512(&sha3, NULL, INVALID_DEVID)) != 0) {
    WOLFSSL_MSG("wc_InitSha3_512 failed");
}
else {
    wc_Sha3_512_Update(&sha3, data, len);
    wc_Sha3_512_Final(&sha3, hash);
    wc_Sha3_512_Free(&sha3);
}

function wc_Sha3_512_GetHash

int wc_Sha3_512_GetHash(
    wc_Sha3 * sha3,
    byte * hash
)

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

Parameters:

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

See:

Return: 0 Returned upon successful copying of the hash.

Example

wc_Sha3 sha3[1];
if ((ret = wc_InitSha3_512(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_512 failed");
}
else {
   wc_Sha3_512_Update(sha3, data, len);
   wc_Sha3_512_GetHash(sha3, hash);
}

function wc_Sha3_512_Copy

int wc_Sha3_512_Copy(
    wc_Sha3 * sha3,
    wc_Sha3 * dst
)

Copy the state of the hash.

Parameters:

  • sha3 pointer to the sha3 structure to copy
  • dst pointer to the sha3 structure to copy into

See:

Return: 0 Returned upon successful copying.

Example

wc_Sha3 sha3[1];
wc_Sha3 sha3_dup[1];
if ((ret = wc_InitSha3_512(sha3, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitSha3_512 failed");
}
else {
   wc_Sha3_512_Update(sha3, data, len);
   wc_Sha3_512_Copy(sha3, sha3_dup);
}

function wc_InitShake128

int wc_InitShake128(
    wc_Shake * shake,
    void * heap,
    int devId
)

This function initializes SHAKE-128. This is automatically called by wc_Shake128Hash.

Parameters:

  • shake pointer to the shake structure to use for encryption

See:

Return: 0 Returned upon successfully initializing

Example

wc_Shake shake[1];
if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
    WOLFSSL_MSG("wc_InitShake128 failed");
}
else {
    wc_Shake128_Update(shake, data, len);
    wc_Shake128_Final(shake, hash);
}

function wc_Shake128_Update

int wc_Shake128_Update(
    wc_Shake * sha,
    const byte * data,
    word32 len
)

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

Parameters:

  • shake pointer to the shake 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

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

if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitShake128 failed");
}
else {
    wc_Shake128_Update(shake, data, len);
    wc_Shake128_Final(shake, hash);
}

function wc_Shake128_Final

int wc_Shake128_Final(
    wc_Shake * shake,
    byte * hash
)

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

Parameters:

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

See:

Return: 0 Returned upon successfully finalizing.

Example

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

if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitShake128 failed");
}
else {
   wc_Shake128_Update(shake, data, len);
   wc_Shake128_Final(shake, hash);
}

function wc_Shake128_Absorb

int wc_Shake128_Absorb(
    wc_Shake * sha,
    const byte * data,
    word32 len
)

Called to absorb the provided byte array of length len. Cannot be called incrementally.

Parameters:

  • shake pointer to the shake structure to use for encryption
  • data the data to be absorbed
  • len length of data to be absorbed

See:

Return: 0 Returned upon successfully absorbed the data.

Example

wc_Shake shake[1];
byte data[] = { Data to be hashed };
word32 len = sizeof(data);
byte out[2 * WC_SHA3_128_BLOCK_SIZE];
int blocks = 2;

if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitShake128 failed");
}
else {
   wc_Shake128_Absorb(shake, data, len);
   wc_Shake128_SqueezeBlocks(shake, out, blocks);
}

function wc_Shake128_SqueezeBlocks

int wc_Shake128_SqueezeBlocks(
    wc_Shake * shake,
    byte * out,
    word32 blockCnt
)

Squeeze out more blocks of data. Result is placed into out. Can be called inrementally.

Parameters:

  • shake pointer to the shake structure to use for encryption
  • hash Byte array to hold output.
  • blocks Number of blocks to squeeze out. Each block is WC_SHA3_128_BLOCK_SIZE bytes in length.

See:

Return: 0 Returned upon successfully squeezing.

Example

wc_Shake shake[1];
byte data[] = { Data to be hashed };
word32 len = sizeof(data);
byte out[2 * WC_SHA3_128_BLOCK_SIZE];
int blocks = 2;

if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitShake128 failed");
}
else {
   wc_Shake128_Absorb(shake, data, len);
   wc_Shake128_SqueezeBlocks(shake, out, blocks);
}

function wc_Shake128_Free

void wc_Shake128_Free(
    wc_Shake * 
)

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

Parameters:

  • shake Pointer to the shake structure to be freed.

See:

Return: none No returns.

Example

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

if ((ret = wc_InitShake128(&shake, NULL, INVALID_DEVID)) != 0) {
    WOLFSSL_MSG("wc_InitShake128 failed");
}
else {
    wc_Shake128_Update(&shake, data, len);
    wc_Shake128_Final(&shake, hash);
    wc_Shake128_Free(&shake);
}

function wc_Shake128_GetHash

int wc_Shake128_GetHash(
    wc_Shake * shake,
    byte * hash
)

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

Parameters:

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

See:

Return: 0 Returned upon successful copying of the hash.

Example

wc_Shake shake[1];
if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitShake128 failed");
}
else {
   wc_Shake128_Update(shake, data, len);
   wc_Shake128_GetHash(shake, hash);
}

function wc_Shake128_Copy

int wc_Shake128_Copy(
    wc_Shake * shake,
    wc_Shake * dst
)

Copy the state of the hash.

Parameters:

  • shake pointer to the shake structure to copy
  • dst pointer to the shake structure to copy into

See:

Return: 0 Returned upon successful copying.

Example

wc_Shake shake[1];
wc_Shake shake_dup[1];
if ((ret = wc_InitShake128(shake, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitShake128 failed");
}
else {
   wc_Shake128_Update(shake, data, len);
   wc_Shake128_Copy(shake, shake_dup);
}

function wc_InitShake256

int wc_InitShake256(
    wc_Shake * shake,
    void * heap,
    int devId
)

This function initializes SHAKE-256. This is automatically called by wc_Shake256Hash.

Parameters:

  • shake pointer to the shake structure to use for encryption

See:

Return: 0 Returned upon successfully initializing

Example

wc_Shake shake[1];
if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
    WOLFSSL_MSG("wc_InitShake256 failed");
}
else {
    wc_Shake256_Update(shake, data, len);
    wc_Shake256_Final(shake, hash, sizeof(hash));
}

function wc_Shake256_Update

int wc_Shake256_Update(
    wc_Shake * sha,
    const byte * data,
    word32 len
)

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

Parameters:

  • shake pointer to the shake 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

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

if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitShake256 failed");
}
else {
    wc_Shake256_Update(shake, data, len);
    wc_Shake256_Final(shake, hash, sizeof(hash));
}

function wc_Shake256_Final

int wc_Shake256_Final(
    wc_Shake * shake,
    byte * hash,
    word32 hashLen
)

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

Parameters:

  • shake pointer to the shake structure to use for encryption
  • hash Byte array to hold hash value.
  • hashLen Size of hash in bytes.

See:

Return: 0 Returned upon successfully finalizing.

Example

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

if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitShake256 failed");
}
else {
   wc_Shake256_Update(shake, data, len);
   wc_Shake256_Final(shake, hash, sizeof(hash));
}

function wc_Shake256_Absorb

int wc_Shake256_Absorb(
    wc_Shake * sha,
    const byte * data,
    word32 len
)

Called to absorb the provided byte array of length len. Cannot be called incrementally.

Parameters:

  • shake pointer to the shake structure to use for encryption
  • data the data to be absorbed
  • len length of data to be absorbed

See:

Return: 0 Returned upon successfully absorbed the data.

Example

wc_Shake shake[1];
byte data[] = { Data to be hashed };
word32 len = sizeof(data);
byte out[2 * WC_SHA3_256_BLOCK_SIZE];
int blocks = 2;

if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitShake256 failed");
}
else {
   wc_Shake256_Absorb(shake, data, len);
   wc_Shake256_SqueezeBlocks(shake, out, blocks);
}

function wc_Shake256_SqueezeBlocks

int wc_Shake256_SqueezeBlocks(
    wc_Shake * shake,
    byte * out,
    word32 blockCnt
)

Squeeze out more blocks of data. Result is placed into out. Can be called incrementally.

Parameters:

  • shake pointer to the shake structure to use for encryption
  • hash Byte array to hold output.
  • blocks Number of blocks to squeeze out. Each block is WC_SHA3_256_BLOCK_SIZE bytes in length.

See:

Return: 0 Returned upon successfully squeezing.

Example

wc_Shake shake[1];
byte data[] = { Data to be hashed };
word32 len = sizeof(data);
byte out[2 * WC_SHA3_256_BLOCK_SIZE];
int blocks = 2;

if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitShake256 failed");
}
else {
   wc_Shake256_Absorb(shake, data, len);
   wc_Shake256_SqueezeBlocks(shake, out, blocks);
}

function wc_Shake256_Free

void wc_Shake256_Free(
    wc_Shake * 
)

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

Parameters:

  • shake Pointer to the shake structure to be freed.

See:

Return: none No returns.

Example

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

if ((ret = wc_InitShake256(&shake, NULL, INVALID_DEVID)) != 0) {
    WOLFSSL_MSG("wc_InitShake256 failed");
}
else {
    wc_Shake256_Update(&shake, data, len);
    wc_Shake256_Final(&shake, hash, sizeof(hash));
    wc_Shake256_Free(&shake);
}

function wc_Shake256_GetHash

int wc_Shake256_GetHash(
    wc_Shake * shake,
    byte * hash
)

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

Parameters:

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

See:

Return: 0 Returned upon successful copying of the hash.

Example

wc_Shake shake[1];
if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitShake256 failed");
}
else {
   wc_Shake256_Update(shake, data, len);
   wc_Shake256_GetHash(shake, hash);
}

function wc_Shake256_Copy

int wc_Shake256_Copy(
    wc_Shake * shake,
    wc_Shake * dst
)

Copy the state of the hash.

Parameters:

  • shake pointer to the shake structure to copy
  • dst pointer to the shake structure to copy into

See:

Return: 0 Returned upon successful copying.

Example

wc_Shake shake[1];
wc_Shake shake_dup[1];
if ((ret = wc_InitShake256(shake, NULL, INVALID_DEVID)) != 0) {
   WOLFSSL_MSG("wc_InitShake256 failed");
}
else {
   wc_Shake256_Update(shake, data, len);
   wc_Shake256_Copy(shake, shake_dup);
}

Source code


int wc_InitSha3_224(wc_Sha3* sha3, void* heap, int devId);

int wc_Sha3_224_Update(wc_Sha3* sha, const byte* data, word32 len);

int wc_Sha3_224_Final(wc_Sha3* sha3, byte* hash);

void wc_Sha3_224_Free(wc_Sha3*);

int wc_Sha3_224_GetHash(wc_Sha3* sha3, byte* hash);

int wc_Sha3_224_Copy(wc_Sha3* sha3, wc_Sha3* dst);

int wc_InitSha3_256(wc_Sha3* sha3, void* heap, int devId);

int wc_Sha3_256_Update(wc_Sha3* sha, const byte* data, word32 len);

int wc_Sha3_256_Final(wc_Sha3* sha3, byte* hash);

void wc_Sha3_256_Free(wc_Sha3*);

int wc_Sha3_256_GetHash(wc_Sha3* sha3, byte* hash);

int wc_Sha3_256_Copy(wc_Sha3* sha3, wc_Sha3* dst);

int wc_InitSha3_384(wc_Sha3* sha3, void* heap, int devId);

int wc_Sha3_384_Update(wc_Sha3* sha, const byte* data, word32 len);

int wc_Sha3_384_Final(wc_Sha3* sha3, byte* hash);

void wc_Sha3_384_Free(wc_Sha3*);

int wc_Sha3_384_GetHash(wc_Sha3* sha3, byte* hash);

int wc_Sha3_384_Copy(wc_Sha3* sha3, wc_Sha3* dst);

int wc_InitSha3_512(wc_Sha3* sha3, void* heap, int devId);

int wc_Sha3_512_Update(wc_Sha3* sha, const byte* data, word32 len);

int wc_Sha3_512_Final(wc_Sha3* sha3, byte* hash);

void wc_Sha3_512_Free(wc_Sha3*);

int wc_Sha3_512_GetHash(wc_Sha3* sha3, byte* hash);

int wc_Sha3_512_Copy(wc_Sha3* sha3, wc_Sha3* dst);

int wc_InitShake128(wc_Shake* shake, void* heap, int devId);

int wc_Shake128_Update(wc_Shake* sha, const byte* data, word32 len);

int wc_Shake128_Final(wc_Shake* shake, byte* hash);

int wc_Shake128_Absorb(wc_Shake* sha, const byte* data, word32 len);

int wc_Shake128_SqueezeBlocks(wc_Shake* shake, byte* out, word32 blockCnt);

void wc_Shake128_Free(wc_Shake*);

int wc_Shake128_GetHash(wc_Shake* shake, byte* hash);

int wc_Shake128_Copy(wc_Shake* shake, wc_Shake* dst);

int wc_InitShake256(wc_Shake* shake, void* heap, int devId);

int wc_Shake256_Update(wc_Shake* sha, const byte* data, word32 len);

int wc_Shake256_Final(wc_Shake* shake, byte* hash, word32 hashLen);

int wc_Shake256_Absorb(wc_Shake* sha, const byte* data, word32 len);

int wc_Shake256_SqueezeBlocks(wc_Shake* shake, byte* out, word32 blockCnt);

void wc_Shake256_Free(wc_Shake*);

int wc_Shake256_GetHash(wc_Shake* shake, byte* hash);

int wc_Shake256_Copy(wc_Shake* shake, wc_Shake* dst);

Updated on 2025-11-12 at 01:14:40 +0000