66 lines
1 KiB
C
66 lines
1 KiB
C
/**
|
|
* @file wrap.c MD5 wrappers
|
|
*
|
|
* Copyright (C) 2010 Creytiv.com
|
|
*/
|
|
#ifdef USE_OPENSSL
|
|
#include <stddef.h>
|
|
#include <openssl/md5.h>
|
|
#else
|
|
#include "md5.h"
|
|
#endif
|
|
#include <re_types.h>
|
|
#include <re_fmt.h>
|
|
#include <re_mem.h>
|
|
#include <re_mbuf.h>
|
|
#include <re_md5.h>
|
|
|
|
|
|
/**
|
|
* Calculate the MD5 hash from a buffer
|
|
*
|
|
* @param d Data buffer (input)
|
|
* @param n Number of input bytes
|
|
* @param md Calculated MD5 hash (output)
|
|
*/
|
|
void md5(const uint8_t *d, size_t n, uint8_t *md)
|
|
{
|
|
#ifdef USE_OPENSSL
|
|
(void)MD5(d, n, md);
|
|
#else
|
|
md5_state_t state;
|
|
|
|
md5_init(&state);
|
|
md5_append(&state, d, (int)n);
|
|
md5_finish(&state, md);
|
|
#endif
|
|
}
|
|
|
|
|
|
/**
|
|
* Calculate the MD5 hash from a formatted string
|
|
*
|
|
* @param md Calculated MD5 hash
|
|
* @param fmt Formatted string
|
|
*
|
|
* @return 0 if success, otherwise errorcode
|
|
*/
|
|
int md5_printf(uint8_t *md, const char *fmt, ...)
|
|
{
|
|
struct mbuf mb;
|
|
va_list ap;
|
|
int err;
|
|
|
|
mbuf_init(&mb);
|
|
|
|
va_start(ap, fmt);
|
|
err = mbuf_vprintf(&mb, fmt, ap);
|
|
va_end(ap);
|
|
|
|
if (!err)
|
|
md5(mb.buf, mb.end, md);
|
|
|
|
mbuf_reset(&mb);
|
|
|
|
return err;
|
|
}
|