Skip to content

blake2.h

Functions

Name
int wc_InitBlake2b(Blake2b * b2b, word32 digestSz)
This function initializes a Blake2b structure for use with the Blake2 hash function.
int wc_Blake2bUpdate(Blake2b * b2b, const byte * data, word32 sz)
This function updates the Blake2b hash with the given input data. This function should be called after wc_InitBlake2b, and repeated until one is ready for the final hash: wc_Blake2bFinal.
int wc_Blake2bFinal(Blake2b * b2b, byte * final, word32 requestSz)
This function computes the Blake2b hash of the previously supplied input data. The output hash will be of length requestSz, or, if requestSz==0, the digestSz of the b2b structure. This function should be called after wc_InitBlake2b and wc_Blake2bUpdate has been processed for each piece of input data desired.
int wc_Blake2bHmacInit(Blake2b * b2b, const byte * key, size_t key_len)
Initialize an HMAC-BLAKE2b message authentication code computation.
int wc_Blake2bHmacUpdate(Blake2b * b2b, const byte * in, size_t in_len)
Update an HMAC-BLAKE2b message authentication code computation with additional input data.
int wc_Blake2bHmacFinal(Blake2b * b2b, const byte * key, size_t key_len, byte * out, size_t out_len)
Finalize an HMAC-BLAKE2b message authentication code computation.
int wc_Blake2bHmac(const byte * in, size_t in_len, const byte * key, size_t key_len, byte * out, size_t out_len)
Compute the HMAC-BLAKE2b message authentication code of the given input data using the given key.
int wc_InitBlake2s(Blake2s * b2s, word32 digestSz)
This function initializes a Blake2s structure for use with the Blake2 hash function.
int wc_Blake2sUpdate(Blake2s * b2s, const byte * data, word32 sz)
This function updates the Blake2s hash with the given input data. This function should be called after wc_InitBlake2s, and repeated until one is ready for the final hash: wc_Blake2sFinal.
int wc_Blake2sFinal(Blake2s * b2s, byte * final, word32 requestSz)
This function computes the Blake2s hash of the previously supplied input data. The output hash will be of length requestSz, or, if requestSz==0, the digestSz of the b2s structure. This function should be called after wc_InitBlake2s and wc_Blake2sUpdate has been processed for each piece of input data desired.
int wc_Blake2sHmacInit(Blake2s * b2s, const byte * key, size_t key_len)
Initialize an HMAC-BLAKE2s message authentication code computation.
int wc_Blake2sHmacUpdate(Blake2s * b2s, const byte * in, size_t in_len)
Update an HMAC-BLAKE2s message authentication code computation with additional input data.
int wc_Blake2sHmacFinal(Blake2s * b2s, const byte * key, size_t key_len, byte * out, size_t out_len)
Finalize an HMAC-BLAKE2s message authentication code computation.
int wc_Blake2sHmac(const byte * in, size_t in_len, const byte * key, size_t key_len, byte * out, size_t out_len)
This function computes the HMAC-BLAKE2s message authentication code of the given input data using the given key.

Functions Documentation

function wc_InitBlake2b

int wc_InitBlake2b(
    Blake2b * b2b,
    word32 digestSz
)

This function initializes a Blake2b structure for use with the Blake2 hash function.

Parameters:

  • b2b pointer to the Blake2b structure to initialize
  • digestSz length of the blake 2 digest to implement

See: wc_Blake2bUpdate

Return: 0 Returned upon successfully initializing the Blake2b structure and setting the digest size.

Example

Blake2b b2b;
// initialize Blake2b structure with 64 byte digest
wc_InitBlake2b(&b2b, WC_BLAKE2B_DIGEST_SIZE);

function wc_Blake2bUpdate

int wc_Blake2bUpdate(
    Blake2b * b2b,
    const byte * data,
    word32 sz
)

This function updates the Blake2b hash with the given input data. This function should be called after wc_InitBlake2b, and repeated until one is ready for the final hash: wc_Blake2bFinal.

Parameters:

  • b2b pointer to the Blake2b structure to update
  • data pointer to a buffer containing the data to append
  • sz length of the input data to append

See:

Return:

  • 0 Returned upon successfully update the Blake2b structure with the given data
  • -1 Returned if there is a failure while compressing the input data

