Ring Daemon 16.0.0
Loading...
Searching...
No Matches
SHA3.cpp File Reference
Include dependency graph for SHA3.cpp:

Go to the source code of this file.

Namespaces

namespace  dev
 
namespace  dev::keccak
 

Macros

#define _(S)
 
#define decsha3(bits)   int sha3_##bits(uint8_t*, size_t, const uint8_t*, size_t);
 
#define decshake(bits)   int shake##bits(uint8_t*, size_t, const uint8_t*, size_t);
 libkeccak-tiny
 
#define defsha3(bits)
 
#define defshake(bits)
 
#define foldP(I, L, F)
 
#define FOR(i, ST, L, S)   _(for (size_t i = 0; i < L; i += ST) { S; })
 
#define FOR5(v, s, e)
 
#define mkapply_ds(NAME, S)    static inline void NAME(uint8_t* dst, const uint8_t* src, size_t len) { FOR(i, 1, len, S); }
 
#define mkapply_sd(NAME, S)    static inline void NAME(const uint8_t* src, uint8_t* dst, size_t len) { FOR(i, 1, len, S); }
 
#define P   keccakf
 
#define Plen   200
 
#define REPEAT24(e)   REPEAT6(e e e e)
 
#define REPEAT5(e)   e e e e e
 
#define REPEAT6(e)   e e e e e e
 
#define rol(x, s)   (((x) << s) | ((x) >> (64 - s)))
 

Functions

 dev::keccak::decshake (128) decshake(256) decsha3(224) decsha3(256) decsha3(384) decsha3(512) static const uint8_t rho[24]
 
static void dev::keccak::keccakf (void *state)
 
 dev::keccak::mkapply_ds (xorin, dst[i] ^=src[i]) mkapply_sd(setout
 
bool dev::sha3 (bytesConstRef _input, bytesRef o_output)
 Calculate SHA3-256 hash of the given input and load it into the given output.
 

Variables

h256 dev::EmptySHA3 = sha3(bytesConstRef())
 
static const uint8_t dev::keccak::pi [24]
 
static const uint64_t dev::keccak::RC [24]
 

Detailed Description

Author
Gav Wood i@gav.nosp@m.wood.nosp@m..com
Date
2014

Definition in file SHA3.cpp.

Macro Definition Documentation

◆ _

#define _ (   S)
Value:
do { \
S \
} while (0)

Definition at line 123 of file SHA3.cpp.

◆ decsha3

#define decsha3 (   bits)    int sha3_##bits(uint8_t*, size_t, const uint8_t*, size_t);

Definition at line 47 of file SHA3.cpp.

◆ decshake

#define decshake (   bits)    int shake##bits(uint8_t*, size_t, const uint8_t*, size_t);

libkeccak-tiny

A single-file implementation of SHA-3 and SHAKE.

Implementor: David Leon Gil License: CC0, attribution kindly requested. Blame taken too, but not liability.

Definition at line 45 of file SHA3.cpp.

◆ defsha3

#define defsha3 (   bits)
Value:
int sha3_##bits(uint8_t* out, size_t outlen, const uint8_t* in, size_t inlen) \
{ \
if (outlen > (bits / 8)) { \
return -1; \
} \
return hash(out, outlen, in, inlen, 200 - (bits / 4), 0x01); \
}

◆ defshake

#define defshake (   bits)
Value:
int shake##bits(uint8_t* out, size_t outlen, const uint8_t* in, size_t inlen) \
{ \
return hash(out, outlen, in, inlen, 200 - (bits / 4), 0x1f); \
}

◆ foldP

#define foldP (   I,
  L,
 
)
Value:
while (L >= rate) { \
F(a, I, rate); \
P(a); \
I += rate; \
L -= rate; \
}

◆ FOR

#define FOR (   i,
  ST,
  L,
 
)    _(for (size_t i = 0; i < L; i += ST) { S; })

Definition at line 127 of file SHA3.cpp.

◆ FOR5

#define FOR5 (   v,
  s,
 
)
Value:
v = 0; \
REPEAT5(e; v += s;)

Definition at line 88 of file SHA3.cpp.

◆ mkapply_ds

#define mkapply_ds (   NAME,
 
)     static inline void NAME(uint8_t* dst, const uint8_t* src, size_t len) { FOR(i, 1, len, S); }

Definition at line 128 of file SHA3.cpp.

◆ mkapply_sd

#define mkapply_sd (   NAME,
 
)     static inline void NAME(const uint8_t* src, uint8_t* dst, size_t len) { FOR(i, 1, len, S); }

Definition at line 130 of file SHA3.cpp.

◆ P

#define P   keccakf

◆ Plen

#define Plen   200

◆ REPEAT24

#define REPEAT24 (   e)    REPEAT6(e e e e)

Definition at line 86 of file SHA3.cpp.

◆ REPEAT5

#define REPEAT5 (   e)    e e e e e

Definition at line 87 of file SHA3.cpp.

◆ REPEAT6

#define REPEAT6 (   e)    e e e e e e

Definition at line 85 of file SHA3.cpp.

◆ rol

#define rol (   x,
 
)    (((x) << s) | ((x) >> (64 - s)))

Definition at line 84 of file SHA3.cpp.