|
Packit Service |
6f2e62 |
#ifndef IPUTILS_MD5DIG_H
|
|
Packit Service |
6f2e62 |
#define IPUTILS_MD5DIG_H
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
#if defined(USE_GCRYPT)
|
|
Packit Service |
6f2e62 |
# include <stdlib.h>
|
|
Packit Service |
6f2e62 |
# include <gcrypt.h>
|
|
Packit Service |
6f2e62 |
# define IPUTILS_MD5DIG_LEN 16
|
|
Packit Service |
6f2e62 |
#elif defined(USE_NETTLE)
|
|
Packit Service |
6f2e62 |
# include <nettle/md5.h>
|
|
Packit Service |
6f2e62 |
#else
|
|
Packit Service |
6f2e62 |
# include <openssl/md5.h>
|
|
Packit Service |
6f2e62 |
#endif
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
#if defined(USE_GCRYPT)
|
|
Packit Service |
6f2e62 |
typedef struct {
|
|
Packit Service |
6f2e62 |
gcry_md_hd_t dig;
|
|
Packit Service |
6f2e62 |
} iputils_md5dig_ctx;
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
static void iputils_md5dig_init(iputils_md5dig_ctx *ctx)
|
|
Packit Service |
6f2e62 |
{
|
|
Packit Service |
6f2e62 |
if (gcry_md_open(&ctx->dig, GCRY_MD_MD5, 0) != GPG_ERR_NO_ERROR)
|
|
Packit Service |
6f2e62 |
abort();
|
|
Packit Service |
6f2e62 |
return;
|
|
Packit Service |
6f2e62 |
}
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
static void iputils_md5dig_update(iputils_md5dig_ctx *ctx,
|
|
Packit Service |
6f2e62 |
void *buf, int len)
|
|
Packit Service |
6f2e62 |
{
|
|
Packit Service |
6f2e62 |
gcry_md_write(ctx->dig, buf, len);
|
|
Packit Service |
6f2e62 |
return;
|
|
Packit Service |
6f2e62 |
}
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
static void iputils_md5dig_final(unsigned char *digest,
|
|
Packit Service |
6f2e62 |
iputils_md5dig_ctx *ctx)
|
|
Packit Service |
6f2e62 |
{
|
|
Packit Service |
6f2e62 |
const void *p;
|
|
Packit Service |
6f2e62 |
size_t dlen;
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
p = gcry_md_read(ctx->dig, GCRY_MD_MD5);
|
|
Packit Service |
6f2e62 |
dlen = gcry_md_get_algo_dlen(GCRY_MD_MD5);
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
if (dlen != IPUTILS_MD5DIG_LEN)
|
|
Packit Service |
6f2e62 |
abort();
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
memcpy(digest, p, dlen);
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
gcry_md_close(ctx->dig);
|
|
Packit Service |
6f2e62 |
}
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
# define MD5_DIGEST_LENGTH IPUTILS_MD5DIG_LEN
|
|
Packit Service |
6f2e62 |
# define MD5_CTX iputils_md5dig_ctx
|
|
Packit Service |
6f2e62 |
# define MD5_Init iputils_md5dig_init
|
|
Packit Service |
6f2e62 |
# define MD5_Update iputils_md5dig_update
|
|
Packit Service |
6f2e62 |
# define MD5_Final iputils_md5dig_final
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
#elif defined(USE_NETTLE)
|
|
Packit Service |
6f2e62 |
typedef struct md5_ctx iputils_md5dig_ctx;
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
static void iputils_md5dig_init(iputils_md5dig_ctx *ctx)
|
|
Packit Service |
6f2e62 |
{
|
|
Packit Service |
6f2e62 |
md5_init(ctx);
|
|
Packit Service |
6f2e62 |
return;
|
|
Packit Service |
6f2e62 |
}
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
static void iputils_md5dig_update(iputils_md5dig_ctx *ctx,
|
|
Packit Service |
6f2e62 |
void *buf, int len)
|
|
Packit Service |
6f2e62 |
{
|
|
Packit Service |
6f2e62 |
md5_update(ctx, len, buf);
|
|
Packit Service |
6f2e62 |
return;
|
|
Packit Service |
6f2e62 |
}
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
static void iputils_md5dig_final(unsigned char *digest,
|
|
Packit Service |
6f2e62 |
iputils_md5dig_ctx *ctx)
|
|
Packit Service |
6f2e62 |
{
|
|
Packit Service |
6f2e62 |
md5_digest(ctx, MD5_DIGEST_SIZE, digest);
|
|
Packit Service |
6f2e62 |
}
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
# define MD5_DIGEST_LENGTH MD5_DIGEST_SIZE
|
|
Packit Service |
6f2e62 |
# define MD5_CTX iputils_md5dig_ctx
|
|
Packit Service |
6f2e62 |
# define MD5_Init iputils_md5dig_init
|
|
Packit Service |
6f2e62 |
# define MD5_Update iputils_md5dig_update
|
|
Packit Service |
6f2e62 |
# define MD5_Final iputils_md5dig_final
|
|
Packit Service |
6f2e62 |
#endif
|
|
Packit Service |
6f2e62 |
|
|
Packit Service |
6f2e62 |
#endif
|