Scroll to navigation

LIBKECCAK_SPEC_CHECK(3) Library Functions Manual LIBKECCAK_SPEC_CHECK(3)

NAME

libkeccak_spec_check - Validate hashing parameters

SYNOPSIS

#include <libkeccak.h>
int libkeccak_spec_check(const struct libkeccak_spec *spec);

Link with -lkeccak.

DESCRIPTION

The libkeccak_spec_check() function validates the parameters of *spec, so that unusable configurations can be detected. It is recommended to call this function after calling libkeccak_spec_sha3(3), libkeccak_spec_cshake(3), libkeccak_spec_rawshake(3), libkeccak_spec_shake(3), or, especially, after settings the parameters manually for Keccak hashing.

struct libkeccak_spec {
	long int bitrate;  /* bitrate (in bits) */
	long int capacity; /* capacity (in bits) */
	long int output;   /* output size (in bits) */
};

RETURN VALUES

The libkeccak_spec_check() function returns 0 if the settings are usable. Otherwise it will return one of the following constants.

The specified bitrate was non-positive.
The specified bitrate was not equivalent to 0 modulus 8, that is, it was not in whole bytes.
The specified capacity was non-positive.
The specified capacity was not equivalent to 0 modulus 8, that is, it was not in whole bytes.
The specified output size was non-positive.
The state size, that is the sum of the bitrate and the capacity, exceeded the supported limit (currently at 1600 bits.)
The state size, that is the sum of the bitrate and the capacity, in bits, was not equivalent to 0 modulus 25. Meaning the state size cannot cover all lanes equivalently.
The word size, that is the state size divided by 25, is not a power of 2.
The word size, that is the state size divided by 25, is not quivalent to 0 modulus 8, that is, it is not in whole bytes.

Note that there may be more than one error. Only the first detected is returned.

ERRORS

The libkeccak_spec_check() function cannot fail.

SEE ALSO

libkeccak_spec_sha3(3), libkeccak_spec_cshake(3), libkeccak_spec_rawshake(3), libkeccak_spec_shake(3), libkeccak_generalised_spec_initialise(3), libkeccak_state_initialise(3), libkeccak_hmac_initialise(3)

LIBKECCAK