51 broke -E logic completely, rewise it
[tfcrypt.git] / skein.h
1 #ifndef _THREEFISH_SKEIN_DEFINITIONS_HEADER
2 #define _THREEFISH_SKEIN_DEFINITIONS_HEADER
3
4 #include "tfdef.h"
5
6 #define SKEIN_VERSION 1
7 #define SKEIN_ID 0x33414853
8
9 #define SKEIN_BLOCK_CFG ((TF_UNIT_TYPE)4 << 56)
10 #define SKEIN_BLOCK_MSG ((TF_UNIT_TYPE)48 << 56)
11 #define SKEIN_BLOCK_OUT ((TF_UNIT_TYPE)63 << 56)
12 #define SKEIN_FLAG_FIRST ((TF_UNIT_TYPE)1 << 62)
13 #define SKEIN_FLAG_LAST ((TF_UNIT_TYPE)1 << 63)
14
15 #define SKEIN_DIGEST_SIZE TF_BLOCK_SIZE
16
17 struct skein {
18         TF_UNIT_TYPE key[TF_NR_KEY_UNITS];
19         TF_BYTE_TYPE carry_block[TF_BLOCK_SIZE];
20         size_t carry_bytes;
21         size_t bits;
22 };
23
24 void skein_init_key(struct skein *sk, const void *ukey, size_t bits);
25 void skein_init(struct skein *sk, size_t bits);
26 void skein_update(struct skein *sk, const void *msg, size_t msgsz);
27 void skein_final(void *result, struct skein *sk);
28
29 #endif