Skip to content

File syn_blake2s.c

FileList > crypto > syn_blake2s.c

Go to the source code of this file

BLAKE2s implementation — RFC 7693.

  • #include "../util/syn_pack.h"
  • #include "syn_blake2s.h"
  • #include <string.h>

Public Static Attributes

Type Name
const uint32_t blake2s_iv = /* multi line expression */
BLAKE2s initialization vector.
const uint8_t sigma = /* multi line expression */
BLAKE2s message word permutation schedule.

Public Functions

Type Name
void syn_blake2s_final (SYN_BLAKE2s * ctx, uint8_t * out)
Finalize and produce the digest.
void syn_blake2s_init (SYN_BLAKE2s * ctx, size_t outlen)
Initialize BLAKE2s for unkeyed hashing.
void syn_blake2s_init_keyed (SYN_BLAKE2s * ctx, const void * key, size_t keylen, size_t outlen)
Initialize BLAKE2s for keyed hashing (MAC mode).
void syn_blake2s_update (SYN_BLAKE2s * ctx, const void * data, size_t len)
Feed data into the hash.

Public Static Functions

Type Name
void blake2s_compress (SYN_BLAKE2s * ctx, const uint8_t block, int is_last)
BLAKE2s compression (F). Mixes one 64-byte block into state.
void blake2s_increment_counter (SYN_BLAKE2s * ctx, uint32_t inc)
Increment byte counter.
uint32_t load32_le (const uint8_t * p)
uint32_t rotr32 (uint32_t x, unsigned n)
32-bit right rotation.
void store32_le (uint8_t * p, uint32_t v)

Macros

Type Name
define G (v, a, b, c, d, x, y) /* multi line expression */
BLAKE2s G mixing function.

Public Static Attributes Documentation

variable blake2s_iv

BLAKE2s initialization vector.

const uint32_t blake2s_iv[8];


variable sigma

BLAKE2s message word permutation schedule.

const uint8_t sigma[10][16];


Public Functions Documentation

function syn_blake2s_final

Finalize and produce the digest.

void syn_blake2s_final (
    SYN_BLAKE2s * ctx,
    uint8_t * out
) 

After calling this, the context must be re-initialized before reuse.

Parameters:

  • ctx BLAKE2s context.
  • out Output buffer (must be at least ctx->outlen bytes).

function syn_blake2s_init

Initialize BLAKE2s for unkeyed hashing.

void syn_blake2s_init (
    SYN_BLAKE2s * ctx,
    size_t outlen
) 

Parameters:

  • ctx Context to initialize.
  • outlen Desired digest length (1–32).

function syn_blake2s_init_keyed

Initialize BLAKE2s for keyed hashing (MAC mode).

void syn_blake2s_init_keyed (
    SYN_BLAKE2s * ctx,
    const void * key,
    size_t keylen,
    size_t outlen
) 

Parameters:

  • ctx Context to initialize.
  • key Secret key.
  • keylen Key length (1–32).
  • outlen Desired digest length (1–32).

function syn_blake2s_update

Feed data into the hash.

void syn_blake2s_update (
    SYN_BLAKE2s * ctx,
    const void * data,
    size_t len
) 

Parameters:

  • ctx BLAKE2s context.
  • data Data to hash.
  • len Length in bytes.

Public Static Functions Documentation

function blake2s_compress

BLAKE2s compression (F). Mixes one 64-byte block into state.

static void blake2s_compress (
    SYN_BLAKE2s * ctx,
    const uint8_t block,
    int is_last
) 

Parameters:

  • ctx Hash context.
  • block 64-byte input block.
  • is_last Flag indicating the last block.

function blake2s_increment_counter

Increment byte counter.

static inline void blake2s_increment_counter (
    SYN_BLAKE2s * ctx,
    uint32_t inc
) 

Parameters:

  • ctx Hash context.
  • inc Increment value in bytes.

function load32_le

static inline uint32_t load32_le (
    const uint8_t * p
) 

function rotr32

32-bit right rotation.

static inline uint32_t rotr32 (
    uint32_t x,
    unsigned n
) 

Parameters:

  • x Value to rotate.
  • n Bits to shift.

Returns:

Rotated value.


function store32_le

static inline void store32_le (
    uint8_t * p,
    uint32_t v
) 

Macro Definition Documentation

define G

BLAKE2s G mixing function.

#define G (
    v,
    a,
    b,
    c,
    d,
    x,
    y
) `/* multi line expression */`

Parameters:

  • v Working vector (16 words).
  • a Vector indices.
  • x Message words.


The documentation for this class was generated from the following file src/syntropic/crypto/syn_blake2s.c