#include "../config.h"
#include <string.h>
+#include <memory.h>
#ifndef _NETINET6_MD5_H_
#define _NETINET6_MD5_H_
MD5Final(dest, &ctx);
}
+void* init_md5()
+{
+ MD5_CTX* ctx = malloc(sizeof(MD5_CTX));
+ memset(ctx, 0, sizeof(MD5_CTX));
+ MD5Init(ctx);
+ return ctx;
+}
+void update_md5(void*ctx, unsigned char*data, int len)
+{
+ MD5Update(ctx, data, len);
+}
+void finish_md5(void*ctx, unsigned char*dest)
+{
+ MD5Final(dest, ctx);
+ free(ctx);
+}
+
+
char * crypt_md5(const char *pw, const char *salt)
{
MD5_CTX ctx,ctx1;
static void md5_calc(u_int8_t *, md5_ctxt *);
-static void md5_init(ctxt)
- md5_ctxt *ctxt;
+static void md5_init(md5_ctxt *ctxt)
{
ctxt->md5_n = 0;
ctxt->md5_i = 0;
bzero(ctxt->md5_buf, sizeof(ctxt->md5_buf));
}
-static void md5_loop(ctxt, input, len)
- md5_ctxt *ctxt;
- const u_int8_t *input;
- u_int len; /* number of bytes */
+static void md5_loop(md5_ctxt *ctxt, const u_int8_t *input, u_int len)
{
u_int gap, i;
}
}
-static void md5_pad(ctxt)
- md5_ctxt *ctxt;
+static void md5_pad(md5_ctxt *ctxt)
{
u_int gap;
md5_calc(ctxt->md5_buf, ctxt);
}
-static void md5_result(digest, ctxt)
- u_int8_t *digest;
- md5_ctxt *ctxt;
+static void md5_result(u_int8_t *digest, md5_ctxt *ctxt)
{
/* 4 byte words */
#if BYTE_ORDER == LITTLE_ENDIAN
#endif
}
-static void md5_calc(b64, ctxt)
- u_int8_t *b64;
- md5_ctxt *ctxt;
+static void md5_calc(u_int8_t *b64, md5_ctxt *ctxt)
{
u_int32_t A = ctxt->md5_sta;
u_int32_t B = ctxt->md5_stb;