Mercurial > pidgin
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); |