gobjectification: ba263924: renamed purple_md5_hash_get_gtype to pur...

grim at pidgin.im grim at pidgin.im
Sun Dec 4 17:16:02 EST 2011


----------------------------------------------------------------------
Revision: ba26392449a7bf99bcb14569f5eba716872b2852
Parent:   99b1fc3fc64eb233fc0a3f6bda71de1a3a2c2ed0
Author:   grim at pidgin.im
Date:     03/24/11 19:32:20
Branch:   im.pidgin.gobjectification
URL: http://d.pidgin.im/viewmtn/revision/info/ba26392449a7bf99bcb14569f5eba716872b2852

Changelog: 

renamed purple_md5_hash_get_gtype to purple_md5_hash_get_type (s/gtype/type)
removed the compatibility code and only use the glib md5sum checksum

Changes against parent 99b1fc3fc64eb233fc0a3f6bda71de1a3a2c2ed0

  patched  libpurple/cipher/md5hash.c
  patched  libpurple/cipher/md5hash.h

-------------- next part --------------
============================================================
--- libpurple/cipher/md5hash.c	c9cb6c476a38d1088820ff6a107db449563477c3
+++ libpurple/cipher/md5hash.c	6e8139a9cf85b8d022f4912491f8d3bfe3c30e21
@@ -9,278 +9,17 @@
 
 #define MD5_HMAC_BLOCK_SIZE	64
 
