libpurple/ciphers/sha1hash.c

Sat, 29 Jun 2013 22:10:18 +0530

author
Ankit Vani <a@nevitus.org>
date
Sat, 29 Jun 2013 22:10:18 +0530
branch
soc.2013.gobjectification
changeset 34678
40a30f74a7b8
parent 34566
e0f887dee077
child 34890
573a6bcfb8af
permissions
-rw-r--r--

Removed purple_conversation_[gs]et_data(). Used g_object_[gs]et_data() instead.
Removed data from PurpleConversationPrivate.

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 "sha1hash.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_SHA1_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_SHA1_HASH, PurpleSHA1HashPrivate))
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 } PurpleSHA1HashPrivate;
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_sha1_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 PurpleSHA1Hash *sha1_hash = PURPLE_SHA1_HASH(hash);
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
47 PurpleSHA1HashPrivate *priv = PURPLE_SHA1_HASH_GET_PRIVATE(sha1_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_sha1_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 PurpleSHA1Hash *sha1_hash = PURPLE_SHA1_HASH(hash);
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
60 PurpleSHA1HashPrivate *priv = PURPLE_SHA1_HASH_GET_PRIVATE(sha1_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_sha1_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 PurpleSHA1Hash *sha1_hash = PURPLE_SHA1_HASH(hash);
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
79 PurpleSHA1HashPrivate *priv = PURPLE_SHA1_HASH_GET_PRIVATE(sha1_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_SHA1);
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);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
86 g_return_val_if_fail(buff_len >= required_len, FALSE);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
87
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
88 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
89
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
90 if (digest_len != required_len)
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
91 return FALSE;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
92
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
93 purple_sha1_hash_reset(hash);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
94
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
95 return TRUE;
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
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
98 static size_t
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
99 purple_sha1_hash_get_block_size(PurpleHash *hash)
34539
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 return 64;
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
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
104 static size_t
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
105 purple_sha1_hash_get_digest_size(PurpleHash *hash)
34539
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 return g_checksum_type_get_length(G_CHECKSUM_SHA1);
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
34547
45b72366ddde Added get_name method to all PurpleCiphers
Ankit Vani <a@nevitus.org>
parents: 34539
diff changeset
110 static const gchar*
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
111 purple_sha1_hash_get_name(PurpleHash *hash)
34547
45b72366ddde Added get_name method to all PurpleCiphers
Ankit Vani <a@nevitus.org>
parents: 34539
diff changeset
112 {
45b72366ddde Added get_name method to all PurpleCiphers
Ankit Vani <a@nevitus.org>
parents: 34539
diff changeset
113 return "sha1";
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
34539
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 * Object Stuff
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
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
120 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
121 purple_sha1_hash_finalize(GObject *obj)
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
122 {
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
123 PurpleSHA1Hash *sha1_hash = PURPLE_SHA1_HASH(obj);
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
124 PurpleSHA1HashPrivate *priv = PURPLE_SHA1_HASH_GET_PRIVATE(sha1_hash);
34539
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 if (priv->checksum)
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
127 g_checksum_free(priv->checksum);
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 parent_class->finalize(obj);
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
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
132 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
133 purple_sha1_hash_class_init(PurpleSHA1HashClass *klass) {
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
134 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
135 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
136
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
137 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
138
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
139 obj_class->finalize = purple_sha1_hash_finalize;
34539
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 hash_class->reset = purple_sha1_hash_reset;
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
142 hash_class->reset_state = purple_sha1_hash_reset;
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
143 hash_class->append = purple_sha1_hash_append;
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
144 hash_class->digest = purple_sha1_hash_digest;
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
145 hash_class->get_digest_size = purple_sha1_hash_get_digest_size;
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
146 hash_class->get_block_size = purple_sha1_hash_get_block_size;
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
147 hash_class->get_name = purple_sha1_hash_get_name;
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
148
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
149 g_type_class_add_private(klass, sizeof(PurpleSHA1HashPrivate));
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
150 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
151
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
152 static void
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
153 purple_sha1_hash_init(PurpleHash *hash)
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
154 {
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
155 PurpleSHA1Hash *sha1_hash = PURPLE_SHA1_HASH(hash);
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
156 PurpleSHA1HashPrivate *priv = PURPLE_SHA1_HASH_GET_PRIVATE(sha1_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 priv->checksum = g_checksum_new(G_CHECKSUM_SHA1);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
159
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
160 purple_sha1_hash_reset(hash);
34539
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
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 * API
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 GType
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
167 purple_sha1_hash_get_gtype(void) {
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
168 static GType type = 0;
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
169
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
170 if(type == 0) {
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
171 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
172 sizeof(PurpleSHA1HashClass),
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
173 NULL,
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
174 NULL,
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
175 (GClassInitFunc)purple_sha1_hash_class_init,
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
176 NULL,
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
177 NULL,
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
178 sizeof(PurpleSHA1Hash),
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
179 0,
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
180 (GInstanceInitFunc)purple_sha1_hash_init,
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
181 NULL,
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
182 };
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
183
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
184 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
185 "PurpleSHA1Hash",
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
186 &info, 0);
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
187 }
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
188
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
189 return type;
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
34566
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
192 PurpleHash *
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
193 purple_sha1_hash_new(void) {
e0f887dee077 Split PurpleCipher into PurpleCipher and PurpleHash. Hashes will subclass PurpleHash.
Ankit Vani <a@nevitus.org>
parents: 34547
diff changeset
194 return g_object_new(PURPLE_TYPE_SHA1_HASH, NULL);
34539
26e080fb06bb GObjectified gchecksum.c as PurpleSHA1Cipher, PurpleSHA256Cipher and PurpleMD5Cipher
Ankit Vani <a@nevitus.org>
parents:
diff changeset
195 }

mercurial