File tree Expand file tree Collapse file tree 5 files changed +13
-32
lines changed
Expand file tree Collapse file tree 5 files changed +13
-32
lines changed Original file line number Diff line number Diff line change @@ -308,6 +308,15 @@ template <typename Config> struct keccak_hasher: basic_keccak_hasher<Config> {
308308 using super::final ;
309309};
310310
311+ template <size_t DigestBits>
312+ struct sha_config {
313+ static constexpr size_t digest_length_bit = DigestBits;
314+ static constexpr size_t capacity_bit = DigestBits * 2u ;
315+ static constexpr size_t rate_bit = 1600u - capacity_bit;
316+
317+ static constexpr auto suffix = keccak_suffix(2 , 0b0000'0010u ); // in reverse
318+ };
319+
311320} // namespace cthash
312321
313322#endif
Original file line number Diff line number Diff line change 55
66namespace cthash {
77
8- struct sha3_224_config {
9- static constexpr size_t digest_length_bit = 224u ;
10- static constexpr size_t capacity_bit = digest_length_bit * 2u ;
11- static constexpr size_t rate_bit = 1600u - capacity_bit;
12-
13- static constexpr auto suffix = keccak_suffix(2 , 0b0000'0010u ); // in reverse
14- };
15-
8+ using sha3_224_config = sha_config<224u >;
169static_assert ((sha3_224_config::capacity_bit + sha3_224_config::rate_bit) == 1600u );
1710
1811using sha3_224 = cthash::keccak_hasher<sha3_224_config>;
Original file line number Diff line number Diff line change 55
66namespace cthash {
77
8- struct sha3_256_config {
9- static constexpr size_t digest_length_bit = 256u ;
10- static constexpr size_t capacity_bit = digest_length_bit * 2u ;
11- static constexpr size_t rate_bit = 1600u - capacity_bit;
12-
13- static constexpr auto suffix = keccak_suffix(2 , 0b0000'0010u ); // in reverse
14- };
15-
8+ using sha3_256_config = sha_config<256u >;
169static_assert ((sha3_256_config::capacity_bit + sha3_256_config::rate_bit) == 1600u );
1710
1811using sha3_256 = cthash::keccak_hasher<sha3_256_config>;
Original file line number Diff line number Diff line change 55
66namespace cthash {
77
8- struct sha3_384_config {
9- static constexpr size_t digest_length_bit = 384u ;
10- static constexpr size_t capacity_bit = digest_length_bit * 2u ;
11- static constexpr size_t rate_bit = 1600u - capacity_bit;
12-
13- static constexpr auto suffix = keccak_suffix(2 , 0b0000'0010u ); // in reverse
14- };
15-
8+ using sha3_384_config = sha_config<384u >;
169static_assert ((sha3_384_config::capacity_bit + sha3_384_config::rate_bit) == 1600u );
1710
1811using sha3_384 = cthash::keccak_hasher<sha3_384_config>;
Original file line number Diff line number Diff line change 55
66namespace cthash {
77
8- struct sha3_512_config {
9- static constexpr size_t digest_length_bit = 512u ;
10- static constexpr size_t capacity_bit = digest_length_bit * 2u ;
11- static constexpr size_t rate_bit = 1600u - capacity_bit;
12-
13- static constexpr auto suffix = keccak_suffix(2 , 0b0000'0010u ); // in reverse
14- };
15-
8+ using sha3_512_config = sha_config<512u >;
169static_assert ((sha3_512_config::capacity_bit + sha3_512_config::rate_bit) == 1600u );
1710
1811using sha3_512 = cthash::keccak_hasher<sha3_512_config>;
You can’t perform that action at this time.
0 commit comments