#include <string.h>
#include "config.h"
#include "attributes.h"
#include "bswap.h"
#include "error.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