-#if !GLIB_CHECK_VERSION(2,16,0)
-#define PURPLE_MD5_HASH_GET_PRIVATE(obj) \
-	(G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MD5_HASH, PurpleMD5HashPrivate))
-typedef struct _PurpleMD5HashPriv			PurpleMD5HashPriv;
-#endif
-
 /******************************************************************************
- * Structs
- *****************************************************************************/
-#if !GLIB_CHECK_VERSION(2,16,0)
-typedef struct {
-	guint32 total[2];
-	guint32 state[4];
-	guchar buffer[64];
-} PurpleMD5HashPrivate;
-#endif
-/******************************************************************************
  * Globals
  *****************************************************************************/
 static GObjectClass *parent_class = NULL;
 
 /******************************************************************************
- * Helpers
- *****************************************************************************/
-#define MD5_GET_GUINT32(n,b,i) {			\
-	(n) = ((guint32)(b) [(i)    ]      )	\
-		| ((guint32)(b) [(i) + 1] <<  8)	\
-		| ((guint32)(b) [(i) + 2] << 16)	\
-		| ((guint32)(b) [(i) + 3] << 24);	\
-}
-
-#define MD5_PUT_GUINT32(n,b,i) {			\
-	(b)[(i)    ] = (guchar)((n)      );		\
-	(b)[(i) + 1] = (guchar)((n) >>  8);		\
-	(b)[(i) + 2] = (guchar)((n) >> 16);		\
-	(b)[(i) + 3] = (guchar)((n) >> 24);		\
-}
-
-/******************************************************************************
- * Hash Stuff
- *****************************************************************************/
-#if !GLIB_CHECK_VERSION(2,16,0)
-static void
-purple_md5_hash_reset(PurpleHash *hash) {
-	PurpleMD5HashPrivate *priv = PURPLE_MD5_HASH_GET_PRIVATE(hash);
-
-	priv->total[0] = 0;
-	priv->total[1] = 0;
-
-	priv->state[0] = 0x67452301;
-	priv->state[1] = 0xEFCDAB89;
-	priv->state[2] = 0x98BADCFE;
-	priv->state[3] = 0x10325476;
-
-	memset(priv->buffer, 0, sizeof(priv->buffer));
-}
-
-static void
-purple_md5_hash_process(PurpleMD5HashPrivate *priv, const guchar data[64]) {
-	guint32 X[16], A, B, C, D;
-
-	A = priv->state[0];
-	B = priv->state[1];
-	C = priv->state[2];
-	D = priv->state[3];
-
-	MD5_GET_GUINT32(X[ 0], data,  0);
-	MD5_GET_GUINT32(X[ 1], data,  4);
-	MD5_GET_GUINT32(X[ 2], data,  8);
-	MD5_GET_GUINT32(X[ 3], data, 12);
-	MD5_GET_GUINT32(X[ 4], data, 16);
-	MD5_GET_GUINT32(X[ 5], data, 20);
-	MD5_GET_GUINT32(X[ 6], data, 24);
-	MD5_GET_GUINT32(X[ 7], data, 28);
-	MD5_GET_GUINT32(X[ 8], data, 32);
-	MD5_GET_GUINT32(X[ 9], data, 36);
-	MD5_GET_GUINT32(X[10], data, 40);
-	MD5_GET_GUINT32(X[11], data, 44);
-	MD5_GET_GUINT32(X[12], data, 48);
-	MD5_GET_GUINT32(X[13], data, 52);
-	MD5_GET_GUINT32(X[14], data, 56);
-	MD5_GET_GUINT32(X[15], data, 60);
-
-	#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
-	#define P(a,b,c,d,k,s,t) {		\
-		a += F(b,c,d) + X[k] + t;	\
-		a = S(a,s) + b;				\
-	}
-
-	/* first pass */
-	#define F(x,y,z) (z ^ (x & (y ^ z)))
-	P(A, B, C, D,  0,  7, 0xD76AA478);
-	P(D, A, B, C,  1, 12, 0xE8C7B756);
-	P(C, D, A, B,  2, 17, 0x242070DB);
-	P(B, C, D, A,  3, 22, 0xC1BDCEEE);
-	P(A, B, C, D,  4,  7, 0xF57C0FAF);
-	P(D, A, B, C,  5, 12, 0x4787C62A);
-	P(C, D, A, B,  6, 17, 0xA8304613);
-	P(B, C, D, A,  7, 22, 0xFD469501);
-	P(A, B, C, D,  8,  7, 0x698098D8);
-	P(D, A, B, C,  9, 12, 0x8B44F7AF);
-	P(C, D, A, B, 10, 17, 0xFFFF5BB1);
-	P(B, C, D, A, 11, 22, 0x895CD7BE);
-	P(A, B, C, D, 12,  7, 0x6B901122);
-	P(D, A, B, C, 13, 12, 0xFD987193);
-	P(C, D, A, B, 14, 17, 0xA679438E);
-	P(B, C, D, A, 15, 22, 0x49B40821);
-	#undef F
-
-	/* second pass */
-	#define F(x,y,z) (y ^ (z & (x ^ y)))
-	P(A, B, C, D,  1,  5, 0xF61E2562);
-	P(D, A, B, C,  6,  9, 0xC040B340);
-	P(C, D, A, B, 11, 14, 0x265E5A51);
-	P(B, C, D, A,  0, 20, 0xE9B6C7AA);
-	P(A, B, C, D,  5,  5, 0xD62F105D);
-	P(D, A, B, C, 10,  9, 0x02441453);
-	P(C, D, A, B, 15, 14, 0xD8A1E681);
-	P(B, C, D, A,  4, 20, 0xE7D3FBC8);
-	P(A, B, C, D,  9,  5, 0x21E1CDE6);
-	P(D, A, B, C, 14,  9, 0xC33707D6);
-	P(C, D, A, B,  3, 14, 0xF4D50D87);
-	P(B, C, D, A,  8, 20, 0x455A14ED);
-	P(A, B, C, D, 13,  5, 0xA9E3E905);
-	P(D, A, B, C,  2,  9, 0xFCEFA3F8);
-	P(C, D, A, B,  7, 14, 0x676F02D9);
-	P(B, C, D, A, 12, 20, 0x8D2A4C8A);
-	#undef F
-
-	/* third pass */
-	#define F(x,y,z) (x ^ y ^ z)
-	P(A, B, C, D,  5,  4, 0xFFFA3942);
-	P(D, A, B, C,  8, 11, 0x8771F681);
-	P(C, D, A, B, 11, 16, 0x6D9D6122);
-	P(B, C, D, A, 14, 23, 0xFDE5380C);
-	P(A, B, C, D,  1,  4, 0xA4BEEA44);
-	P(D, A, B, C,  4, 11, 0x4BDECFA9);
-	P(C, D, A, B,  7, 16, 0xF6BB4B60);
-	P(B, C, D, A, 10, 23, 0xBEBFBC70);
-	P(A, B, C, D, 13,  4, 0x289B7EC6);
-	P(D, A, B, C,  0, 11, 0xEAA127FA);
-	P(C, D, A, B,  3, 16, 0xD4EF3085);
-	P(B, C, D, A,  6, 23, 0x04881D05);
-	P(A, B, C, D,  9,  4, 0xD9D4D039);
-	P(D, A, B, C, 12, 11, 0xE6DB99E5);
-	P(C, D, A, B, 15, 16, 0x1FA27CF8);
-	P(B, C, D, A,  2, 23, 0xC4AC5665);
-	#undef F
-
-	/* forth pass */
-	#define F(x,y,z) (y ^ (x | ~z))
-	P(A, B, C, D,  0,  6, 0xF4292244);
-	P(D, A, B, C,  7, 10, 0x432AFF97);
-	P(C, D, A, B, 14, 15, 0xAB9423A7);
-	P(B, C, D, A,  5, 21, 0xFC93A039);
-	P(A, B, C, D, 12,  6, 0x655B59C3);
-	P(D, A, B, C,  3, 10, 0x8F0CCC92);
-	P(C, D, A, B, 10, 15, 0xFFEFF47D);
-	P(B, C, D, A,  1, 21, 0x85845DD1);
-	P(A, B, C, D,  8,  6, 0x6FA87E4F);
-	P(D, A, B, C, 15, 10, 0xFE2CE6E0);
-	P(C, D, A, B,  6, 15, 0xA3014314);
-	P(B, C, D, A, 13, 21, 0x4E0811A1);
-	P(A, B, C, D,  4,  6, 0xF7537E82);
-	P(D, A, B, C, 11, 10, 0xBD3AF235);
-	P(C, D, A, B,  2, 15, 0x2AD7D2BB);
-	P(B, C, D, A,  9, 21, 0xEB86D391);
-	#undef F
-	#undef P
-	#undef S
-
-	priv->state[0] += A;
-	priv->state[1] += B;
-	priv->state[2] += C;
-	priv->state[3] += D;
-}
-
-static void
-purple_md5_hash_append(PurpleHash *hash, const guchar *data,
-						 size_t len)
-{
-	PurpleMD5HashPrivate *priv = PURPLE_MD5_HASH_GET_PRIVATE(hash);
-	guint32 left = 0, fill = 0;
-
-	left = priv->total[0] & 0x3F;
-	fill = 64 - left;
-
-	priv->total[0] += len;
-	priv->total[0] &= 0xFFFFFFFF;
-
-	if(priv->total[0] < len)
-		priv->total[1]++;
-
-	if(left && len >= fill) {
-		memcpy((priv->buffer + left), data, fill);
-		purple_md5_hash_process(priv, priv->buffer);
-		len -= fill;
-		data += fill;
-		left = 0;
-	}
-
-	while(len >= 64) {
-		purple_md5_hash_process(priv, data);
-		len -= 64;
-		data += 64;
-	}
-
-	if(len) {
-		memcpy((priv->buffer + left), data, len);
-	}
-}
-
-static gboolean
-purple_md5_hash_digest(PurpleHash *hash, size_t in_len,
-						 guchar digest[16], size_t *out_len)
-{
-	PurpleMD5HashPrivate *priv = PURPLE_MD5_HASH_GET_PRIVATE(hash);
-	guint32 last, pad;
-	guint32 high, low;
-	guchar message[8];
-	guchar padding[64] = {
-		0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-		   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-		   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-		   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	};
-
-	g_return_val_if_fail(in_len >= 16, FALSE);
-
-	high = (priv->total[0] >> 23)
-		 | (priv->total[1] << 3);
-	low = (priv->total[0] << 3);
-
-	MD5_PUT_GUINT32(low, message, 0);
-	MD5_PUT_GUINT32(high, message, 4);
-
-	last = priv->total[0] & 0x3F;
-	pad = (last < 56) ? (56 - last) : (120 - last);
-
-	purple_md5_hash_append(hash, padding, pad);
-	purple_md5_hash_append(hash, message, 8);
-
-	MD5_PUT_GUINT32(priv->state[0], digest, 0);
-	MD5_PUT_GUINT32(priv->state[1], digest, 4);
-	MD5_PUT_GUINT32(priv->state[2], digest, 8);
-	MD5_PUT_GUINT32(priv->state[3], digest, 12);
-
-	if(out_len)
-		*out_len = 16;
-
-	return TRUE;
-}
-#endif /* !GLIB_CHECK_VERSION(2,16,0) */
-
-/******************************************************************************
  * Object Stuff
  *****************************************************************************/
 static void
 purple_md5_hash_class_init(PurpleMD5HashClass *klass) {
-#if !GLIB_CHECK_VERSION(2,16,0)
-	PurpleHashClass *hash_class = PURPLE_HASH_CLASS(klass);
-#endif
-
 	parent_class = g_type_class_peek_parent(klass);
-
-#if !GLIB_CHECK_VERSION(2,16,0)
-	g_type_class_add_private(klass, sizeof(PurpleMD5HashPrivate));
-
-	hash_class->reset = purple_md5_hash_reset;
-	hash_class->append = purple_md5_hash_append;
-	hash_class->digest = purple_md5_hash_digest;
-#endif
 }
 
 /******************************************************************************
@@ -300,40 +39,21 @@ GType
  * API
  *****************************************************************************/
 GType
