FFmpeg
Loading...
Searching...
No Matches
sha.c File Reference
#include <string.h>
#include "config.h"
#include "attributes.h"
#include "bswap.h"
#include "error.h"
#include "sha.h"
#include "intreadwrite.h"
#include "mem.h"

Go to the source code of this file.

Data Structures

struct  AVSHA
 hash context More...
 

Macros

#define rol(value, bits)
 
#define blk0(i)
 
#define blk(i)
 
#define R0(v, w, x, y, z, i)
 
#define R1(v, w, x, y, z, i)
 
#define R2(v, w, x, y, z, i)
 
#define R3(v, w, x, y, z, i)
 
#define R4(v, w, x, y, z, i)
 
#define R1_0
 
#define R1_20
 
#define R1_40
 
#define R1_60
 
#define Ch(x, y, z)
 
#define Maj(z, y, x)
 
#define Sigma0_256(x)
 
#define Sigma1_256(x)
 
#define sigma0_256(x)
 
#define sigma1_256(x)
 
#define blk(i)
 
#define ROUND256(a, b, c, d, e, f, g, h)
 
#define ROUND256_0_TO_15(a, b, c, d, e, f, g, h)
 
#define ROUND256_16_TO_63(a, b, c, d, e, f, g, h)
 
#define R256_0
 
#define R256_16
 

Functions

struct AVSHAav_sha_alloc (void)
 Allocate an AVSHA context.
 
static void sha1_transform (uint32_t state[5], const uint8_t buffer[64])
 
static void sha256_transform (uint32_t *state, const uint8_t buffer[64])
 
av_cold int av_sha_init (AVSHA *ctx, int bits)
 Initialize SHA-1 or SHA-2 hashing.
 
void av_sha_update (struct AVSHA *ctx, const uint8_t *data, size_t len)
 Update hash value.
 
void av_sha_final (AVSHA *ctx, uint8_t *digest)
 Finish hashing and output digest value.
 

Variables

const int av_sha_size = sizeof(AVSHA)
 
static const uint32_t K256 [64]
 

Macro Definition Documentation

◆ rol

#define rol ( value,
bits )
Value:
(((value) << (bits)) | ((value) >> (32 - (bits))))
double value
Definition eval.c:102
static const uint8_t bits[8]
Definition fastaudio.c:100

Definition at line 51 of file sha.c.

Referenced by sha1_transform().

◆ blk0

#define blk0 ( i)
Value:
(block[i] = AV_RB32(buffer + 4 * (i)))
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
static int16_t block[64]
Definition dct.c:125
#define AV_RB32(p)
static char buffer[20]
Definition seek.c:32

Definition at line 54 of file sha.c.

Referenced by dct_unquantize_h263_intra_neon(), and sha256_transform().

◆ blk [1/2]

#define blk ( i)
Value:
(block[i] = rol(block[(i)-3] ^ block[(i)-8] ^ block[(i)-14] ^ block[(i)-16], 1))
#define rol(value, bits)
Definition redspark.c:30

Definition at line 55 of file sha.c.

Referenced by ac3_apply_rematrixing(), ac3_compute_mantissa_size_c(), ac3_decode_frame(), ac3_exponent_min_c(), ac3_group_exponents(), ac3_output_frame(), ac3_quantize_mantissas(), aic_decode_slice(), allocate_buffers(), apply_channel_coupling(), apply_mdct(), argo_brp_read_header(), argo_brp_read_packet(), bink_decode_plane(), binkb_decode_plane(), bit_alloc(), bit_alloc_masking(), compute_exp_strategy(), compute_rematrixing_strategy(), count_exponent_bits(), count_frame_bits(), count_frame_bits_fixed(), count_mantissa_bits_init(), count_mantissa_bits_update_ch(), coupling_coordinates(), coupling_strategy(), decode_audio_block(), decode_band_structure(), decode_block(), decode_frame(), decode_transform_coeffs(), decode_transform_coeffs_ch(), dv_calc_mb_coordinates(), dv_init_enc_block(), dv_revise_cnos(), dv_set_class_number_hd(), dv_set_class_number_sd(), eac3_output_frame_header(), encode_exponents(), ff_ac3_compute_coupling_strategy(), ff_eac3_decode_transform_coeffs_aht_ch(), ff_eac3_parse_header(), ff_eac3_set_cpl_states(), ff_h264_idct8_add4_msa(), fic_idct(), idct2_1d(), idct_1d(), idct_1d(), idct_col(), idct_col(), idct_row(), idct_row(), ivi_decode_blocks(), ivi_process_empty_tile(), output_audio_block(), reset_block_bap(), sbc_analyze_audio(), sbc_calc_scalefactors(), sbc_calc_scalefactors_j(), sbc_pack_frame(), sbc_synthesize_audio(), sbc_synthesize_eight(), sbc_synthesize_four(), sbc_unpack_frame(), set_bandwidth(), sha256_transform(), spx_strategy(), and vb_decode_framedata().

