/src/botan/src/lib/hash/sha3/sha3_bmi2/sha3_bmi2.cpp
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * SHA-3 |
3 | | * (C) 2019 Jack Lloyd |
4 | | * |
5 | | * Botan is released under the Simplified BSD License (see license.txt) |
6 | | */ |
7 | | |
8 | | #include <botan/internal/sha3.h> |
9 | | |
10 | | #include <botan/internal/sha3_round.h> |
11 | | |
12 | | namespace Botan { |
13 | | |
14 | 0 | void SHA_3::permute_bmi2(uint64_t A[25]) { |
15 | 0 | static const uint64_t RC[24] = {0x0000000000000001, 0x0000000000008082, 0x800000000000808A, 0x8000000080008000, |
16 | 0 | 0x000000000000808B, 0x0000000080000001, 0x8000000080008081, 0x8000000000008009, |
17 | 0 | 0x000000000000008A, 0x0000000000000088, 0x0000000080008009, 0x000000008000000A, |
18 | 0 | 0x000000008000808B, 0x800000000000008B, 0x8000000000008089, 0x8000000000008003, |
19 | 0 | 0x8000000000008002, 0x8000000000000080, 0x000000000000800A, 0x800000008000000A, |
20 | 0 | 0x8000000080008081, 0x8000000000008080, 0x0000000080000001, 0x8000000080008008}; |
21 | |
|
22 | 0 | uint64_t T[25]; |
23 | |
|
24 | 0 | for(size_t i = 0; i != 24; i += 2) { |
25 | 0 | SHA3_round(T, A, RC[i + 0]); |
26 | 0 | SHA3_round(A, T, RC[i + 1]); |
27 | 0 | } |
28 | 0 | } |
29 | | |
30 | | } // namespace Botan |