-purple_md5_hash_get_gtype(void) {
+purple_md5_hash_get_type(void) {
 	static GType type = 0;
 
 	if(type == 0) {
 		static const GTypeInfo info = {
-			sizeof(PurpleMD5HashClass),
-			NULL,
-			NULL,
-			(GClassInitFunc)purple_md5_hash_class_init,
-			NULL,
-			NULL,
-			sizeof(PurpleMD5Hash),
-			0,
-#if GLIB_CHECK_VERSION(2,16,0)
-			NULL,
-#else
-			(GInstanceInitFunc)purple_hash_reset,
-#endif
-			NULL,
+			.class_size = sizeof(PurpleMD5HashClass),
+			.class_init = (GClassInitFunc)purple_md5_hash_class_init,
+			.instance_size = sizeof(PurpleMD5Hash),
 		};
+
 		static const GInterfaceInfo hmac_info = {
-			(GInterfaceInitFunc)purple_md5_hash_hmac_function_init,
-			NULL,
-			NULL
+			.interface_init = (GInterfaceInitFunc)purple_md5_hash_hmac_function_init,
 		};
 
-		GType parent = G_TYPE_INVALID;
-#if GLIB_CHECK_VERSION(2,16,0)
-		parent = PURPLE_TYPE_G_HASH;
-#else
-		parent = PURPLE_TYPE_HASH;
-#endif
-
-		type = g_type_register_static(parent,
+		type = g_type_register_static(PURPLE_TYPE_G_HASH,
 									  "PurpleMD5Hash",
 									  &info, 0);
 
@@ -343,13 +63,17 @@ purple_md5_hash_get_gtype(void) {
 	return type;
 }
 
+/**
+ * purple_md5_hash_new:
+ *
+ * Creates a new #PurpleHash that implements the MD5 hashing algorithm.
+ *
+ * Return Value: The MD5 #PurpleHash instance.
+ */
 PurpleHash *
 purple_md5_hash_new(void) {
-#if GLIB_CHECK_VERSION(2,16,0)
 	return g_object_new(PURPLE_TYPE_MD5_HASH,
-		"checksum_type", G_CHECKSUM_MD5,
-		NULL);
-#else
-	return g_object_new(PURPLE_TYPE_MD5_HASH, NULL);
-#endif
+	                    "checksum_type", G_CHECKSUM_MD5,
+	                    NULL);
 }
+
============================================================
--- libpurple/cipher/md5hash.h	d38e5556fdde537a1d8af6f21f31d268e96ac0e7
+++ libpurple/cipher/md5hash.h	d3a99503585816e467b34e82873d2c805ccaac22
@@ -28,22 +28,19 @@
 #include <cipher/ghash.h>
 #include <cipher/hash.h>
 
-#define PURPLE_TYPE_MD5_HASH				(purple_md5_hash_get_gtype())
-#define PURPLE_MD5_HASH(obj)				(G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MD5_HASH, PurpleMD5Hash))
-#define PURPLE_MD5_HASH_CLASS(klass)		(G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MD5_HASH, PurpleMD5HashClass))
-#define PURPLE_IS_MD5_HASH(obj)			(G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MD5_HASH))
-#define PURPLE_IS_MD5_HASH_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE((obj), PURPLE_TYPE_MD5_HASH))
-#define PURPLE_MD5_HASH_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MD5_HASH, PurpleMD5HashClass))
+#define PURPLE_TYPE_MD5_HASH            (purple_md5_hash_get_type())
+#define PURPLE_MD5_HASH(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MD5_HASH, PurpleMD5Hash))
+#define PURPLE_MD5_HASH_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MD5_HASH, PurpleMD5HashClass))
+#define PURPLE_IS_MD5_HASH(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MD5_HASH))
+#define PURPLE_IS_MD5_HASH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((obj), PURPLE_TYPE_MD5_HASH))
+#define PURPLE_MD5_HASH_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MD5_HASH, PurpleMD5HashClass))
 
-typedef struct _PurpleMD5Hash				PurpleMD5Hash;
-typedef struct _PurpleMD5HashClass		PurpleMD5HashClass;
+typedef struct _PurpleMD5Hash           PurpleMD5Hash;
+typedef struct _PurpleMD5HashClass      PurpleMD5HashClass;
 
 struct _PurpleMD5Hash {
-#if GLIB_CHECK_VERSION(2,16,0)
+	/*< private >*/
 	PurpleGHash parent;
-#else
-	PurpleHash parent;
-#endif
 
 	void (*_purple_reserved1)(void);
 	void (*_purple_reserved2)(void);
@@ -52,11 +49,8 @@ struct _PurpleMD5HashClass {
 };
 
 struct _PurpleMD5HashClass {
-#if GLIB_CHECK_VERSION(2,16,0)
+	/*< private >*/
 	PurpleGHashClass parent;
-#else
-	PurpleHashClass parent;
-#endif
 
 	void (*_purple_reserved1)(void);
 	void (*_purple_reserved2)(void);
@@ -66,7 +60,7 @@ G_BEGIN_DECLS
 
 G_BEGIN_DECLS
 
-GType purple_md5_hash_get_gtype(void);
+GType purple_md5_hash_get_type(void);
 
 PurpleHash *purple_md5_hash_new(void);
 


More information about the Commits mailing list