◆ R0

#define R0 ( v,
w,
x,
y,
z,
i )
Value:
z += (((w)&((x)^(y)))^(y)) + blk0(i) + 0x5A827999 + rol(v, 5); w = rol(w, 30);
uint8_t w
Definition llvidencdsp.c:39
#define blk0(i)
Definition sha.c:54

Definition at line 57 of file sha.c.

Referenced by sha1_transform().

◆ R1

#define R1 ( v,
w,
x,
y,
z,
i )
Value:
z += (((w)&((x)^(y)))^(y)) + blk (i) + 0x5A827999 + rol(v, 5); w = rol(w, 30);
#define blk(i)
Definition sha.c:55

Definition at line 58 of file sha.c.

Referenced by sha1_transform().

◆ R2

#define R2 ( v,
w,
x,
y,
z,
i )
Value:
z += ( (w)^(x) ^(y)) + blk (i) + 0x6ED9EBA1 + rol(v, 5); w = rol(w, 30);

Definition at line 59 of file sha.c.

◆ R3

#define R3 ( v,
w,
x,
y,
z,
i )
Value:
z += ((((w)|(x))&(y))|((w)&(x))) + blk (i) + 0x8F1BBCDC + rol(v, 5); w = rol(w, 30);

Definition at line 60 of file sha.c.

◆ R4

#define R4 ( v,
w,
x,
y,
z,
i )
Value:
z += ( (w)^(x) ^(y)) + blk (i) + 0xCA62C1D6 + rol(v, 5); w = rol(w, 30);

Definition at line 61 of file sha.c.

◆ R1_0

#define R1_0
Value:
R0(a, b, c, d, e, 0 + i); \
R0(e, a, b, c, d, 1 + i); \
R0(d, e, a, b, c, 2 + i); \
R0(c, d, e, a, b, 3 + i); \
R0(b, c, d, e, a, 4 + i); \
i += 5
int a
#define b
Definition input.c:43
#define R0(v, w, x, y, z, i)
Definition sha.c:57
static double c[64]

Referenced by sha1_transform().

◆ R1_20

#define R1_20
Value:
R2(a, b, c, d, e, 0 + i); \
R2(e, a, b, c, d, 1 + i); \
R2(d, e, a, b, c, 2 + i); \
R2(c, d, e, a, b, 3 + i); \
R2(b, c, d, e, a, 4 + i); \
i += 5
#define R2

Referenced by sha1_transform().

◆ R1_40

#define R1_40
Value:
R3(a, b, c, d, e, 0 + i); \
R3(e, a, b, c, d, 1 + i); \
R3(d, e, a, b, c, 2 + i); \
R3(c, d, e, a, b, 3 + i); \
R3(b, c, d, e, a, 4 + i); \
i += 5
#define R3

Referenced by sha1_transform().

◆ R1_60

#define R1_60
Value:
R4(a, b, c, d, e, 0 + i); \
R4(e, a, b, c, d, 1 + i); \
R4(d, e, a, b, c, 2 + i); \
R4(c, d, e, a, b, 3 + i); \
R4(b, c, d, e, a, 4 + i); \
i += 5
#define R4(v, w, x, y, z, i)
Definition sha.c:61

Referenced by sha1_transform().

◆ Ch

#define Ch ( x,
y,
z )
Value:
(((x) & ((y) ^ (z))) ^ (z))

Definition at line 177 of file sha.c.

Referenced by sha256_transform().

◆ Maj

#define Maj ( z,
y,
x )
Value:
((((x) | (y)) & (z)) | ((x) & (y)))

Definition at line 178 of file sha.c.

Referenced by sha256_transform().

◆ Sigma0_256

#define Sigma0_256 ( x)
Value:
(rol((x), 30) ^ rol((x), 19) ^ rol((x), 10))

Definition at line 180 of file sha.c.

