39 lines
1.1 KiB
C
39 lines
1.1 KiB
C
|
/**
|
||
|
* @cond internal
|
||
|
* @file keccak_internal.h
|
||
|
* @copyright
|
||
|
* Copyright (c) 2016 Cryptography Research, Inc. \n
|
||
|
* Released under the MIT License. See LICENSE.txt for license information.
|
||
|
* @author Mike Hamburg
|
||
|
* @brief Keccak internal interfaces. Will be used by STROBE once reintegrated.
|
||
|
*/
|
||
|
#ifndef __DECAF_KECCAK_INTERNAL_H__
|
||
|
#define __DECAF_KECCAK_INTERNAL_H__ 1
|
||
|
|
||
|
#include <stdint.h>
|
||
|
|
||
|
/* The internal, non-opaque definition of the decaf_sponge struct. */
|
||
|
typedef union {
|
||
|
uint64_t w[25]; uint8_t b[25*8];
|
||
|
} kdomain_t[1];
|
||
|
|
||
|
typedef struct decaf_kparams_s {
|
||
|
uint8_t position, flags, rate, start_round, pad, rate_pad, max_out, remaining;
|
||
|
} decaf_kparams_s, decaf_kparams_t[1];
|
||
|
|
||
|
typedef struct decaf_keccak_sponge_s {
|
||
|
kdomain_t state;
|
||
|
decaf_kparams_t params;
|
||
|
} decaf_keccak_sponge_s, decaf_keccak_sponge_t[1];
|
||
|
|
||
|
#define INTERNAL_SPONGE_STRUCT 1
|
||
|
|
||
|
void __attribute__((noinline)) keccakf(kdomain_t state, uint8_t start_round);
|
||
|
|
||
|
static inline void dokeccak (decaf_keccak_sponge_t decaf_sponge) {
|
||
|
keccakf(decaf_sponge->state, decaf_sponge->params->start_round);
|
||
|
decaf_sponge->params->position = 0;
|
||
|
}
|
||
|
|
||
|
#endif /* __DECAF_KECCAK_INTERNAL_H__ */
|