libpurple/tests/test_sha256.c

Thu, 22 Sep 2016 22:09:22 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 22 Sep 2016 22:09:22 -0500
changeset 38057
41f47eb1aa19
parent 37597
c92c6f818320
permissions
-rw-r--r--

Add our license spiel to a bunch of files

38057
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
1 /*
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
2 * purple
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
3 *
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
6 * source distribution.
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
7 *
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
8 * This program is free software; you can redistribute it and/or modify
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
9 * it under the terms of the GNU General Public License as published by
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
11 * (at your option) any later version.
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
12 *
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
13 * This program is distributed in the hope that it will be useful,
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
16 * GNU General Public License for more details.
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
17 *
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
18 * You should have received a copy of the GNU General Public License
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
19 * along with this program; if not, write to the Free Software
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
21 *
41f47eb1aa19 Add our license spiel to a bunch of files
Gary Kramlich <grim@reaperworld.com>
parents: 37597
diff changeset
22 */
37595
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include <glib.h>
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 #include <purple.h>
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 #include "ciphers/sha256hash.h"
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 static void
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 test_sha256hash(gchar *data, gchar *digest) {
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 PurpleHash *hash = NULL;
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 gchar cdigest[65];
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 gboolean ret = FALSE;
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 hash = purple_sha256_hash_new();
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 if(data) {
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 purple_hash_append(hash, (guchar *)data, strlen(data));
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 } else {
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 gint j;
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 guchar buff[1000];
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 memset(buff, 'a', 1000);
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 for(j = 0; j < 1000; j++)
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 purple_hash_append(hash, buff, 1000);
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 }
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 ret = purple_hash_digest_to_str(hash, cdigest, sizeof(cdigest));
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 g_assert(ret);
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 g_assert_cmpstr(digest, ==, cdigest);
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 }
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 static void
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 test_sha256hash_empty_string(void) {
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 test_sha256hash("",
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 }
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 static void
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 test_sha256hash_a(void) {
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 test_sha256hash("a",
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 "ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb");
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 }
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 static void
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 test_sha256hash_abc(void) {
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 test_sha256hash("abc",
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad");
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 }
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 static void
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 test_sha256hash_abcd_gibberish(void) {
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 test_sha256hash("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1");
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 }
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 static void
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 test_sha256hash_1000_as_1000_times(void) {
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 test_sha256hash(NULL,
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0");
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 }
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 gint
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 main(gint argc, gchar **argv) {
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 g_test_init(&argc, &argv, NULL);
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 g_test_add_func("/hash/sha256/empty-string",
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 test_sha256hash_empty_string);
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 g_test_add_func("/hash/sha256/a",
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 test_sha256hash_a);
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 g_test_add_func("/hash/sha256/abc",
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 test_sha256hash_abc);
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 g_test_add_func("/hash/sha256/abcd_gibberish",
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 test_sha256hash_abcd_gibberish);
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 g_test_add_func("/hash/sha256/1000 a's 1000 times",
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 test_sha256hash_1000_as_1000_times);
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 return g_test_run();
6e53efaa5dfd Add tests for sha256
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 }

mercurial