comparison libpurple/tests/test_cipher.c @ 27308:fc5508709e74

Use glib's SHA1, SHA256, and MD5 implementations when available (glib 2.16) These SHA1 and SHA256 implementations do not expose any options, which the built-in ones do (for getting/setting sizeHi, sizeLo, and lenW). Nothing in Pidgin uses those (and I can't think of a decent use case), so I think this is OK. Feel free to disagree. As I mentioned on the mailing list, glib's SHA1 implementation was just under 3x as fast on my system.
author Paul Aurich <paul@darkrain42.org>
date Sat, 04 Jul 2009 23:13:23 +0000
parents fae699fece1f
children c76eb1c6f6ac
comparison
equal deleted inserted replaced
27307:6e250a050ced 27308:fc5508709e74
166 fail_unless(strcmp((digest), cdigest) == 0, NULL); \ 166 fail_unless(strcmp((digest), cdigest) == 0, NULL); \
167 \ 167 \
168 purple_cipher_context_destroy(context); \ 168 purple_cipher_context_destroy(context); \
169 } 169 }
170 170
171 START_TEST(test_sha1_empty_string) {
172 SHA1_TEST("", "da39a3ee5e6b4b0d3255bfef95601890afd80709");
173 }
174 END_TEST
175
171 START_TEST(test_sha1_a) { 176 START_TEST(test_sha1_a) {
172 SHA1_TEST("a", "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8"); 177 SHA1_TEST("a", "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8");
173 } 178 }
174 END_TEST 179 END_TEST
175 180
184 } 189 }
185 END_TEST 190 END_TEST
186 191
187 START_TEST(test_sha1_1000_as_1000_times) { 192 START_TEST(test_sha1_1000_as_1000_times) {
188 SHA1_TEST(NULL, "34aa973cd4c4daa4f61eeb2bdbad27316534016f"); 193 SHA1_TEST(NULL, "34aa973cd4c4daa4f61eeb2bdbad27316534016f");
194 }
195 END_TEST
196
197 /******************************************************************************
198 * SHA-256 Tests
199 *****************************************************************************/
200 #define SHA256_TEST(data, digest) { \
201 PurpleCipher *cipher = NULL; \
202 PurpleCipherContext *context = NULL; \
203 gchar cdigest[65]; \
204 gboolean ret = FALSE; \
205 \
206 cipher = purple_ciphers_find_cipher("sha256"); \
207 context = purple_cipher_context_new(cipher, NULL); \
208 \
209 if((data)) { \
210 purple_cipher_context_append(context, (guchar *)(data), strlen((data))); \
211 } else { \
212 gint j; \
213 guchar buff[1000]; \
214 \
215 memset(buff, 'a', 1000); \
216 \
217 for(j = 0; j < 1000; j++) \
218 purple_cipher_context_append(context, buff, 1000); \
219 } \
220 \
221 ret = purple_cipher_context_digest_to_str(context, sizeof(cdigest), cdigest, \
222 NULL); \
223 \
224 fail_unless(ret == TRUE, NULL); \
225 \
226 fail_unless(strcmp((digest), cdigest) == 0, NULL); \
227 \
228 purple_cipher_context_destroy(context); \
229 }
230
231 START_TEST(test_sha256_empty_string) {
232 SHA256_TEST("", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");
233 }
234 END_TEST
235
236 START_TEST(test_sha256_a) {
237 SHA256_TEST("a", "ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb");
238 }
239 END_TEST
240
241 START_TEST(test_sha256_abc) {
242 SHA256_TEST("abc", "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad");
243 }
244 END_TEST
245
246 START_TEST(test_sha256_abcd_gibberish) {
247 SHA256_TEST("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
248 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1");
249 }
250 END_TEST
251
252 START_TEST(test_sha256_1000_as_1000_times) {
253 SHA256_TEST(NULL, "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0");
189 } 254 }
190 END_TEST 255 END_TEST
191 256
192 /****************************************************************************** 257 /******************************************************************************
193 * DES Tests 258 * DES Tests
724 tcase_add_test(tc, test_md5_1_to_0_8_times); 789 tcase_add_test(tc, test_md5_1_to_0_8_times);
725 suite_add_tcase(s, tc); 790 suite_add_tcase(s, tc);
726 791
727 /* sha1 tests */ 792 /* sha1 tests */
728 tc = tcase_create("SHA1"); 793 tc = tcase_create("SHA1");
794 tcase_add_test(tc, test_sha1_empty_string);
729 tcase_add_test(tc, test_sha1_a); 795 tcase_add_test(tc, test_sha1_a);
730 tcase_add_test(tc, test_sha1_abc); 796 tcase_add_test(tc, test_sha1_abc);
731 tcase_add_test(tc, test_sha1_abcd_gibberish); 797 tcase_add_test(tc, test_sha1_abcd_gibberish);
732 tcase_add_test(tc, test_sha1_1000_as_1000_times); 798 tcase_add_test(tc, test_sha1_1000_as_1000_times);
799 suite_add_tcase(s, tc);
800
801 /* sha256 tests */
802 tc = tcase_create("SHA256");
803 tcase_add_test(tc, test_sha256_empty_string);
804 tcase_add_test(tc, test_sha256_a);
805 tcase_add_test(tc, test_sha256_abc);
806 tcase_add_test(tc, test_sha256_abcd_gibberish);
807 tcase_add_test(tc, test_sha256_1000_as_1000_times);
733 suite_add_tcase(s, tc); 808 suite_add_tcase(s, tc);
734 809
735 /* des tests */ 810 /* des tests */
736 tc = tcase_create("DES"); 811 tc = tcase_create("DES");
737 tcase_add_test(tc, test_des_12345678); 812 tcase_add_test(tc, test_des_12345678);