libpurple/hash.c

branch
soc.2013.gobjectification.plugins
changeset 36906
729bdf55b919
parent 36905
d256e7a2ec4c
parent 35026
fde23518e1e5
child 36907
ffc29f017e1e
--- a/libpurple/hash.c	Sun Oct 20 15:11:49 2013 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,241 +0,0 @@
-/* purple
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- */
-#include "internal.h"
-#include "hash.h"
-#include "debug.h"
-
-/******************************************************************************
- * PurpleHash API
- *****************************************************************************/
-GType
-purple_hash_get_type(void) {
-	static GType type = 0;
-
-	if(type == 0) {
-		static const GTypeInfo info = {
-			sizeof(PurpleHashClass),
-			NULL,
-			NULL,
-			NULL,
-			NULL,
-			NULL,
-			sizeof(PurpleHash),
-			0,
-			NULL,
-			NULL
-		};
-
-		type = g_type_register_static(G_TYPE_OBJECT,
-									  "PurpleHash",
-									  &info, G_TYPE_FLAG_ABSTRACT);
-	}
-
-	return type;
-}
-
-/**
- * purple_hash_reset:
- * @hash: The hash to reset
- *
- * Resets a hash to it's default value
- *
- * @note If you have set an IV you will have to set it after resetting
- */
-void
-purple_hash_reset(PurpleHash *hash) {
-	PurpleHashClass *klass = NULL;
-
-	g_return_if_fail(PURPLE_IS_HASH(hash));
-
-	klass = PURPLE_HASH_GET_CLASS(hash);
-
-	if(klass && klass->reset)
-		klass->reset(hash);
-	else
-		purple_debug_warning("hash", "the %s hash does not implement the "
-						"reset method\n",
-						g_type_name(G_TYPE_FROM_INSTANCE(hash)));
-}
-
-/**
- * Resets a hash state to it's default value, but doesn't touch stateless
- * configuration.
- *
- * That means, IV and digest context will be wiped out, but keys, ops or salt
- * will remain untouched.
- */
-void
-purple_hash_reset_state(PurpleHash *hash) {
-	PurpleHashClass *klass = NULL;
-
-	g_return_if_fail(PURPLE_IS_HASH(hash));
-
-	klass = PURPLE_HASH_GET_CLASS(hash);
-
-	if(klass && klass->reset_state)
-		klass->reset_state(hash);
-	else
-		purple_debug_warning("hash", "the %s hash does not implement the "
-						"reset_state method\n",
-						g_type_name(G_TYPE_FROM_INSTANCE(hash)));
-}
-
-/**
- * purple_hash_append:
- * @hash: The hash to append data to
- * @data: The data to append
- * @len: The length of the data
- *
- * Appends data to the hash
- */
-void
-purple_hash_append(PurpleHash *hash, const guchar *data,
-								size_t len)
-{
-	PurpleHashClass *klass = NULL;
-
-	g_return_if_fail(PURPLE_IS_HASH(hash));
-
-	klass = PURPLE_HASH_GET_CLASS(hash);
-
-	if(klass && klass->append)
-		klass->append(hash, data, len);
-	else
-		purple_debug_warning("hash", "the %s hash does not implement the "
-						"append method\n",
-						g_type_name(G_TYPE_FROM_INSTANCE(hash)));
-}
-
-/**
- * purple_hash_digest:
- * @hash: The hash to digest
- * @in_len: The length of the buffer
- * @digest: The return buffer for the digest
- * @out_len: The length of the returned value
- *
- * Digests a hash
- *
- * Return Value: TRUE if the digest was successful, FALSE otherwise.
- */
-gboolean
-purple_hash_digest(PurpleHash *hash, guchar digest[], size_t len)
-{
-	PurpleHashClass *klass = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_HASH(hash), FALSE);
-
-	klass = PURPLE_HASH_GET_CLASS(hash);
-
-	if(klass && klass->digest)
-		return klass->digest(hash, digest, len);
-	else
-		purple_debug_warning("hash", "the %s hash does not implement the "
-						"digest method\n",
-						g_type_name(G_TYPE_FROM_INSTANCE(hash)));
-
-	return FALSE;
-}
-
-/**
- * purple_hash_digest_to_str:
- * @hash: The hash to get a digest from
- * @in_len: The length of the buffer
- * @digest_s: The return buffer for the string digest
- * @out_len: The length of the returned value
- *
- * Converts a guchar digest into a hex string
- *
- * Return Value: TRUE if the digest was successful, FALSE otherwise.
- */
-gboolean
-purple_hash_digest_to_str(PurpleHash *hash, gchar digest_s[], size_t len)
-{
-	/* 8k is a bit excessive, will tweak later. */
-	guchar digest[BUF_LEN * 4];
-	gint n = 0;
-	size_t digest_size;
-
-	g_return_val_if_fail(PURPLE_IS_HASH(hash), FALSE);
-	g_return_val_if_fail(digest_s, FALSE);
-
-	digest_size = purple_hash_get_digest_size(hash);
-
-	g_return_val_if_fail(digest_size <= BUF_LEN * 4, FALSE);
-
-	if(!purple_hash_digest(hash, digest, sizeof(digest)))
-		return FALSE;
-
-	/* Every digest byte occupies 2 chars + the NUL at the end. */
-	g_return_val_if_fail(digest_size * 2 + 1 <= len, FALSE);
-
-	for(n = 0; n < digest_size; n++)
-		sprintf(digest_s + (n * 2), "%02x", digest[n]);
-
-	digest_s[n * 2] = '\0';
-
-	return TRUE;
-}
-
-size_t
-purple_hash_get_digest_size(PurpleHash *hash)
-{
-	PurpleHashClass *klass = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_HASH(hash), FALSE);
-
-	klass = PURPLE_HASH_GET_CLASS(hash);
-
-	if(klass && klass->get_digest_size)
-		return klass->get_digest_size(hash);
-	else
-		purple_debug_warning("hash", "the %s hash does not implement the "
-						"get_digest_size method\n",
-						g_type_name(G_TYPE_FROM_INSTANCE(hash)));
-
-	return FALSE;
-}
-
-/**
- * purple_hash_get_block_size:
- * @hash: The hash whose block size to get
- *
- * Gets the block size of a hash
- *
- * Return Value: The block size of the hash
- */
-size_t
-purple_hash_get_block_size(PurpleHash *hash)
-{
-	PurpleHashClass *klass = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_HASH(hash), -1);
-
-	klass = PURPLE_HASH_GET_CLASS(hash);
-
-	if(klass && klass->get_block_size)
-		return klass->get_block_size(hash);
-	else
-		purple_debug_warning("hash", "the %s hash does not implement the "
-						"get_block_size method\n",
-						g_type_name(G_TYPE_FROM_INSTANCE(hash)));
-
-	return -1;
-}

mercurial