Blame iputils_md5dig.h

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