#include <string.h>
#include "attributes.h"
#include "avutil.h"
#include "bswap.h"
#include "sha512.h"
#include "intreadwrite.h"
#include "mem.h"
Go to the source code of this file.
|
#define | ror(value, bits) (((value) >> (bits)) | ((value) << (64 - (bits)))) |
|
#define | Ch(x, y, z) (((x) & ((y) ^ (z))) ^ (z)) |
|
#define | Maj(z, y, x) ((((x) | (y)) & (z)) | ((x) & (y))) |
|
#define | Sigma0_512(x) (ror((x), 28) ^ ror((x), 34) ^ ror((x), 39)) |
|
#define | Sigma1_512(x) (ror((x), 14) ^ ror((x), 18) ^ ror((x), 41)) |
|
#define | sigma0_512(x) (ror((x), 1) ^ ror((x), 8) ^ ((x) >> 7)) |
|
#define | sigma1_512(x) (ror((x), 19) ^ ror((x), 61) ^ ((x) >> 6)) |
|
#define | blk0(i) (block[i] = AV_RB64(buffer + 8 * (i))) |
|
#define | blk(i) |
|
#define | ROUND512(a, b, c, d, e, f, g, h) |
|
#define | ROUND512_0_TO_15(a, b, c, d, e, f, g, h) |
|
#define | ROUND512_16_TO_80(a, b, c, d, e, f, g, h) |
|
#define | R512_0 |
|
#define | R512_16 |
|
◆ ror
◆ Ch
#define Ch |
( |
|
x, |
|
|
|
y, |
|
|
|
z |
|
) |
| (((x) & ((y) ^ (z))) ^ (z)) |
◆ Maj
#define Maj |
( |
|
z, |
|
|
|
y, |
|
|
|
x |
|
) |
| ((((x) | (y)) & (z)) | ((x) & (y))) |
◆ Sigma0_512
#define Sigma0_512 |
( |
|
x | ) |
(ror((x), 28) ^ ror((x), 34) ^ ror((x), 39)) |
◆ Sigma1_512
#define Sigma1_512 |
( |
|
x | ) |
(ror((x), 14) ^ ror((x), 18) ^ ror((x), 41)) |
◆ sigma0_512
#define sigma0_512 |
( |
|
x | ) |
(ror((x), 1) ^ ror((x), 8) ^ ((x) >> 7)) |
◆ sigma1_512
#define sigma1_512 |
( |
|
x | ) |
(ror((x), 19) ^ ror((x), 61) ^ ((x) >> 6)) |
◆ blk0
◆ blk
◆ ROUND512
#define ROUND512 |
( |
|
a, |
|
|
|
b, |
|
|
|
c, |
|
|
|
d, |
|
|
|
e, |
|
|
|
f, |
|
|
|
g, |
|
|
|
h |
|
) |
| |
◆ ROUND512_0_TO_15
#define ROUND512_0_TO_15 |
( |
|
a, |
|
|
|
b, |
|
|
|
c, |
|
|
|
d, |
|
|
|
e, |
|
|
|
f, |
|
|
|
g, |
|
|
|
h |
|
) |
| |
◆ ROUND512_16_TO_80
#define ROUND512_16_TO_80 |
( |
|
a, |
|
|
|
b, |
|
|
|
c, |
|
|
|
d, |
|
|
|
e, |
|
|
|
f, |
|
|
|
g, |
|
|
|
h |
|
) |
| |
◆ R512_0
Value:
ROUND512_0_TO_15(
h,
a,
b,
c, d, e,
f,
g); \
ROUND512_0_TO_15(
g,
h,
a,
b,
c, d, e,
f); \
ROUND512_0_TO_15(
f,
g,
h,
a,
b,
c, d, e); \
ROUND512_0_TO_15(e,
f,
g,
h,
a,
b,
c, d); \
ROUND512_0_TO_15(d, e,
f,
g,
h,
a,
b,
c); \
ROUND512_0_TO_15(
c, d, e,
f,
g,
h,
a,
b); \
ROUND512_0_TO_15(
b,
c, d, e,
f,
g,
h,
a)
◆ R512_16
Value:
ROUND512_16_TO_80(
h,
a,
b,
c, d, e,
f,
g); \
ROUND512_16_TO_80(
g,
h,
a,
b,
c, d, e,
f); \
ROUND512_16_TO_80(
f,
g,
h,
a,
b,
c, d, e); \
ROUND512_16_TO_80(e,
f,
g,
h,
a,
b,
c, d); \
ROUND512_16_TO_80(d, e,
f,
g,
h,
a,
b,
c); \
ROUND512_16_TO_80(
c, d, e,
f,
g,
h,
a,
b); \
ROUND512_16_TO_80(
b,
c, d, e,
f,
g,
h,
a)
◆ sha512_transform()
static void sha512_transform |
( |
uint64_t * |
state, |
|
|
const uint8_t |
buffer[128] |
|
) |
| |
|
static |
◆ K512