Example

int ret;
Blake2b b2b;
// initialize Blake2b structure with 64 byte digest
wc_InitBlake2b(&b2b, WC_BLAKE2B_DIGEST_SIZE);

byte plain[] = { // initialize input };

ret = wc_Blake2bUpdate(&b2b, plain, sizeof(plain));
if (ret != 0) {
    // error updating blake2b
}

function wc_Blake2bFinal

int wc_Blake2bFinal(
    Blake2b * b2b,
    byte * final,
    word32 requestSz
)

This function computes the Blake2b hash of the previously supplied input data. The output hash will be of length requestSz, or, if requestSz==0, the digestSz of the b2b structure. This function should be called after wc_InitBlake2b and wc_Blake2bUpdate has been processed for each piece of input data desired.

Parameters:

  • b2b pointer to the Blake2b structure to update
  • final pointer to a buffer in which to store the blake2b hash. Should be of length requestSz
  • requestSz length of the digest to compute. When this is zero, b2b->digestSz will be used instead

See:

Return:

  • 0 Returned upon successfully computing the Blake2b hash
  • -1 Returned if there is a failure while parsing the Blake2b hash

Example

int ret;
Blake2b b2b;
byte hash[WC_BLAKE2B_DIGEST_SIZE];
// initialize Blake2b structure with 64 byte digest
wc_InitBlake2b(&b2b, WC_BLAKE2B_DIGEST_SIZE);
... // call wc_Blake2bUpdate to add data to hash

ret = wc_Blake2bFinal(&b2b, hash, WC_BLAKE2B_DIGEST_SIZE);
if (ret != 0) {
    // error generating blake2b hash
}

function wc_Blake2bHmacInit

int wc_Blake2bHmacInit(
    Blake2b * b2b,
    const byte * key,
    size_t key_len
)

Initialize an HMAC-BLAKE2b message authentication code computation.

Parameters:

  • b2b Blake2b structure to be used for the MAC computation.
  • key pointer to the key
  • key_len length of the key

Return: 0 Returned upon successfully initializing the HMAC-BLAKE2b MAC computation.

Example

Blake2b b2b;
int ret;
byte key[] = {4, 5, 6};
ret = wc_Blake2bHmacInit(&b2b, key);
if (ret != 0) {
    // error generating HMAC-BLAKE2b
}

function wc_Blake2bHmacUpdate

int wc_Blake2bHmacUpdate(
    Blake2b * b2b,
    const byte * in,
    size_t in_len
)

Update an HMAC-BLAKE2b message authentication code computation with additional input data.

Parameters:

  • b2b Blake2b structure to be used for the MAC computation.
  • in pointer to the input data
  • in_len length of the input data

Return: 0 Returned upon successfully updating the HMAC-BLAKE2b MAC computation.

Example

Blake2b b2b;
int ret;
byte key[] = {4, 5, 6};
byte data[] = {1, 2, 3};
ret = wc_Blake2bHmacInit(&b2b, key, sizeof(key));
ret = wc_Blake2bHmacUpdate(&b2b, data, sizeof(data));

function wc_Blake2bHmacFinal

int wc_Blake2bHmacFinal(
    Blake2b * b2b,
    const byte * key,
    size_t key_len,
    byte * out,
    size_t out_len
)

Finalize an HMAC-BLAKE2b message authentication code computation.

Parameters:

  • b2b Blake2b structure to be used for the MAC computation.
  • key pointer to the key
  • key_len length of the key
  • out output buffer to store computed MAC
  • out_len length of output buffer

Return: 0 Returned upon successfully finalizing the HMAC-BLAKE2b MAC computation.

Example

Blake2b b2b;
int ret;
byte key[] = {4, 5, 6};
byte data[] = {1, 2, 3};
byte mac[WC_BLAKE2B_DIGEST_SIZE];
ret = wc_Blake2bHmacInit(&b2b, key, sizeof(key));
ret = wc_Blake2bHmacUpdate(&b2b, data, sizeof(data));
ret = wc_Blake2bHmacFinalize(&b2b, key, sizeof(key), mac, sizezof(mac));

function wc_Blake2bHmac

int wc_Blake2bHmac(
    const byte * in,
    size_t in_len,
    const byte * key,
    size_t key_len,
    byte * out,
    size_t out_len
)

Compute the HMAC-BLAKE2b message authentication code of the given input data using the given key.

Parameters:

  • in pointer to the input data
  • in_len length of the input data
  • key pointer to the key
  • key_len length of the key
  • out output buffer to store computed MAC
  • out_len length of output buffer

Return: 0 Returned upon successfully computing the HMAC-BLAKE2b MAC.

Example

int ret;
byte mac[WC_BLAKE2B_DIGEST_SIZE];
byte data[] = {1, 2, 3};
byte key[] = {4, 5, 6};
ret = wc_Blake2bHmac(data, sizeof(data), key, sizeof(key), mac, sizeof(mac));
if (ret != 0) {
    // error generating HMAC-BLAKE2b
}

function wc_InitBlake2s

int wc_InitBlake2s(
    Blake2s * b2s,
    word32 digestSz
)

This function initializes a Blake2s structure for use with the Blake2 hash function.

Parameters:

  • b2s pointer to the Blake2s structure to initialize
  • digestSz length of the blake 2 digest to implement

See: wc_Blake2sUpdate

Return: 0 Returned upon successfully initializing the Blake2s structure and setting the digest size.

Example

Blake2s b2s;
// initialize Blake2s structure with 32 byte digest
wc_InitBlake2s(&b2s, WC_BLAKE2S_DIGEST_SIZE);

function wc_Blake2sUpdate

int wc_Blake2sUpdate(
    Blake2s * b2s,
    const byte * data,
    word32 sz
)

This function updates the Blake2s hash with the given input data. This function should be called after wc_InitBlake2s, and repeated until one is ready for the final hash: wc_Blake2sFinal.

Parameters:

  • b2s pointer to the Blake2s structure to update
  • data pointer to a buffer containing the data to append
  • sz length of the input data to append

See:

Return:

  • 0 Returned upon successfully update the Blake2s structure with the given data
  • -1 Returned if there is a failure while compressing the input data

Example

int ret;
Blake2s b2s;
// initialize Blake2s structure with 32 byte digest
wc_InitBlake2s(&b2s, WC_BLAKE2S_DIGEST_SIZE);

byte plain[] = { // initialize input };

ret = wc_Blake2sUpdate(&b2s, plain, sizeof(plain));
if (ret != 0) {
    // error updating blake2s
}

function wc_Blake2sFinal

int wc_Blake2sFinal(
    Blake2s * b2s,
    byte * final,
    word32 requestSz
)

This function computes the Blake2s hash of the previously supplied input data. The output hash will be of length requestSz, or, if requestSz==0, the digestSz of the b2s structure. This function should be called after wc_InitBlake2s and wc_Blake2sUpdate has been processed for each piece of input data desired.

Parameters:

  • b2s pointer to the Blake2s structure to update
  • final pointer to a buffer in which to store the blake2s hash. Should be of length requestSz
  • requestSz length of the digest to compute. When this is zero, b2s->digestSz will be used instead

See:

Return:

  • 0 Returned upon successfully computing the Blake2s hash
  • -1 Returned if there is a failure while parsing the Blake2s hash

Example

int ret;
Blake2s b2s;
byte hash[WC_BLAKE2S_DIGEST_SIZE];
// initialize Blake2s structure with 32 byte digest
wc_InitBlake2s(&b2s, WC_BLAKE2S_DIGEST_SIZE);
... // call wc_Blake2sUpdate to add data to hash

ret = wc_Blake2sFinal(&b2s, hash, WC_BLAKE2S_DIGEST_SIZE);
if (ret != 0) {
    // error generating blake2s hash
}

function wc_Blake2sHmacInit

int wc_Blake2sHmacInit(
    Blake2s * b2s,
    const byte * key,
    size_t key_len
)

Initialize an HMAC-BLAKE2s message authentication code computation.

Parameters:

  • b2s Blake2s structure to be used for the MAC computation.
  • key pointer to the key
  • key_len length of the key

Return: 0 Returned upon successfully initializing the HMAC-BLAKE2s MAC computation.

Example

Blake2s b2s;
int ret;
byte key[] = {4, 5, 6};
ret = wc_Blake2sHmacInit(&b2s, key);
if (ret != 0) {
    // error generating HMAC-BLAKE2s
}

function wc_Blake2sHmacUpdate

int wc_Blake2sHmacUpdate(
    Blake2s * b2s,
    const byte * in,
    size_t in_len
)

Update an HMAC-BLAKE2s message authentication code computation with additional input data.

Parameters:

  • b2s Blake2s structure to be used for the MAC computation.
  • in pointer to the input data
  • in_len length of the input data

Return: 0 Returned upon successfully updating the HMAC-BLAKE2s MAC computation.

Example

Blake2s b2s;
int ret;
byte key[] = {4, 5, 6};
byte data[] = {1, 2, 3};
ret = wc_Blake2sHmacInit(&b2s, key, sizeof(key));
ret = wc_Blake2sHmacUpdate(&b2s, data, sizeof(data));

function wc_Blake2sHmacFinal

int wc_Blake2sHmacFinal(
    Blake2s * b2s,
    const byte * key,
    size_t key_len,
    byte * out,
    size_t out_len
)

Finalize an HMAC-BLAKE2s message authentication code computation.

Parameters:

  • b2s Blake2s structure to be used for the MAC computation.
  • key pointer to the key
  • key_len length of the key
  • out output buffer to store computed MAC
  • out_len length of output buffer

Return: 0 Returned upon successfully finalizing the HMAC-BLAKE2s MAC computation.

Example

Blake2s b2s;
int ret;
byte key[] = {4, 5, 6};
byte data[] = {1, 2, 3};
byte mac[WC_BLAKE2S_DIGEST_SIZE];
ret = wc_Blake2sHmacInit(&b2s, key, sizeof(key));
ret = wc_Blake2sHmacUpdate(&b2s, data, sizeof(data));
ret = wc_Blake2sHmacFinalize(&b2s, key, sizeof(key), mac, sizezof(mac));

function wc_Blake2sHmac

int wc_Blake2sHmac(
    const byte * in,
    size_t in_len,
    const byte * key,
    size_t key_len,
    byte * out,
    size_t out_len
)

This function computes the HMAC-BLAKE2s message authentication code of the given input data using the given key.

Parameters:

  • in pointer to the input data
  • in_len length of the input data
  • key pointer to the key
  • key_len length of the key
  • out output buffer to store computed MAC
  • out_len length of output buffer

Return: 0 Returned upon successfully computing the HMAC-BLAKE2s MAC.

Example

int ret;
byte mac[WC_BLAKE2S_DIGEST_SIZE];
byte data[] = {1, 2, 3};
byte key[] = {4, 5, 6};
ret = wc_Blake2sHmac(data, sizeof(data), key, sizeof(key), mac, sizeof(mac));
if (ret != 0) {
    // error generating HMAC-BLAKE2s
}

Source code


int wc_InitBlake2b(Blake2b* b2b, word32 digestSz);

int wc_Blake2bUpdate(Blake2b* b2b, const byte* data, word32 sz);

int wc_Blake2bFinal(Blake2b* b2b, byte* final, word32 requestSz);

int wc_Blake2bHmacInit(Blake2b * b2b,
        const byte * key, size_t key_len);

int wc_Blake2bHmacUpdate(Blake2b * b2b,
        const byte * in, size_t in_len);

int wc_Blake2bHmacFinal(Blake2b * b2b,
        const byte * key, size_t key_len,
        byte * out, size_t out_len);

int wc_Blake2bHmac(const byte * in, size_t in_len,
        const byte * key, size_t key_len,
        byte * out, size_t out_len);


int wc_InitBlake2s(Blake2s* b2s, word32 digestSz);

int wc_Blake2sUpdate(Blake2s* b2s, const byte* data, word32 sz);

int wc_Blake2sFinal(Blake2s* b2s, byte* final, word32 requestSz);

int wc_Blake2sHmacInit(Blake2s * b2s,
        const byte * key, size_t key_len);

int wc_Blake2sHmacUpdate(Blake2s * b2s,
        const byte * in, size_t in_len);

int wc_Blake2sHmacFinal(Blake2s * b2s,
        const byte * key, size_t key_len,
        byte * out, size_t out_len);

int wc_Blake2sHmac(const byte * in, size_t in_len,
        const byte * key, size_t key_len,
        byte * out, size_t out_len);

Updated on 2026-01-26 at 01:19:45 +0000