3 struct libkeccak_spec
{
7 struct libkeccak_generalised_spec
{
13 int __attribute__((noipa
))
14 libkeccak_degeneralise_spec(struct libkeccak_generalised_spec
*restrict spec
,
15 struct libkeccak_spec
*restrict output_spec
)
17 long int state_size
, word_size
, bitrate
, output
;
18 const int have_state_size
= spec
->state_size
!= (-65536L);
19 const int have_word_size
= spec
->word_size
!= (-65536L);
20 const int have_bitrate
= spec
->bitrate
!= (-65536L);
24 state_size
= spec
->state_size
;
27 if (state_size
> 1600)
33 word_size
= spec
->word_size
;
38 if (have_state_size
&& state_size
!= word_size
* 25)
40 else if (!have_state_size
) {
42 state_size
= word_size
* 25;
47 bitrate
= spec
->bitrate
;
51 state_size
= (have_state_size
? state_size
: (1600L));
52 output
= ((state_size
<< 5) / 100L + 7L) & ~0x07L
;
53 bitrate
= output
<< 1;
56 output_spec
->bitrate
= bitrate
;
63 struct libkeccak_generalised_spec gspec
;
64 struct libkeccak_spec spec
;
66 gspec
.bitrate
= -65536;
67 gspec
.state_size
= -65536;
68 gspec
.word_size
= -65536;
69 if (libkeccak_degeneralise_spec(&gspec
, &spec
))
71 if (spec
.bitrate
!= 1024)