aboutsummaryrefslogtreecommitdiffstats
path: root/lib/md5.h
diff options
context:
space:
mode:
authordequis <dx@dxzone.com.ar>2015-01-18 03:39:20 -0300
committerdequis <dx@dxzone.com.ar>2015-01-31 20:58:57 -0300
commit34afea7dd6b066a9e7153d16a8e386c7c90ffe87 (patch)
treeea152e8c35fe5c9c273a8d2a64dfe0b91c51bf4b /lib/md5.h
parente41cc4034741547c17ec4d24b9fdc50a8d2a5ee5 (diff)
Use glib's GChecksum for md5/sha1
This changes behavior slightly: - md5_init()/sha1_init() allocate a GChecksum - md5_finish()/sha1_finish() close and free() it - md5_digest_keep() was added (no sha1 equivalent needed) And yes, glib has this concept of "closing" the GChecksum, which means it can't be used anymore after g_checksum_get_digest(). jabber_cache_add() actually seems to need to do that to generate some random-ish values, so i kept that working by adding a md5_digest_keep() function that copies the GChecksum before it gets closed GChecksum was introduced in glib 2.16, so the configure script version was bumped. We were already depending on glib 2.16 accidentally (some post-3.2.2 code uses GHashTableIter)
Diffstat (limited to 'lib/md5.h')
-rw-r--r--lib/md5.h50
1 files changed, 11 insertions, 39 deletions
diff --git a/lib/md5.h b/lib/md5.h
index 17da99b3..c30c8e42 100644
--- a/lib/md5.h
+++ b/lib/md5.h
@@ -1,47 +1,19 @@
-/*
- * MD5 hashing code copied from Lepton's crack <http://usuarios.lycos.es/reinob/>
- *
- * Adapted to be API-compatible with the previous (GPL-incompatible) code.
- */
-
-/*
- * This code implements the MD5 message-digest algorithm.
- * The algorithm is due to Ron Rivest. This code was
- * written by Colin Plumb in 1993, no copyright is claimed.
- * This code is in the public domain; do with it what you wish.
- *
- * Equivalent code is available from RSA Data Security, Inc.
- * This code has been tested against that, and is equivalent,
- * except that you don't need to include two pages of legalese
- * with every copy.
- *
- * To compute the message digest of a chunk of bytes, declare an
- * MD5Context structure, pass it to MD5Init, call MD5Update as
- * needed on buffers full of bytes, and then call MD5Final, which
- * will fill a supplied 16-byte array with the digest.
- */
-
#ifndef _MD5_H
#define _MD5_H
-#include <sys/types.h>
+#include <glib.h>
#include <gmodule.h>
-#if(__sun)
-#include <inttypes.h>
-#else
-#include <stdint.h>
-#endif
-typedef uint8_t md5_byte_t;
-typedef struct MD5Context {
- uint32_t buf[4];
- uint32_t bits[2];
- unsigned char in[64];
-} md5_state_t;
+typedef guint8 md5_byte_t;
+typedef GChecksum *md5_state_t;
+
+
+#define MD5_HASH_SIZE 16
-G_MODULE_EXPORT void md5_init(struct MD5Context *context);
-G_MODULE_EXPORT void md5_append(struct MD5Context *context, const md5_byte_t *buf, unsigned int len);
-G_MODULE_EXPORT void md5_finish(struct MD5Context *context, md5_byte_t digest[16]);
-G_MODULE_EXPORT void md5_finish_ascii(struct MD5Context *context, char *ascii);
+void md5_init(md5_state_t *);
+void md5_append(md5_state_t *, const guint8 *, unsigned int);
+void md5_finish(md5_state_t *, guint8 digest[MD5_HASH_SIZE]);
+void md5_digest_keep(md5_state_t *, guint8 digest[MD5_HASH_SIZE]);
+void md5_free(md5_state_t *);
#endif