Electroneum
keccak.h
Go to the documentation of this file.
1 // keccak.h
2 // 19-Nov-11 Markku-Juhani O. Saarinen <mjos@iki.fi>
3 
4 #ifndef KECCAK_H
5 #define KECCAK_H
6 
7 #include <stdint.h>
8 #include <string.h>
9 
10 #ifndef KECCAK_ROUNDS
11 #define KECCAK_ROUNDS 24
12 #endif
13 
14 #ifndef ROTL64
15 #define ROTL64(x, y) (((x) << (y)) | ((x) >> (64 - (y))))
16 #endif
17 
18 // SHA3 Algorithm context.
19 typedef struct KECCAK_CTX
20 {
21  // 1600 bits algorithm hashing state
23  // 1088-bit buffer for leftovers, block size = 136 B for 256-bit keccak
25  // count of bytes in the message[] buffer
26  size_t rest;
27 } KECCAK_CTX;
28 
29 // compute a keccak hash (md) of given byte length from "in"
30 void keccak(const uint8_t *in, size_t inlen, uint8_t *md, int mdlen);
31 
32 // update the state
33 void keccakf(uint64_t st[25], int norounds);
34 
35 void keccak1600(const uint8_t *in, size_t inlen, uint8_t *md);
36 
37 void keccak_init(KECCAK_CTX * ctx);
38 void keccak_update(KECCAK_CTX * ctx, const uint8_t *in, size_t inlen);
39 void keccak_finish(KECCAK_CTX * ctx, uint8_t *md);
40 #endif
uint64_t hash[25]
Definition: keccak.h:22
void keccak_finish(KECCAK_CTX *ctx, uint8_t *md)
unsigned char uint8_t
Definition: stdint.h:124
unsigned __int64 uint64_t
Definition: stdint.h:136
void keccak_init(KECCAK_CTX *ctx)
void keccakf(uint64_t st[25], int norounds)
uint64_t message[17]
Definition: keccak.h:24
void keccak1600(const uint8_t *in, size_t inlen, uint8_t *md)
void keccak_update(KECCAK_CTX *ctx, const uint8_t *in, size_t inlen)
void keccak(const uint8_t *in, size_t inlen, uint8_t *md, int mdlen)
struct KECCAK_CTX KECCAK_CTX
size_t rest
Definition: keccak.h:26