34#define MAX_BLOCKLEN 128
50#define DEFINE_ALGO_BITS_INIT(prefix, bits) \
51static av_cold void prefix##bits##_init(void *ctx) \
53 av_##prefix##_init(ctx, bits); \
56#define DEFINE_ALGO_INIT(prefix) \
57static av_cold void prefix##_init(void *ctx) \
59 av_##prefix##_init(ctx); \
62#define DEFINE_ALGO(prefix) \
63static void prefix##_update(void *ctx, const uint8_t *src, size_t len) \
65 av_##prefix##_update(ctx, src, len); \
67static void prefix##_final(void *ctx, uint8_t *dst) \
69 av_##prefix##_final(ctx, dst); \
92 c->update = md5_update;
99 c->init = sha160_init;
100 c->update = sha_update;
101 c->final = sha_final;
107 c->init = sha224_init;
108 c->update = sha_update;
109 c->final = sha_final;
115 c->init = sha256_init;
116 c->update = sha_update;
117 c->final = sha_final;
123 c->init = sha512384_init;
124 c->update = sha512_update;
125 c->final = sha512_final;
131 c->init = sha512512_init;
132 c->update = sha512_update;
133 c->final = sha512_final;
159 if (keylen >
c->blocklen) {
161 c->update(
c->hash,
key, keylen);
162 c->final(
c->hash,
c->key);
163 c->keylen =
c->hashlen;
165 memcpy(
c->key,
key, keylen);
169 for (
i = 0;
i <
c->keylen;
i++)
173 c->update(
c->hash,
block,
c->blocklen);
185 if (outlen < c->hashlen)
187 c->final(
c->hash,
out);
189 for (
i = 0;
i <
c->keylen;
i++)
193 c->update(
c->hash,
block,
c->blocklen);
194 c->update(
c->hash,
out,
c->hashlen);
195 c->final(
c->hash,
out);
200 const uint8_t *
key,
unsigned int keylen,
201 uint8_t *
out,
unsigned int outlen)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
static struct AVMD5 * md5
static AVFormatContext * ctx
#define i(width, name, range_min, range_max)
int av_hmac_final(AVHMAC *c, uint8_t *out, unsigned int outlen)
Finish hashing and output the HMAC digest.
int av_hmac_calc(AVHMAC *c, const uint8_t *data, unsigned int len, const uint8_t *key, unsigned int keylen, uint8_t *out, unsigned int outlen)
Hash an array of data with a key.
AVHMAC * av_hmac_alloc(enum AVHMACType type)
Allocate an AVHMAC context.
void av_hmac_update(AVHMAC *c, const uint8_t *data, unsigned int len)
Hash data with the HMAC.
void av_hmac_free(AVHMAC *c)
Free an AVHMAC context.
void av_hmac_init(AVHMAC *c, const uint8_t *key, unsigned int keylen)
Initialize an AVHMAC context with an authentication key.
struct AVMD5 * av_md5_alloc(void)
Allocate an AVMD5 context.
struct AVSHA512 * av_sha512_alloc(void)
Allocate an AVSHA512 context.
struct AVSHA * av_sha_alloc(void)
Allocate an AVSHA context.
#define DEFINE_ALGO_INIT(prefix)
#define DEFINE_ALGO(prefix)
void(* hmac_init)(void *ctx)
void(* hmac_update)(void *ctx, const uint8_t *src, size_t len)
void(* hmac_final)(void *ctx, uint8_t *dst)
#define DEFINE_ALGO_BITS_INIT(prefix, bits)
Macro definitions for various function/variable attributes.
Public header for MD5 hash function implementation.
Memory handling functions.
Public header for SHA-512 implementation.
Public header for SHA-1 & SHA-256 hash function implementations.
uint8_t key[MAX_BLOCKLEN]