9RCSIDH(md5_h,
"$Id: 99d9d01b5de8cc677cfbd022715a6a389f3f94ae $")
15#include <freeradius-devel/build.h>
16#include <freeradius-devel/missing.h>
21#ifndef MD5_DIGEST_LENGTH
22# define MD5_DIGEST_LENGTH 16
53#define fr_md5_ctx_reset(_ctx) fr_md5_funcs->reset(_ctx)
60#define fr_md5_ctx_copy(_dst, _src) fr_md5_funcs->copy(_dst, _src)
68#define fr_md5_ctx_alloc() fr_md5_funcs->alloc()
75#define fr_md5_ctx_free(_ctx) fr_md5_funcs->free(_ctx)
83#define fr_md5_update(_ctx, _in, _inlen) fr_md5_funcs->update(_ctx, _in, _inlen)
90#define fr_md5_final(_out, _ctx) fr_md5_funcs->final(_out, _ctx)
109 uint8_t const *key,
size_t key_len);
111#ifdef HAVE_OPENSSL_EVP_H
112void fr_md5_openssl_init(
void);
113void fr_md5_openssl_free(
void);
#define MD5_DIGEST_LENGTH
int fr_hmac_md5(uint8_t digest[static MD5_DIGEST_LENGTH], uint8_t const *in, size_t inlen, uint8_t const *key, size_t key_len)
void(* fr_md5_update_t)(fr_md5_ctx_t *ctx, uint8_t const *in, size_t inlen)
void(* fr_md5_final_t)(uint8_t out[static MD5_DIGEST_LENGTH], fr_md5_ctx_t *ctx)
fr_md5_ctx_t *(* fr_md5_ctx_alloc_t)(void)
void(* fr_md5_ctx_free_t)(fr_md5_ctx_t **ctx)
void fr_md5_calc(uint8_t out[static MD5_DIGEST_LENGTH], uint8_t const *in, size_t inlen)
Perform a single digest operation on a single input buffer.
void(* fr_md5_ctx_reset_t)(fr_md5_ctx_t *ctx)
void fr_md5_ctx_free_from_list(fr_md5_ctx_t **ctx)
Release an MD5 context back to a free list.
fr_md5_funcs_t const * fr_md5_funcs
Swap a single pointer, so all functions get swapped as an atomic operation.
fr_md5_ctx_t * fr_md5_ctx_alloc_from_list(void)
Allocate an MD5 context from a free list.
void(* fr_md5_ctx_copy_t)(fr_md5_ctx_t *dst, fr_md5_ctx_t const *src)
static size_t char fr_sbuff_t size_t inlen
static size_t char ** out