libpurple/ciphers/md5hash.c

Sat, 11 Jul 2015 14:45:46 -0400

author
James Geboski <jgeboski@gmail.com>
date
Sat, 11 Jul 2015 14:45:46 -0400
branch
facebook
changeset 37293
dc35ba3e7fac
parent 35026
fde23518e1e5
permissions
-rw-r--r--

facebook: fixed all errors being marked as fatal

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 */
35026
fde23518e1e5 Moved PurpleHash to cipher.[ch]
Ankit Vani <a@nevitus.org>
parents: 35020
diff changeset
22 #include "internal.h"
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
23 #include "md5hash.h"
34539
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 /*******************************************************************************
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
26 * Structs
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
27 ******************************************************************************/
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
28 #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
29 (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
30
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
31 typedef struct {
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
32 GChecksum *checksum;
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
33 } PurpleMD5HashPrivate;
34539
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 /******************************************************************************
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
36 * Globals
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
37 *****************************************************************************/
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
38 static GObjectClass *parent_class = NULL;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
39
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
40 /******************************************************************************
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
41 * Hash Stuff
34539
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
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
44 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
45 purple_md5_hash_reset(PurpleHash *hash)
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
46 {
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
47 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
48 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
49
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
50 g_return_if_fail(priv != NULL);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
51 g_return_if_fail(priv->checksum != NULL);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
52
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
53 g_checksum_reset(priv->checksum);
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
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
56 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
57 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
58 gsize len)
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
59 {
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
60 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
61 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
62
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
63 g_return_if_fail(priv != NULL);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
64 g_return_if_fail(priv->checksum != NULL);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
65
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
66 while (len >= G_MAXSSIZE) {
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
67 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
68 len -= G_MAXSSIZE;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
69 data += G_MAXSSIZE;
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
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
72 if (len)
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
73 g_checksum_update(priv->checksum, data, len);
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
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
76 static gboolean
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
77 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
78 {
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
79 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
80 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
81
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
82 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
83 gsize digest_len = buff_len;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
84
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
85 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
86 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
87
573a6bcfb8af Merged changes to gchecksum cipher
Ankit Vani <a@nevitus.org>
parents: 34566
diff changeset
88 g_return_val_if_fail(required_len >= 0, FALSE);
573a6bcfb8af Merged changes to gchecksum cipher
Ankit Vani <a@nevitus.org>
parents: 34566
diff changeset
89 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
90
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
91 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
92
34890
573a6bcfb8af Merged changes to gchecksum cipher
Ankit Vani <a@nevitus.org>
parents: 34566
diff changeset
93 if (digest_len != (gsize)required_len)
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
94 return FALSE;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
95
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
96 purple_md5_hash_reset(hash);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
97
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
98 return TRUE;
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
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
101 static size_t
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
102 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
103 {
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
104 return 64;
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
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
107 static size_t
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
108 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
109 {
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
110 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
111 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
112
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
113 /******************************************************************************
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
114 * Object Stuff
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
115 *****************************************************************************/
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
116
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
117 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
118 purple_md5_hash_finalize(GObject *obj)
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
119 {
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
120 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
121 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
122
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
123 if (priv->checksum)
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
124 g_checksum_free(priv->checksum);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
125
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
126 parent_class->finalize(obj);
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
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
129 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
130 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
131 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
132 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
133
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
134 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
135
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
136 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
137
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
138 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
139 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
140 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
141 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
142 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
143 hash_class->get_block_size = purple_md5_hash_get_block_size;
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
144
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
145 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
146 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
147
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
148 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
149 purple_md5_hash_init(PurpleHash *hash)
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 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
152 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
153
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
154 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
155
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
156 purple_md5_hash_reset(hash);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
157 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
158
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 * API
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
161 *****************************************************************************/
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
162 GType
35020
0ab63ada3cf2 Changed *_get_gtype to *_get_type for ciphers and hashes so gtk-doc can find them
Ankit Vani <a@nevitus.org>
parents: 34965
diff changeset
163 purple_md5_hash_get_type(void) {
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
164 static GType type = 0;
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 if(type == 0) {
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
167 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
168 sizeof(PurpleMD5HashClass),
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
169 NULL,
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
170 NULL,
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
171 (GClassInitFunc)purple_md5_hash_class_init,
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
172 NULL,
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
173 NULL,
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
174 sizeof(PurpleMD5Hash),
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
175 0,
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
176 (GInstanceInitFunc)purple_md5_hash_init,
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
177 NULL,
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
178 };
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
179
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
180 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
181 "PurpleMD5Hash",
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
182 &info, 0);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
183 }
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 return type;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
186 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
187
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
188 PurpleHash *
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
189 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
190 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
191 }

mercurial