63 memset ( hctx->pad, 0, sizeof ( hctx->pad ) );
64 if (
key_len <=
sizeof ( hctx->pad ) ) {
67 digest_init (
digest, hctx->ctx );
69 digest_final (
digest, hctx->ctx, hctx->pad );
71 for ( i = 0 ; i <
sizeof ( hctx->pad ) ; i++ ) {
76 digest_init (
digest, hctx->ctx );
77 digest_update (
digest, hctx->ctx, hctx->pad, sizeof ( hctx->pad ) );
92 for ( i = 0 ; i <
sizeof ( hctx->pad ) ; i++ ) {
97 digest_final (
digest, hctx->ctx, hmac );
100 digest_init (
digest, hctx->ctx );
101 digest_update (
digest, hctx->ctx, hctx->pad, sizeof ( hctx->pad ) );
103 digest_final (
digest, hctx->ctx, hmac );
106 memset ( hctx->pad, 0, sizeof ( hctx->pad ) );
void hmac_init(struct digest_algorithm *digest, void *ctx, const void *key, size_t key_len)
Initialise HMAC.
#define hmac_context_t(digest)
HMAC context type.
static void const void size_t key_len
void * memcpy(void *dest, const void *src, size_t len) __nonnull
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
Keyed-Hashing for Message Authentication.
static void struct digest_algorithm * digest
HMAC-MD5 digest.
struct golan_eq_context ctx
size_t digestsize
Digest size.
A message digest algorithm.
void hmac_final(struct digest_algorithm *digest, void *ctx, void *hmac)
Finalise HMAC.
void * memset(void *dest, int character, size_t len) __nonnull