Botan  2.19.1
Crypto and TLS for C++11
sha3_bmi2.cpp
Go to the documentation of this file.
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/sha3.h>
9 #include <botan/internal/sha3_round.h>
10 
11 namespace Botan {
12 
13 void SHA_3::permute_bmi2(uint64_t A[25])
14  {
15  static const uint64_t RC[24] = {
16  0x0000000000000001, 0x0000000000008082, 0x800000000000808A,
17  0x8000000080008000, 0x000000000000808B, 0x0000000080000001,
18  0x8000000080008081, 0x8000000000008009, 0x000000000000008A,
19  0x0000000000000088, 0x0000000080008009, 0x000000008000000A,
20  0x000000008000808B, 0x800000000000008B, 0x8000000000008089,
21  0x8000000000008003, 0x8000000000008002, 0x8000000000000080,
22  0x000000000000800A, 0x800000008000000A, 0x8000000080008081,
23  0x8000000000008080, 0x0000000080000001, 0x8000000080008008
24  };
25 
26  uint64_t T[25];
27 
28  for(size_t i = 0; i != 24; i += 2)
29  {
30  SHA3_round(T, A, RC[i+0]);
31  SHA3_round(A, T, RC[i+1]);
32  }
33  }
34 
35 }
void BOTAN_FUNC_ISA("avx2") SHACAL2 SIMD_8x32 A
Definition: alg_id.cpp:13
fe T
Definition: ge.cpp:37
void SHA3_round(uint64_t T[25], const uint64_t A[25], uint64_t RC)
Definition: sha3_round.h:53