#include <sstream>#include <iomanip>#include <string.h>

Go to the source code of this file.
| Namespaces | |
| namespace | icl_core | 
| namespace | icl_core::crypt | 
| Contains cryptographic functions. | |
| Defines | |
| #define | bswaparr(buf, T, i) | 
| #define | bswaparr64(buf, T, i) | 
| #define | Ch(x, y, z) ((z) ^ ((x) & ((y) ^ (z)))) | 
| FIPS PUB 180-3 "Ch" operation. | |
| #define | CLASSM Sha2Impl<T, t_h0, t_h1, t_h2, t_h3, t_h4, t_h5, t_h6, t_h7, t_len> | 
| #define | CLASSM Sha2Impl<uint64_t, t_h0, t_h1, t_h2, t_h3, t_h4, t_h5, t_h6, t_h7, t_len> | 
| #define | Maj(x, y, z) (((x) & (y)) | ((z) & ((x) ^ (y)))) | 
| FIPS PUB 180-3 "Maj" operation. | |
| #define | Rotr(x, n, nbits) (((x) >> (n)) | ((x) << ((nbits)-(n)))) | 
| Right rotation. | |
| #define | round_0_15(a, b, c, d, e, f, g, h, K, W, t) | 
| #define | round_0_15(a, b, c, d, e, f, g, h, K, W, t) | 
| #define | round_16_63(a, b, c, d, e, f, g, h, K, W, t) | 
| #define | round_16_79(a, b, c, d, e, f, g, h, K, W, t) | 
| #define | Shr(x, n) ((x) >> (n)) | 
| Right shift. | |
| #define | Sigma0_256(x) (Rotr((x), 2, 32) ^ Rotr((x), 13, 32) ^ Rotr((x), 22, 32)) | 
| #define | sigma0_256(x) (Rotr((x), 7, 32) ^ Rotr((x), 18, 32) ^ Shr((x), 3)) | 
| #define | Sigma0_512(x) (Rotr((x), 28, 64) ^ Rotr((x), 34, 64) ^ Rotr((x), 39, 64)) | 
| #define | sigma0_512(x) (Rotr((x), 1, 64) ^ Rotr((x), 8, 64) ^ Shr((x), 7)) | 
| #define | Sigma1_256(x) (Rotr((x), 6, 32) ^ Rotr((x), 11, 32) ^ Rotr((x), 25, 32)) | 
| #define | sigma1_256(x) (Rotr((x), 17, 32) ^ Rotr((x), 19, 32) ^ Shr((x), 10)) | 
| #define | Sigma1_512(x) (Rotr((x), 14, 64) ^ Rotr((x), 18, 64) ^ Rotr((x), 41, 64)) | 
| #define | sigma1_512(x) (Rotr((x), 19, 64) ^ Rotr((x), 61, 64) ^ Shr((x), 6)) | 
| #define | TEMPLATEM template <typename T, T t_h0, T t_h1, T t_h2, T t_h3, T t_h4, T t_h5, T t_h6, T t_h7, size_t t_len> | 
| #define | TEMPLATEM template <uint64_t t_h0, uint64_t t_h1, uint64_t t_h2, uint64_t t_h3, uint64_t t_h4, uint64_t t_h5, uint64_t t_h6, uint64_t t_h7, size_t t_len> | 
| #define | wv(i) v##i | 
| Flexible variable mapping to avoid unnecessary copying. | |
| Variables | |
| static const uint32_t | icl_core::crypt::k256 [64] | 
| static const uint64_t | icl_core::crypt::k512 [80] | 
Definition in file Sha2Impl.hpp.
((static_cast<T>(buf[(i)*4+3]) ) | \ (static_cast<T>(buf[(i)*4+2]) << 8) | \ (static_cast<T>(buf[(i)*4+1]) << 16) | \ (static_cast<T>(buf[(i)*4+0]) << 24))
Definition at line 68 of file Sha2Impl.hpp.
| #define bswaparr64 | ( | buf, | |
| T, | |||
| i | |||
| ) | 
((static_cast<T>(buf[(i)*8+7]) ) | \ (static_cast<T>(buf[(i)*8+6]) << 8) | \ (static_cast<T>(buf[(i)*8+5]) << 16) | \ (static_cast<T>(buf[(i)*8+4]) << 24) | \ (static_cast<T>(buf[(i)*8+3]) << 32) | \ (static_cast<T>(buf[(i)*8+2]) << 40) | \ (static_cast<T>(buf[(i)*8+1]) << 48) | \ (static_cast<T>(buf[(i)*8+0]) << 56))
Definition at line 73 of file Sha2Impl.hpp.
| #define Ch | ( | x, | |
| y, | |||
| z | |||
| ) | ((z) ^ ((x) & ((y) ^ (z)))) | 
FIPS PUB 180-3 "Ch" operation.
Definition at line 83 of file Sha2Impl.hpp.
| #define CLASSM Sha2Impl<T, t_h0, t_h1, t_h2, t_h3, t_h4, t_h5, t_h6, t_h7, t_len> | 
Definition at line 266 of file Sha2Impl.hpp.
Definition at line 266 of file Sha2Impl.hpp.
| #define Maj | ( | x, | |
| y, | |||
| z | |||
| ) | (((x) & (y)) | ((z) & ((x) ^ (y)))) | 
FIPS PUB 180-3 "Maj" operation.
Definition at line 85 of file Sha2Impl.hpp.
| #define Rotr | ( | x, | |
| n, | |||
| nbits | |||
| ) | (((x) >> (n)) | ((x) << ((nbits)-(n)))) | 
Right rotation.
Definition at line 87 of file Sha2Impl.hpp.
| #define round_0_15 | ( | a, | |
| b, | |||
| c, | |||
| d, | |||
| e, | |||
| f, | |||
| g, | |||
| h, | |||
| K, | |||
| W, | |||
| t | |||
| ) | 
T1 = wv(h) + Sigma1_256(wv(e)) + Ch(wv(e), wv(f), wv(g)) + K[t] + W[t&15]; \ T2 = Sigma0_256(wv(a)) + Maj(wv(a), wv(b), wv(c)); \ wv(d) += T1; \ wv(h) = T1 + T2;
Definition at line 305 of file Sha2Impl.hpp.
| #define round_0_15 | ( | a, | |
| b, | |||
| c, | |||
| d, | |||
| e, | |||
| f, | |||
| g, | |||
| h, | |||
| K, | |||
| W, | |||
| t | |||
| ) | 
T1 = wv(h) + Sigma1_512(wv(e)) + Ch(wv(e), wv(f), wv(g)) + K[t] + W[t&15]; \ T2 = Sigma0_512(wv(a)) + Maj(wv(a), wv(b), wv(c)); \ wv(d) += T1; \ wv(h) = T1 + T2;
Definition at line 305 of file Sha2Impl.hpp.
| #define round_16_63 | ( | a, | |
| b, | |||
| c, | |||
| d, | |||
| e, | |||
| f, | |||
| g, | |||
| h, | |||
| K, | |||
| W, | |||
| t | |||
| ) | 
W[(t)&15] += sigma1_256(W[(t+14)&15]) + W[(t+9)&15] + sigma0_256(W[(t+1)&15]); \ T1 = wv(h) + Sigma1_256(wv(e)) + Ch(wv(e), wv(f), wv(g)) + K[t] + W[t&15]; \ T2 = Sigma0_256(wv(a)) + Maj(wv(a), wv(b), wv(c)); \ wv(d) += T1; \ wv(h) = T1 + T2;
Definition at line 119 of file Sha2Impl.hpp.
| #define round_16_79 | ( | a, | |
| b, | |||
| c, | |||
| d, | |||
| e, | |||
| f, | |||
| g, | |||
| h, | |||
| K, | |||
| W, | |||
| t | |||
| ) | 
W[(t)&15] += sigma1_512(W[(t+14)&15]) + W[(t+9)&15] + sigma0_512(W[(t+1)&15]); \ T1 = wv(h) + Sigma1_512(wv(e)) + Ch(wv(e), wv(f), wv(g)) + K[t] + W[t&15]; \ T2 = Sigma0_512(wv(a)) + Maj(wv(a), wv(b), wv(c)); \ wv(d) += T1; \ wv(h) = T1 + T2;
Definition at line 311 of file Sha2Impl.hpp.
| #define Shr | ( | x, | |
| n | |||
| ) | ((x) >> (n)) | 
Right shift.
Definition at line 89 of file Sha2Impl.hpp.
| #define Sigma0_256 | ( | x | ) | (Rotr((x), 2, 32) ^ Rotr((x), 13, 32) ^ Rotr((x), 22, 32)) | 
Definition at line 93 of file Sha2Impl.hpp.
| #define sigma0_256 | ( | x | ) | (Rotr((x), 7, 32) ^ Rotr((x), 18, 32) ^ Shr((x), 3)) | 
Definition at line 95 of file Sha2Impl.hpp.
| #define Sigma0_512 | ( | x | ) | (Rotr((x), 28, 64) ^ Rotr((x), 34, 64) ^ Rotr((x), 39, 64)) | 
Definition at line 268 of file Sha2Impl.hpp.
| #define sigma0_512 | ( | x | ) | (Rotr((x), 1, 64) ^ Rotr((x), 8, 64) ^ Shr((x), 7)) | 
Definition at line 270 of file Sha2Impl.hpp.
| #define Sigma1_256 | ( | x | ) | (Rotr((x), 6, 32) ^ Rotr((x), 11, 32) ^ Rotr((x), 25, 32)) | 
Definition at line 94 of file Sha2Impl.hpp.
| #define sigma1_256 | ( | x | ) | (Rotr((x), 17, 32) ^ Rotr((x), 19, 32) ^ Shr((x), 10)) | 
Definition at line 96 of file Sha2Impl.hpp.
| #define Sigma1_512 | ( | x | ) | (Rotr((x), 14, 64) ^ Rotr((x), 18, 64) ^ Rotr((x), 41, 64)) | 
Definition at line 269 of file Sha2Impl.hpp.
| #define sigma1_512 | ( | x | ) | (Rotr((x), 19, 64) ^ Rotr((x), 61, 64) ^ Shr((x), 6)) | 
Definition at line 271 of file Sha2Impl.hpp.
| #define TEMPLATEM template <typename T, T t_h0, T t_h1, T t_h2, T t_h3, T t_h4, T t_h5, T t_h6, T t_h7, size_t t_len> | 
Definition at line 265 of file Sha2Impl.hpp.
| #define TEMPLATEM template <uint64_t t_h0, uint64_t t_h1, uint64_t t_h2, uint64_t t_h3, uint64_t t_h4, uint64_t t_h5, uint64_t t_h6, uint64_t t_h7, size_t t_len> | 
Definition at line 265 of file Sha2Impl.hpp.
Flexible variable mapping to avoid unnecessary copying.
Definition at line 91 of file Sha2Impl.hpp.