libpurple/protocols/jabber/data.c

changeset 38327
c842a56b9967
parent 35099
9bea64da7c15
child 38341
3da74e727e78
--- a/libpurple/protocols/jabber/data.c	Wed Sep 28 15:45:37 2016 -0500
+++ b/libpurple/protocols/jabber/data.c	Thu Sep 29 20:09:55 2016 -0500
@@ -50,7 +50,7 @@
 	g_return_val_if_fail(type != NULL, NULL);
 
 	data = g_new0(JabberData, 1);
-	checksum = jabber_calculate_data_hash(rawdata, size, "sha1");
+	checksum = g_compute_checksum_for_data(G_CHECKSUM_SHA1, rawdata, size);
 
 	g_snprintf(cid, sizeof(cid), "sha1+%s@bob.xmpp.org", checksum);
 	g_free(checksum);
@@ -238,11 +238,25 @@
 		if (num_sub_parts == 2) {
 			const gchar *hash_algo = sub_parts[0];
 			const gchar *hash_value = sub_parts[1];
-			gchar *digest =
-				jabber_calculate_data_hash(jabber_data_get_data(data),
-				    jabber_data_get_size(data), hash_algo);
+			GChecksumType hash_type;
+			gboolean valid_hash_type = TRUE;
 
-			if (digest) {
+			if (purple_strequal(hash_algo, "sha1"))
+				hash_type = G_CHECKSUM_SHA1;
+			else if (purple_strequal(hash_algo, "sha256"))
+				hash_type = G_CHECKSUM_SHA256;
+			else if (purple_strequal(hash_algo, "sha512"))
+				hash_type = G_CHECKSUM_SHA512;
+			else if (purple_strequal(hash_algo, "md5"))
+				hash_type = G_CHECKSUM_MD5;
+			else
+				valid_hash_type = FALSE;
+
+			if (valid_hash_type) {
+				gchar *digest = g_compute_checksum_for_data(
+					hash_type, jabber_data_get_data(data),
+					jabber_data_get_size(data));
+
 				ret = purple_strequal(digest, hash_value);
 
 				if (!ret)

mercurial