Wed, 28 Sep 2016 15:46:23 -0500
oscar: Port to use GChecksum instead of PurpleHash
| libpurple/protocols/oscar/family_auth.c | file | annotate | diff | comparison | revisions | |
| libpurple/protocols/oscar/oscar.c | file | annotate | diff | comparison | revisions |
--- a/libpurple/protocols/oscar/family_auth.c Wed Sep 28 15:46:07 2016 -0500 +++ b/libpurple/protocols/oscar/family_auth.c Wed Sep 28 15:46:23 2016 -0500 @@ -31,8 +31,6 @@ #include <ctype.h> -#include "ciphers/md5hash.h" - /* #define USE_XOR_FOR_ICQ */ #ifdef USE_XOR_FOR_ICQ @@ -75,14 +73,15 @@ static int aim_encode_password_md5(const char *password, size_t password_len, const char *key, guint8 *digest) { - PurpleHash *hash; + GChecksum *hash; + gsize digest_len = 16; - hash = purple_md5_hash_new(); - purple_hash_append(hash, (const guchar *)key, strlen(key)); - purple_hash_append(hash, (const guchar *)password, password_len); - purple_hash_append(hash, (const guchar *)AIM_MD5_STRING, strlen(AIM_MD5_STRING)); - purple_hash_digest(hash, 16, digest, NULL); - g_object_unref(hash); + hash = g_checksum_new(G_CHECKSUM_MD5); + g_checksum_update(hash, (const guchar *)key, -1); + g_checksum_update(hash, (const guchar *)password, password_len); + g_checksum_update(hash, (const guchar *)AIM_MD5_STRING, -1); + g_checksum_get_digest(hash, digest, &digest_len); + g_checksum_free(hash); return 0; } @@ -90,19 +89,20 @@ static int aim_encode_password_md5(const char *password, size_t password_len, const char *key, guint8 *digest) { - PurpleHash *hash; + GChecksum *hash; guchar passdigest[16]; + gsize digest_len = 16; - hash = purple_md5_hash_new(); - purple_hash_append(hash, (const guchar *)password, password_len); - purple_hash_digest(hash, passdigest, sizeof(passdigest)); - purple_hash_reset(hash); + hash = g_checksum_new(G_CHECKSUM_MD5); + g_checksum_update(hash, (const guchar *)password, password_len); + g_checksum_get_digest(hash, passdigest, &digest_len); + g_checksum_reset(hash); - purple_hash_append(hash, (const guchar *)key, strlen(key)); - purple_hash_append(hash, passdigest, 16); - purple_hash_append(hash, (const guchar *)AIM_MD5_STRING, strlen(AIM_MD5_STRING)); - purple_hash_digest(hash, digest, 16); - g_object_unref(hash); + g_checksum_update(hash, (const guchar *)key, -1); + g_checksum_update(hash, passdigest, 16); + g_checksum_update(hash, (const guchar *)AIM_MD5_STRING, -1); + g_checksum_get_digest(hash, digest, &digest_len); + g_checksum_free(hash); return 0; }
--- a/libpurple/protocols/oscar/oscar.c Wed Sep 28 15:46:07 2016 -0500 +++ b/libpurple/protocols/oscar/oscar.c Wed Sep 28 15:46:23 2016 -0500 @@ -33,7 +33,6 @@ #include "account.h" #include "accountopt.h" #include "buddyicon.h" -#include "ciphers/md5hash.h" #include "conversation.h" #include "core.h" #include "debug.h" @@ -5238,15 +5237,16 @@ if (img == NULL) { aim_ssi_delicon(od); } else { - PurpleHash *hash; + GChecksum *hash; guchar md5[16]; + gsize digest_len = 16; gconstpointer data = purple_image_get_data(img); size_t len = purple_image_get_size(img); - hash = purple_md5_hash_new(); - purple_hash_append(hash, data, len); - purple_hash_digest(hash, md5, sizeof(md5)); - g_object_unref(hash); + hash = g_checksum_new(G_CHECKSUM_MD5); + g_checksum_update(hash, data, len); + g_checksum_get_digest(hash, md5, &digest_len); + g_checksum_free(hash); aim_ssi_seticon(od, md5, 16); }