libpurple/ciphers/md5hash.c

Thu, 22 Aug 2013 01:39:34 +0530

author
Ankit Vani <a@nevitus.org>
date
Thu, 22 Aug 2013 01:39:34 +0530
branch
soc.2013.gobjectification
changeset 34890
573a6bcfb8af
parent 34566
e0f887dee077
child 34965
9abd15d6da07
permissions
-rw-r--r--

Merged changes to gchecksum cipher

34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1 /*
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
2 * purple
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
3 *
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
6 * source distribution.
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
7 *
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
11 * (at your option) any later version.
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
12 *
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
16 * GNU General Public License for more details.
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
17 *
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
21 */
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
22 #include "md5hash.h"
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
23
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
24 /*******************************************************************************
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
25 * Structs
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
26 ******************************************************************************/
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
27 #define PURPLE_MD5_HASH_GET_PRIVATE(obj) \
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
28 (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MD5_HASH, PurpleMD5HashPrivate))
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
29
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
30 typedef struct {
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
31 GChecksum *checksum;
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
32 } PurpleMD5HashPrivate;
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
33
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
34 /******************************************************************************
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
35 * Globals
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
36 *****************************************************************************/
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
37 static GObjectClass *parent_class = NULL;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
38
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
39 /******************************************************************************
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
40 * Hash Stuff
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
41 *****************************************************************************/
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
42
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
43 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
44 purple_md5_hash_reset(PurpleHash *hash)
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
45 {
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
46 PurpleMD5Hash *md5_hash = PURPLE_MD5_HASH(hash);
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
47 PurpleMD5HashPrivate *priv = PURPLE_MD5_HASH_GET_PRIVATE(md5_hash);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
48
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
49 g_return_if_fail(priv != NULL);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
50 g_return_if_fail(priv->checksum != NULL);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
51
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
52 g_checksum_reset(priv->checksum);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
53 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
54
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
55 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
56 purple_md5_hash_append(PurpleHash *hash, const guchar *data,
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
57 gsize len)
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
58 {
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
59 PurpleMD5Hash *md5_hash = PURPLE_MD5_HASH(hash);
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
60 PurpleMD5HashPrivate *priv = PURPLE_MD5_HASH_GET_PRIVATE(md5_hash);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
61
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
62 g_return_if_fail(priv != NULL);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
63 g_return_if_fail(priv->checksum != NULL);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
64
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
65 while (len >= G_MAXSSIZE) {
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
66 g_checksum_update(priv->checksum, data, G_MAXSSIZE);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
67 len -= G_MAXSSIZE;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
68 data += G_MAXSSIZE;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
69 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
70
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
71 if (len)
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
72 g_checksum_update(priv->checksum, data, len);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
73 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
74
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
75 static gboolean
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
76 purple_md5_hash_digest(PurpleHash *hash, guchar *digest, size_t buff_len)
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
77 {
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
78 PurpleMD5Hash *md5_hash = PURPLE_MD5_HASH(hash);
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
79 PurpleMD5HashPrivate *priv = PURPLE_MD5_HASH_GET_PRIVATE(md5_hash);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
80
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
81 const gssize required_len = g_checksum_type_get_length(G_CHECKSUM_MD5);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
82 gsize digest_len = buff_len;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
83
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
84 g_return_val_if_fail(priv != NULL, FALSE);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
85 g_return_val_if_fail(priv->checksum != NULL, FALSE);
34890
573a6bcfb8af Merged changes to gchecksum cipher
Ankit Vani <a@nevitus.org>
parents: 34566
diff changeset
86
573a6bcfb8af Merged changes to gchecksum cipher
Ankit Vani <a@nevitus.org>
parents: 34566
diff changeset
87 g_return_val_if_fail(required_len >= 0, FALSE);
573a6bcfb8af Merged changes to gchecksum cipher
Ankit Vani <a@nevitus.org>
parents: 34566
diff changeset
88 g_return_val_if_fail(buff_len >= (gsize)required_len, FALSE);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
89
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
90 g_checksum_get_digest(priv->checksum, digest, &digest_len);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
91
34890
573a6bcfb8af Merged changes to gchecksum cipher
Ankit Vani <a@nevitus.org>
parents: 34566
diff changeset
92 if (digest_len != (gsize)required_len)
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
93 return FALSE;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
94
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
95 purple_md5_hash_reset(hash);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
96
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
97 return TRUE;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
98 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
99
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
100 static size_t
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
101 purple_md5_hash_get_block_size(PurpleHash *hash)
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
102 {
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
103 return 64;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
104 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
105
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
106 static size_t
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
107 purple_md5_hash_get_digest_size(PurpleHash *hash)
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
108 {
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
109 return g_checksum_type_get_length(G_CHECKSUM_MD5);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
110 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
111
34547
45b72366ddde Added get_name method to all PurpleCiphers
Ankit Vani <a@nevitus.org>
parents: 34539
diff changeset
112 static const gchar*
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
113 purple_md5_hash_get_name(PurpleHash *hash)
34547
45b72366ddde Added get_name method to all PurpleCiphers
Ankit Vani <a@nevitus.org>
parents: 34539
diff changeset
114 {
45b72366ddde Added get_name method to all PurpleCiphers
Ankit Vani <a@nevitus.org>
parents: 34539
diff changeset
115 return "md5";
45b72366ddde Added get_name method to all PurpleCiphers
Ankit Vani <a@nevitus.org>
parents: 34539
diff changeset
116 }
45b72366ddde Added get_name method to all PurpleCiphers
Ankit Vani <a@nevitus.org>
parents: 34539
diff changeset
117
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
118 /******************************************************************************
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
119 * Object Stuff
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
120 *****************************************************************************/
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
121
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
122 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
123 purple_md5_hash_finalize(GObject *obj)
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
124 {
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
125 PurpleMD5Hash *md5_hash = PURPLE_MD5_HASH(obj);
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
126 PurpleMD5HashPrivate *priv = PURPLE_MD5_HASH_GET_PRIVATE(md5_hash);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
127
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
128 if (priv->checksum)
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
129 g_checksum_free(priv->checksum);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
130
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
131 parent_class->finalize(obj);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
132 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
133
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
134 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
135 purple_md5_hash_class_init(PurpleMD5HashClass *klass) {
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
136 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
137 PurpleHashClass *hash_class = PURPLE_HASH_CLASS(klass);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
138
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
139 parent_class = g_type_class_peek_parent(klass);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
140
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
141 obj_class->finalize = purple_md5_hash_finalize;
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
142
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
143 hash_class->reset = purple_md5_hash_reset;
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
144 hash_class->reset_state = purple_md5_hash_reset;
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
145 hash_class->append = purple_md5_hash_append;
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
146 hash_class->digest = purple_md5_hash_digest;
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
147 hash_class->get_digest_size = purple_md5_hash_get_digest_size;
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
148 hash_class->get_block_size = purple_md5_hash_get_block_size;
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
149 hash_class->get_name = purple_md5_hash_get_name;
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
150
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
151 g_type_class_add_private(klass, sizeof(PurpleMD5HashPrivate));
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
152 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
153
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
154 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
155 purple_md5_hash_init(PurpleHash *hash)
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
156 {
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
157 PurpleMD5Hash *md5_hash = PURPLE_MD5_HASH(hash);
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
158 PurpleMD5HashPrivate *priv = PURPLE_MD5_HASH_GET_PRIVATE(md5_hash);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
159
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
160 priv->checksum = g_checksum_new(G_CHECKSUM_MD5);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
161
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
162 purple_md5_hash_reset(hash);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
163 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
164
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
165 /******************************************************************************
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
166 * API
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
167 *****************************************************************************/
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
168 GType
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
169 purple_md5_hash_get_gtype(void) {
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
170 static GType type = 0;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
171
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
172 if(type == 0) {
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
173 static const GTypeInfo info = {
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
174 sizeof(PurpleMD5HashClass),
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
175 NULL,
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
176 NULL,
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
177 (GClassInitFunc)purple_md5_hash_class_init,
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
178 NULL,
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
179 NULL,
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
180 sizeof(PurpleMD5Hash),
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
181 0,
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
182 (GInstanceInitFunc)purple_md5_hash_init,
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
183 NULL,
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
184 };
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
185
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
186 type = g_type_register_static(PURPLE_TYPE_HASH,
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
187 "PurpleMD5Hash",
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
188 &info, 0);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
189 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
190
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
191 return type;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
192 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
193
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
194 PurpleHash *
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
195 purple_md5_hash_new(void) {
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
196 return g_object_new(PURPLE_TYPE_MD5_HASH, NULL);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
197 }

mercurial