Referenced by sha256_transform().

◆ Sigma1_256

#define Sigma1_256 ( x)
Value:
(rol((x), 26) ^ rol((x), 21) ^ rol((x), 7))

Definition at line 181 of file sha.c.

Referenced by sha256_transform().

◆ sigma0_256

#define sigma0_256 ( x)
Value:
(rol((x), 25) ^ rol((x), 14) ^ ((x) >> 3))

Definition at line 182 of file sha.c.

◆ sigma1_256

#define sigma1_256 ( x)
Value:
(rol((x), 15) ^ rol((x), 13) ^ ((x) >> 10))

Definition at line 183 of file sha.c.

◆ blk [2/2]

#define blk ( i)
Value:
(block[i] = block[i - 16] + sigma0_256(block[i - 15]) + \
sigma1_256(block[i - 2]) + block[i - 7])
#define sigma0_256(x)
Definition sha.c:182

Definition at line 55 of file sha.c.

◆ ROUND256

#define ROUND256 ( a,
b,
c,
d,
e,
f,
g,
h )
Value:
T1 += (h) + Sigma1_256(e) + Ch((e), (f), (g)) + K256[i]; \
(d) += T1; \
(h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \
i++
#define f(width, name)
Definition cbs_vp8.c:236
#define Maj(z, y, x)
Definition sha.c:178
#define Sigma0_256(x)
Definition sha.c:180
static const uint32_t K256[64]
Definition sha.c:157
#define Sigma1_256(x)
Definition sha.c:181
#define Ch(x, y, z)
Definition sha.c:177
const char * g
Definition vf_curves.c:128

Definition at line 189 of file sha.c.

◆ ROUND256_0_TO_15

#define ROUND256_0_TO_15 ( a,
b,
c,
d,
e,
f,
g,
h )
Value:
T1 = blk0(i); \
ROUND256(a,b,c,d,e,f,g,h)

Definition at line 195 of file sha.c.

◆ ROUND256_16_TO_63

#define ROUND256_16_TO_63 ( a,
b,
c,
d,
e,
f,
g,
h )
Value:
T1 = blk(i); \
ROUND256(a,b,c,d,e,f,g,h)

Definition at line 199 of file sha.c.

◆ R256_0

#define R256_0
Value:
ROUND256_0_TO_15(a, b, c, d, e, f, g, h); \
ROUND256_0_TO_15(h, a, b, c, d, e, f, g); \
ROUND256_0_TO_15(g, h, a, b, c, d, e, f); \
ROUND256_0_TO_15(f, g, h, a, b, c, d, e); \
ROUND256_0_TO_15(e, f, g, h, a, b, c, d); \
ROUND256_0_TO_15(d, e, f, g, h, a, b, c); \
ROUND256_0_TO_15(c, d, e, f, g, h, a, b); \
ROUND256_0_TO_15(b, c, d, e, f, g, h, a)
#define ROUND256_0_TO_15(a, b, c, d, e, f, g, h)
Definition sha.c:195

Referenced by sha256_transform().

◆ R256_16

#define R256_16
Value:
ROUND256_16_TO_63(a, b, c, d, e, f, g, h); \
ROUND256_16_TO_63(h, a, b, c, d, e, f, g); \
ROUND256_16_TO_63(g, h, a, b, c, d, e, f); \
ROUND256_16_TO_63(f, g, h, a, b, c, d, e); \
ROUND256_16_TO_63(e, f, g, h, a, b, c, d); \
ROUND256_16_TO_63(d, e, f, g, h, a, b, c); \
ROUND256_16_TO_63(c, d, e, f, g, h, a, b); \
ROUND256_16_TO_63(b, c, d, e, f, g, h, a)
#define ROUND256_16_TO_63(a, b, c, d, e, f, g, h)
Definition sha.c:199

Referenced by sha256_transform().

Function Documentation

◆ sha1_transform()

static void sha1_transform ( uint32_t state[5],
const uint8_t buffer[64] )
static

Definition at line 65 of file sha.c.

Referenced by av_sha_init().

◆ sha256_transform()

static void sha256_transform ( uint32_t * state,
const uint8_t buffer[64] )
static

Definition at line 203 of file sha.c.

Referenced by av_sha_init().

Variable Documentation

◆ K256

const uint32_t K256[64]
static
Initial value:
= {
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
}

Definition at line 157 of file sha.c.

Referenced by sha256_transform().