| |
1 #include <glib.h> |
| |
2 |
| |
3 #include <purple.h> |
| |
4 |
| |
5 #include "ciphers/sha256hash.h" |
| |
6 |
| |
7 static void |
| |
8 test_sha256hash(gchar *data, gchar *digest) { |
| |
9 PurpleHash *hash = NULL; |
| |
10 gchar cdigest[65]; |
| |
11 gboolean ret = FALSE; |
| |
12 |
| |
13 hash = purple_sha256_hash_new(); |
| |
14 |
| |
15 if(data) { |
| |
16 purple_hash_append(hash, (guchar *)data, strlen(data)); |
| |
17 } else { |
| |
18 gint j; |
| |
19 guchar buff[1000]; |
| |
20 |
| |
21 memset(buff, 'a', 1000); |
| |
22 |
| |
23 for(j = 0; j < 1000; j++) |
| |
24 purple_hash_append(hash, buff, 1000); |
| |
25 } |
| |
26 |
| |
27 ret = purple_hash_digest_to_str(hash, cdigest, sizeof(cdigest)); |
| |
28 |
| |
29 g_assert(ret); |
| |
30 g_assert_cmpstr(digest, ==, cdigest); |
| |
31 } |
| |
32 |
| |
33 static void |
| |
34 test_sha256hash_empty_string(void) { |
| |
35 test_sha256hash("", |
| |
36 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); |
| |
37 } |
| |
38 |
| |
39 static void |
| |
40 test_sha256hash_a(void) { |
| |
41 test_sha256hash("a", |
| |
42 "ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb"); |
| |
43 } |
| |
44 |
| |
45 static void |
| |
46 test_sha256hash_abc(void) { |
| |
47 test_sha256hash("abc", |
| |
48 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"); |
| |
49 } |
| |
50 |
| |
51 static void |
| |
52 test_sha256hash_abcd_gibberish(void) { |
| |
53 test_sha256hash("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", |
| |
54 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"); |
| |
55 } |
| |
56 |
| |
57 static void |
| |
58 test_sha256hash_1000_as_1000_times(void) { |
| |
59 test_sha256hash(NULL, |
| |
60 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0"); |
| |
61 } |
| |
62 |
| |
63 gint |
| |
64 main(gint argc, gchar **argv) { |
| |
65 g_test_init(&argc, &argv, NULL); |
| |
66 |
| |
67 g_test_add_func("/hash/sha256/empty-string", |
| |
68 test_sha256hash_empty_string); |
| |
69 g_test_add_func("/hash/sha256/a", |
| |
70 test_sha256hash_a); |
| |
71 g_test_add_func("/hash/sha256/abc", |
| |
72 test_sha256hash_abc); |
| |
73 g_test_add_func("/hash/sha256/abcd_gibberish", |
| |
74 test_sha256hash_abcd_gibberish); |
| |
75 g_test_add_func("/hash/sha256/1000 a's 1000 times", |
| |
76 test_sha256hash_1000_as_1000_times); |
| |
77 |
| |
78 return g_test_run(); |
| |
79 } |