Thu, 10 Mar 2016 20:54:09 -0600
Finish up the ciphers and hashes
--- a/libpurple/tests/Makefile.am Wed Mar 09 22:23:39 2016 -0600 +++ b/libpurple/tests/Makefile.am Thu Mar 10 20:54:09 2016 -0600 @@ -6,22 +6,35 @@ $(GPLUGIN_LIBS) test_programs=\ - test_md4hash \ - test_md5hash \ - test_sha1hash \ - test_sha256hash + test_des \ + test_des3 \ + test_hmac \ + test_md4 \ + test_md5 \ + test_sha1 \ + test_sha256 -test_md4hash_SOURCES=test_md4hash.c -test_md4hash_LDADD=$(COMMON_LIBS) + +test_des_SOURCES=test_des.c +test_des_LDADD=$(COMMON_LIBS) + +test_des3_SOURCES=test_des3.c +test_des3_LDADD=$(COMMON_LIBS) -test_md5hash_SOURCES=test_md5hash.c -test_md5hash_LDADD=$(COMMON_LIBS) +test_hmac_SOURCES=test_hmac.c +test_hmac_LDADD=$(COMMON_LIBS) + +test_md4_SOURCES=test_md4.c +test_md4_LDADD=$(COMMON_LIBS) -test_sha1hash_SOURCES=test_sha1hash.c -test_sha1hash_LDADD=$(COMMON_LIBS) +test_md5_SOURCES=test_md5.c +test_md5_LDADD=$(COMMON_LIBS) -test_sha256hash_SOURCES=test_sha256hash.c -test_sha256hash_LDADD=$(COMMON_LIBS) +test_sha1_SOURCES=test_sha1.c +test_sha1_LDADD=$(COMMON_LIBS) + +test_sha256_SOURCES=test_sha256.c +test_sha256_LDADD=$(COMMON_LIBS) AM_CPPFLAGS = \ -I$(top_srcdir)/libpurple \
--- a/libpurple/tests/test_cipher.c Wed Mar 09 22:23:39 2016 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,610 +0,0 @@ -#include <glib.h> -#include <check.h> -#include <stdlib.h> -#include <string.h> - -#undef HAVE_DBUS - -#include "tests.h" - -#include "../ciphers/des3cipher.h" -#include "../ciphers/descipher.h" -#include "../ciphers/hmaccipher.h" -#include "../ciphers/md4hash.h" -#include "../ciphers/md5hash.h" -#include "../ciphers/sha1hash.h" -#include "../ciphers/sha256hash.h" - -/****************************************************************************** - * DES Tests - *****************************************************************************/ -#define DES_TEST(in, keyz, out, len) { \ - PurpleCipher *cipher = NULL; \ - guchar answer[len+1]; \ - gint ret = 0; \ - guchar decrypt[len+1] = in; \ - guchar key[8+1] = keyz;\ - guchar encrypt[len+1] = out;\ - \ - cipher = purple_des_cipher_new(); \ - purple_cipher_set_key(cipher, key, 8); \ - \ - ret = purple_cipher_encrypt(cipher, decrypt, len, answer, len); \ - fail_unless(ret == len, NULL); \ - fail_unless(memcmp(encrypt, answer, len) == 0, NULL); \ - \ - ret = purple_cipher_decrypt(cipher, encrypt, len, answer, len); \ - fail_unless(ret == len, NULL); \ - fail_unless(memcmp(decrypt, answer, len) == 0, NULL); \ - \ - g_object_unref(cipher); \ -} - -START_TEST(test_des_12345678) { - DES_TEST("12345678", - "\x3b\x38\x98\x37\x15\x20\xf7\x5e", - "\x06\x22\x05\xac\x6a\x0d\x55\xdd", - 8); -} -END_TEST - -START_TEST(test_des_abcdefgh) { - DES_TEST("abcdefgh", - "\x3b\x38\x98\x37\x15\x20\xf7\x5e", - "\x62\xe0\xc6\x8c\x48\xe4\x75\xed", - 8); -} -END_TEST - -/****************************************************************************** - * DES3 Tests - * See http://csrc.nist.gov/groups/ST/toolkit/examples.html - * and some NULL things I made up - *****************************************************************************/ - -#define DES3_TEST(in, key, iv, out, len, mode) { \ - PurpleCipher *cipher = NULL; \ - guchar answer[len+1]; \ - guchar decrypt[len+1] = in; \ - guchar encrypt[len+1] = out; \ - gint ret = 0; \ - \ - cipher = purple_des3_cipher_new(); \ - purple_cipher_set_key(cipher, (guchar *)key, 24); \ - purple_cipher_set_batch_mode(cipher, (mode)); \ - purple_cipher_set_iv(cipher, (guchar *)iv, 8); \ - \ - ret = purple_cipher_encrypt(cipher, decrypt, len, answer, len); \ - fail_unless(ret == len, NULL); \ - fail_unless(memcmp(encrypt, answer, len) == 0, NULL); \ - \ - ret = purple_cipher_decrypt(cipher, encrypt, len, answer, len); \ - fail_unless(ret == len, NULL); \ - fail_unless(memcmp(decrypt, answer, len) == 0, NULL); \ - \ - g_object_unref(cipher); \ -} - -START_TEST(test_des3_ecb_nist1) { - DES3_TEST( - "\x6B\xC1\xBE\xE2\x2E\x40\x9F\x96\xE9\x3D\x7E\x11\x73\x93\x17\x2A" - "\xAE\x2D\x8A\x57\x1E\x03\xAC\x9C\x9E\xB7\x6F\xAC\x45\xAF\x8E\x51", - "\x01\x23\x45\x67\x89\xAB\xCD\xEF" - "\x23\x45\x67\x89\xAB\xCD\xEF\x01" - "\x45\x67\x89\xAB\xCD\xEF\x01\x23", - "00000000", /* ignored */ - "\x71\x47\x72\xF3\x39\x84\x1D\x34\x26\x7F\xCC\x4B\xD2\x94\x9C\xC3" - "\xEE\x11\xC2\x2A\x57\x6A\x30\x38\x76\x18\x3F\x99\xC0\xB6\xDE\x87", - 32, - PURPLE_CIPHER_BATCH_MODE_ECB); -} -END_TEST - -START_TEST(test_des3_ecb_nist2) { - DES3_TEST( - "\x6B\xC1\xBE\xE2\x2E\x40\x9F\x96\xE9\x3D\x7E\x11\x73\x93\x17\x2A" - "\xAE\x2D\x8A\x57\x1E\x03\xAC\x9C\x9E\xB7\x6F\xAC\x45\xAF\x8E\x51", - "\x01\x23\x45\x67\x89\xAB\xCD\xEF" - "\x23\x45\x67\x89\xAB\xCD\xEF\x01" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF", - "00000000", /* ignored */ - "\x06\xED\xE3\xD8\x28\x84\x09\x0A\xFF\x32\x2C\x19\xF0\x51\x84\x86" - "\x73\x05\x76\x97\x2A\x66\x6E\x58\xB6\xC8\x8C\xF1\x07\x34\x0D\x3D", - 32, - PURPLE_CIPHER_BATCH_MODE_ECB); -} -END_TEST - -START_TEST(test_des3_ecb_null_key) { - DES3_TEST( - "\x16\xf4\xb3\x77\xfd\x4b\x9e\xca", - "\x38\x00\x88\x6a\xef\xcb\x00\xad" - "\x5d\xe5\x29\x00\x7d\x98\x64\x4c" - "\x86\x00\x7b\xd3\xc7\x00\x7b\x32", - "00000000", /* ignored */ - "\xc0\x60\x30\xa1\xb7\x25\x42\x44", - 8, - PURPLE_CIPHER_BATCH_MODE_ECB); -} -END_TEST - -START_TEST(test_des3_ecb_null_text) { - DES3_TEST( - "\x65\x73\x34\xc1\x19\x00\x79\x65", - "\x32\x64\xda\x10\x13\x6a\xfe\x1e" - "\x37\x54\xd1\x2c\x41\x04\x10\x40" - "\xaf\x1c\x75\x2b\x51\x3a\x03\xf5", - "00000000", /* ignored */ - "\xe5\x80\xf6\x12\xf8\x4e\xd9\x6c", - 8, - PURPLE_CIPHER_BATCH_MODE_ECB); -} -END_TEST - -START_TEST(test_des3_ecb_null_key_and_text) { - DES3_TEST( - "\xdf\x7f\x00\x92\xe7\xc1\x49\xd2", - "\x0e\x41\x00\xc4\x8b\xf0\x6e\xa1" - "\x66\x49\x42\x63\x22\x00\xf0\x99" - "\x6b\x22\xc1\x37\x9c\x00\xe4\x8f", - "00000000", /* ignored */ - "\x73\xd8\x1f\x1f\x50\x01\xe4\x79", - 8, - PURPLE_CIPHER_BATCH_MODE_ECB); -} -END_TEST - -START_TEST(test_des3_cbc_nist1) { - DES3_TEST( - "\x6B\xC1\xBE\xE2\x2E\x40\x9F\x96\xE9\x3D\x7E\x11\x73\x93\x17\x2A" - "\xAE\x2D\x8A\x57\x1E\x03\xAC\x9C\x9E\xB7\x6F\xAC\x45\xAF\x8E\x51", - "\x01\x23\x45\x67\x89\xAB\xCD\xEF" - "\x23\x45\x67\x89\xAB\xCD\xEF\x01" - "\x45\x67\x89\xAB\xCD\xEF\x01\x23", - "\xF6\x9F\x24\x45\xDF\x4F\x9B\x17", - "\x20\x79\xC3\xD5\x3A\xA7\x63\xE1\x93\xB7\x9E\x25\x69\xAB\x52\x62" - "\x51\x65\x70\x48\x1F\x25\xB5\x0F\x73\xC0\xBD\xA8\x5C\x8E\x0D\xA7", - 32, - PURPLE_CIPHER_BATCH_MODE_CBC); -} -END_TEST - -START_TEST(test_des3_cbc_nist2) { - DES3_TEST( - "\x6B\xC1\xBE\xE2\x2E\x40\x9F\x96\xE9\x3D\x7E\x11\x73\x93\x17\x2A" - "\xAE\x2D\x8A\x57\x1E\x03\xAC\x9C\x9E\xB7\x6F\xAC\x45\xAF\x8E\x51", - "\x01\x23\x45\x67\x89\xAB\xCD\xEF" - "\x23\x45\x67\x89\xAB\xCD\xEF\x01" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF", - "\xF6\x9F\x24\x45\xDF\x4F\x9B\x17", - "\x74\x01\xCE\x1E\xAB\x6D\x00\x3C\xAF\xF8\x4B\xF4\x7B\x36\xCC\x21" - "\x54\xF0\x23\x8F\x9F\xFE\xCD\x8F\x6A\xCF\x11\x83\x92\xB4\x55\x81", - 32, - PURPLE_CIPHER_BATCH_MODE_CBC); -} -END_TEST - -START_TEST(test_des3_cbc_null_key) { - DES3_TEST( - "\x16\xf4\xb3\x77\xfd\x4b\x9e\xca", - "\x38\x00\x88\x6a\xef\xcb\x00\xad" - "\x5d\xe5\x29\x00\x7d\x98\x64\x4c" - "\x86\x00\x7b\xd3\xc7\x00\x7b\x32", - "\x31\x32\x33\x34\x35\x36\x37\x38", - "\x52\xe7\xde\x96\x39\x87\x87\xdb", - 8, - PURPLE_CIPHER_BATCH_MODE_CBC); -} -END_TEST - -START_TEST(test_des3_cbc_null_text) { - DES3_TEST( - "\x65\x73\x34\xc1\x19\x00\x79\x65", - "\x32\x64\xda\x10\x13\x6a\xfe\x1e" - "\x37\x54\xd1\x2c\x41\x04\x10\x40" - "\xaf\x1c\x75\x2b\x51\x3a\x03\xf5", - "\x7C\xAF\x0D\x57\x1E\x57\x10\xDA", - "\x40\x12\x0e\x00\x85\xff\x6c\xc2", - 8, - PURPLE_CIPHER_BATCH_MODE_CBC); -} -END_TEST - -START_TEST(test_des3_cbc_null_key_and_text) { - DES3_TEST( - "\xdf\x7f\x00\x92\xe7\xc1\x49\xd2", - "\x0e\x41\x00\xc4\x8b\xf0\x6e\xa1" - "\x66\x49\x42\x63\x22\x00\xf0\x99" - "\x6b\x22\xc1\x37\x9c\x00\xe4\x8f", - "\x01\x19\x0D\x2c\x40\x67\x89\x67", - "\xa7\xc1\x10\xbe\x9b\xd5\x8a\x67", - 8, - PURPLE_CIPHER_BATCH_MODE_CBC); -} -END_TEST - -/****************************************************************************** - * HMAC Tests - * See RFC2202 and some other NULL tests I made up - *****************************************************************************/ - -#define HMAC_TEST(data, data_len, key, key_len, type, digest) { \ - PurpleCipher *cipher = NULL; \ - PurpleHash *hash = NULL; \ - gchar cdigest[41]; \ - gboolean ret = FALSE; \ - \ - hash = purple_##type##_hash_new(); \ - cipher = purple_hmac_cipher_new(hash); \ - purple_cipher_set_key(cipher, (guchar *)key, (key_len)); \ - \ - purple_cipher_append(cipher, (guchar *)(data), (data_len)); \ - ret = purple_cipher_digest_to_str(cipher, cdigest, sizeof(cdigest)); \ - \ - fail_unless(ret == TRUE, NULL); \ - fail_unless(strcmp((digest), cdigest) == 0, NULL); \ - \ - g_object_unref(cipher); \ - g_object_unref(hash); \ -} - -/* HMAC MD5 */ - -START_TEST(test_hmac_md5_Hi) { - HMAC_TEST("Hi There", - 8, - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", - 16, - md5, - "9294727a3638bb1c13f48ef8158bfc9d"); -} -END_TEST - -START_TEST(test_hmac_md5_what) { - HMAC_TEST("what do ya want for nothing?", - 28, - "Jefe", - 4, - md5, - "750c783e6ab0b503eaa86e310a5db738"); -} -END_TEST - -START_TEST(test_hmac_md5_dd) { - HMAC_TEST("\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" - "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" - "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" - "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" - "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd", - 50, - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", - 16, - md5, - "56be34521d144c88dbb8c733f0e8b3f6"); -} -END_TEST - -START_TEST(test_hmac_md5_cd) { - HMAC_TEST("\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" - "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" - "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" - "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" - "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd", - 50, - "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a" - "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14" - "\x15\x16\x17\x18\x19", - 25, - md5, - "697eaf0aca3a3aea3a75164746ffaa79"); -} -END_TEST - -START_TEST(test_hmac_md5_truncation) { - HMAC_TEST("Test With Truncation", - 20, - "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c", - 16, - md5, - "56461ef2342edc00f9bab995690efd4c"); -} -END_TEST - -START_TEST(test_hmac_md5_large_key) { - HMAC_TEST("Test Using Larger Than Block-Size Key - Hash Key First", - 54, - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", - 80, - md5, - "6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd"); -} -END_TEST - -START_TEST(test_hmac_md5_large_key_and_data) { - HMAC_TEST("Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data", - 73, - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", - 80, - md5, - "6f630fad67cda0ee1fb1f562db3aa53e"); -} -END_TEST - -START_TEST(test_hmac_md5_null_key) { - HMAC_TEST("Hi There", - 8, - "\x0a\x0b\x00\x0d\x0e\x0f\x1a\x2f\x0b\x0b" - "\x0b\x00\x00\x0b\x0b\x49\x5f\x6e\x0b\x0b", - 20, - md5, - "597bfd644b797a985561eeb03a169e59"); -} -END_TEST - -START_TEST(test_hmac_md5_null_text) { - HMAC_TEST("Hi\x00There", - 8, - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", - 20, - md5, - "70be8e1b7b50dfcc335d6cd7992c564f"); -} -END_TEST - -START_TEST(test_hmac_md5_null_key_and_text) { - HMAC_TEST("Hi\x00Th\x00re", - 8, - "\x0c\x0d\x00\x0f\x10\x1a\x3a\x3a\xe6\x34" - "\x0b\x00\x00\x0b\x0b\x49\x5f\x6e\x0b\x0b", - 20, - md5, - "b31bcbba35a33a067cbba9131cba4889"); -} -END_TEST - -/* HMAC SHA1 */ - -START_TEST(test_hmac_sha1_Hi) { - HMAC_TEST("Hi There", - 8, - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", - 20, - sha1, - "b617318655057264e28bc0b6fb378c8ef146be00"); -} -END_TEST - -START_TEST(test_hmac_sha1_what) { - HMAC_TEST("what do ya want for nothing?", - 28, - "Jefe", - 4, - sha1, - "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79"); -} -END_TEST - -START_TEST(test_hmac_sha1_dd) { - HMAC_TEST("\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" - "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" - "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" - "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" - "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd", - 50, - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", - 20, - sha1, - "125d7342b9ac11cd91a39af48aa17b4f63f175d3"); -} -END_TEST - -START_TEST(test_hmac_sha1_cd) { - HMAC_TEST("\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" - "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" - "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" - "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" - "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd", - 50, - "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a" - "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14" - "\x15\x16\x17\x18\x19", - 25, - sha1, - "4c9007f4026250c6bc8414f9bf50c86c2d7235da"); -} -END_TEST - -START_TEST(test_hmac_sha1_truncation) { - HMAC_TEST("Test With Truncation", - 20, - "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c" - "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c", - 20, - sha1, - "4c1a03424b55e07fe7f27be1d58bb9324a9a5a04"); -} -END_TEST - -START_TEST(test_hmac_sha1_large_key) { - HMAC_TEST("Test Using Larger Than Block-Size Key - Hash Key First", - 54, - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", - 80, - sha1, - "aa4ae5e15272d00e95705637ce8a3b55ed402112"); -} -END_TEST - -START_TEST(test_hmac_sha1_large_key_and_data) { - HMAC_TEST("Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data", - 73, - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", - 80, - sha1, - "e8e99d0f45237d786d6bbaa7965c7808bbff1a91"); -} -END_TEST - -START_TEST(test_hmac_sha1_null_key) { - HMAC_TEST("Hi There", - 8, - "\x0a\x0b\x00\x0d\x0e\x0f\x1a\x2f\x0b\x0b" - "\x0b\x00\x00\x0b\x0b\x49\x5f\x6e\x0b\x0b", - 20, - sha1, - "eb62a2e0e33d300be669c52aab3f591bc960aac5"); -} -END_TEST - -START_TEST(test_hmac_sha1_null_text) { - HMAC_TEST("Hi\x00There", - 8, - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", - 20, - sha1, - "31ca58d849e971e418e3439de2c6f83144b6abb7"); -} -END_TEST - -START_TEST(test_hmac_sha1_null_key_and_text) { - HMAC_TEST("Hi\x00Th\x00re", - 8, - "\x0c\x0d\x00\x0f\x10\x1a\x3a\x3a\xe6\x34" - "\x0b\x00\x00\x0b\x0b\x49\x5f\x6e\x0b\x0b", - 20, - sha1, - "e6b8e2fede87aa09dcb13e554df1435e056eae36"); -} -END_TEST - -/****************************************************************************** - * Suite - *****************************************************************************/ -Suite * -cipher_suite(void) { - Suite *s = suite_create("Cipher Suite"); - TCase *tc = NULL; - - /* md4 tests */ - tc = tcase_create("MD4"); - tcase_add_test(tc, test_md4_empty_string); - tcase_add_test(tc, test_md4_a); - tcase_add_test(tc, test_md4_abc); - tcase_add_test(tc, test_md4_message_digest); - tcase_add_test(tc, test_md4_a_to_z); - tcase_add_test(tc, test_md4_A_to_Z_a_to_z_0_to_9); - tcase_add_test(tc, test_md4_1_to_0_8_times); - suite_add_tcase(s, tc); - - /* md5 tests */ - tc = tcase_create("MD5"); - tcase_add_test(tc, test_md5_empty_string); - tcase_add_test(tc, test_md5_a); - tcase_add_test(tc, test_md5_abc); - tcase_add_test(tc, test_md5_message_digest); - tcase_add_test(tc, test_md5_a_to_z); - tcase_add_test(tc, test_md5_A_to_Z_a_to_z_0_to_9); - tcase_add_test(tc, test_md5_1_to_0_8_times); - suite_add_tcase(s, tc); - - /* sha1 tests */ - tc = tcase_create("SHA1"); - tcase_add_test(tc, test_sha1_empty_string); - tcase_add_test(tc, test_sha1_a); - tcase_add_test(tc, test_sha1_abc); - tcase_add_test(tc, test_sha1_abcd_gibberish); - tcase_add_test(tc, test_sha1_1000_as_1000_times); - suite_add_tcase(s, tc); - - /* sha256 tests */ - tc = tcase_create("SHA256"); - tcase_add_test(tc, test_sha256_empty_string); - tcase_add_test(tc, test_sha256_a); - tcase_add_test(tc, test_sha256_abc); - tcase_add_test(tc, test_sha256_abcd_gibberish); - tcase_add_test(tc, test_sha256_1000_as_1000_times); - suite_add_tcase(s, tc); - - /* des tests */ - tc = tcase_create("DES"); - tcase_add_test(tc, test_des_12345678); - tcase_add_test(tc, test_des_abcdefgh); - suite_add_tcase(s, tc); - - /* des3 ecb tests */ - tc = tcase_create("DES3 ECB"); - tcase_add_test(tc, test_des3_ecb_nist1); - tcase_add_test(tc, test_des3_ecb_nist2); - tcase_add_test(tc, test_des3_ecb_null_key); - tcase_add_test(tc, test_des3_ecb_null_text); - tcase_add_test(tc, test_des3_ecb_null_key_and_text); - suite_add_tcase(s, tc); - /* des3 cbc tests */ - tc = tcase_create("DES3 CBC"); - tcase_add_test(tc, test_des3_cbc_nist1); - tcase_add_test(tc, test_des3_cbc_nist2); - tcase_add_test(tc, test_des3_cbc_null_key); - tcase_add_test(tc, test_des3_cbc_null_text); - tcase_add_test(tc, test_des3_cbc_null_key_and_text); - suite_add_tcase(s, tc); - - /* hmac tests */ - tc = tcase_create("HMAC"); - tcase_add_test(tc, test_hmac_md5_Hi); - tcase_add_test(tc, test_hmac_md5_what); - tcase_add_test(tc, test_hmac_md5_dd); - tcase_add_test(tc, test_hmac_md5_cd); - tcase_add_test(tc, test_hmac_md5_truncation); - tcase_add_test(tc, test_hmac_md5_large_key); - tcase_add_test(tc, test_hmac_md5_large_key_and_data); - tcase_add_test(tc, test_hmac_md5_null_key); - tcase_add_test(tc, test_hmac_md5_null_text); - tcase_add_test(tc, test_hmac_md5_null_key_and_text); - tcase_add_test(tc, test_hmac_sha1_Hi); - tcase_add_test(tc, test_hmac_sha1_what); - tcase_add_test(tc, test_hmac_sha1_dd); - tcase_add_test(tc, test_hmac_sha1_cd); - tcase_add_test(tc, test_hmac_sha1_truncation); - tcase_add_test(tc, test_hmac_sha1_large_key); - tcase_add_test(tc, test_hmac_sha1_large_key_and_data); - tcase_add_test(tc, test_hmac_sha1_null_key); - tcase_add_test(tc, test_hmac_sha1_null_text); - tcase_add_test(tc, test_hmac_sha1_null_key_and_text); - suite_add_tcase(s, tc); - - return s; -} - -
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/tests/test_des.c Thu Mar 10 20:54:09 2016 -0600 @@ -0,0 +1,69 @@ +#include <glib.h> + +#include <purple.h> + +#include "ciphers/descipher.h" + +static void +test_des_cipher(const gchar *in, const gchar *key, const gchar *out, size_t len) { + PurpleCipher *cipher = NULL; + guchar *decrypt = NULL, *encrypt = NULL, *answer = NULL; + size_t ret = 0; + + decrypt = g_memdup(in, len + 1); + encrypt = g_memdup(out, len + 1); + + cipher = purple_des_cipher_new(); + + purple_cipher_set_key(cipher, (const guchar *)key, 8); + + answer = g_new0(guchar, len + 1); + ret = purple_cipher_encrypt(cipher, decrypt, len, answer, len); + g_assert(ret == len); + g_assert_cmpmem(encrypt, len, answer, len); + g_free(answer); + + answer = g_new0(guchar, len + 1); + ret = purple_cipher_decrypt(cipher, encrypt, len, answer, len); + g_assert(ret == len); + g_assert_cmpmem(decrypt, len, answer, len); + g_free(answer); + + g_free(encrypt); + g_free(decrypt); + + g_object_unref(G_OBJECT(cipher)); +} + +static void +test_des_cipher_12345678(void) { + test_des_cipher( + "12345678", + "\x3b\x38\x98\x37\x15\x20\xf7\x5e", + "\x06\x22\x05\xac\x6a\x0d\x55\xdd", + 8 + ); +} + +static void +test_des_cipher_abcdefgh(void) { + test_des_cipher( + "abcdefgh", + "\x3b\x38\x98\x37\x15\x20\xf7\x5e", + "\x62\xe0\xc6\x8c\x48\xe4\x75\xed", + 8 + ); +} + +gint +main(gint argc, gchar **argv) { + g_test_init(&argc, &argv, NULL); + + g_test_add_func("/cipher/des/12345678", + test_des_cipher_12345678); + + g_test_add_func("/cipher/des/abcdefgh", + test_des_cipher_abcdefgh); + + return g_test_run(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/tests/test_des3.c Thu Mar 10 20:54:09 2016 -0600 @@ -0,0 +1,223 @@ +#include <glib.h> + +#include <purple.h> + +#include "ciphers/des3cipher.h" + +/****************************************************************************** + * DES3 Tests + * See http://csrc.nist.gov/groups/ST/toolkit/examples.html + * and some NULL things I made up + *****************************************************************************/ +static void +test_des3_cipher(const gchar *in, const gchar *key, const gchar *iv, + const gchar *out, size_t len, PurpleCipherBatchMode mode) +{ + PurpleCipher *cipher = NULL; + guchar *decrypt = NULL, *encrypt = NULL, *answer = NULL; + size_t ret = 0; + + decrypt = g_memdup(in, len + 1); + encrypt = g_memdup(out, len + 1); + + cipher = purple_des3_cipher_new(); + + purple_cipher_set_key(cipher, (const guchar *)key, 24); + purple_cipher_set_batch_mode(cipher, mode); + purple_cipher_set_iv(cipher, (guchar *)iv, 8); + + answer = g_new0(guchar, len + 1); + ret = purple_cipher_encrypt(cipher, decrypt, len, answer, len); + g_assert(ret == len); + g_assert_cmpmem(encrypt, len, answer, len); + g_free(answer); + + answer = g_new0(guchar, len + 1); + ret = purple_cipher_decrypt(cipher, encrypt, len, answer, len); + g_assert(ret == len); + g_assert_cmpmem(decrypt, len, answer, len); + g_free(answer); + + g_free(encrypt); + g_free(decrypt); + + g_object_unref(G_OBJECT(cipher)); +} + +static void +test_des3_cipher_ecb_nist1(void) { + test_des3_cipher( + "\x6B\xC1\xBE\xE2\x2E\x40\x9F\x96\xE9\x3D\x7E\x11\x73\x93\x17\x2A" + "\xAE\x2D\x8A\x57\x1E\x03\xAC\x9C\x9E\xB7\x6F\xAC\x45\xAF\x8E\x51", + "\x01\x23\x45\x67\x89\xAB\xCD\xEF" + "\x23\x45\x67\x89\xAB\xCD\xEF\x01" + "\x45\x67\x89\xAB\xCD\xEF\x01\x23", + "00000000", /* ignored */ + "\x71\x47\x72\xF3\x39\x84\x1D\x34\x26\x7F\xCC\x4B\xD2\x94\x9C\xC3" + "\xEE\x11\xC2\x2A\x57\x6A\x30\x38\x76\x18\x3F\x99\xC0\xB6\xDE\x87", + 32, + PURPLE_CIPHER_BATCH_MODE_ECB + ); +} + +static void +test_des3_cipher_ecb_nist2(void) { + test_des3_cipher( + "\x6B\xC1\xBE\xE2\x2E\x40\x9F\x96\xE9\x3D\x7E\x11\x73\x93\x17\x2A" + "\xAE\x2D\x8A\x57\x1E\x03\xAC\x9C\x9E\xB7\x6F\xAC\x45\xAF\x8E\x51", + "\x01\x23\x45\x67\x89\xAB\xCD\xEF" + "\x23\x45\x67\x89\xAB\xCD\xEF\x01" + "\x01\x23\x45\x67\x89\xAB\xCD\xEF", + "00000000", /* ignored */ + "\x06\xED\xE3\xD8\x28\x84\x09\x0A\xFF\x32\x2C\x19\xF0\x51\x84\x86" + "\x73\x05\x76\x97\x2A\x66\x6E\x58\xB6\xC8\x8C\xF1\x07\x34\x0D\x3D", + 32, + PURPLE_CIPHER_BATCH_MODE_ECB + ); +} + +static void +test_des3_cipher_ecb_null_key(void) { + test_des3_cipher( + "\x16\xf4\xb3\x77\xfd\x4b\x9e\xca", + "\x38\x00\x88\x6a\xef\xcb\x00\xad" + "\x5d\xe5\x29\x00\x7d\x98\x64\x4c" + "\x86\x00\x7b\xd3\xc7\x00\x7b\x32", + "00000000", /* ignored */ + "\xc0\x60\x30\xa1\xb7\x25\x42\x44", + 8, + PURPLE_CIPHER_BATCH_MODE_ECB + ); +} + +static void +test_des3_cipher_ecb_null_text(void) { + test_des3_cipher( + "\x65\x73\x34\xc1\x19\x00\x79\x65", + "\x32\x64\xda\x10\x13\x6a\xfe\x1e" + "\x37\x54\xd1\x2c\x41\x04\x10\x40" + "\xaf\x1c\x75\x2b\x51\x3a\x03\xf5", + "00000000", /* ignored */ + "\xe5\x80\xf6\x12\xf8\x4e\xd9\x6c", + 8, + PURPLE_CIPHER_BATCH_MODE_ECB + ); +} + +static void +test_des3_cipher_ecb_null_key_and_text(void) { + test_des3_cipher( + "\xdf\x7f\x00\x92\xe7\xc1\x49\xd2", + "\x0e\x41\x00\xc4\x8b\xf0\x6e\xa1" + "\x66\x49\x42\x63\x22\x00\xf0\x99" + "\x6b\x22\xc1\x37\x9c\x00\xe4\x8f", + "00000000", /* ignored */ + "\x73\xd8\x1f\x1f\x50\x01\xe4\x79", + 8, + PURPLE_CIPHER_BATCH_MODE_ECB + ); +} + +static void +test_des3_cipher_cbc_nist1(void) { + test_des3_cipher( + "\x6B\xC1\xBE\xE2\x2E\x40\x9F\x96\xE9\x3D\x7E\x11\x73\x93\x17\x2A" + "\xAE\x2D\x8A\x57\x1E\x03\xAC\x9C\x9E\xB7\x6F\xAC\x45\xAF\x8E\x51", + "\x01\x23\x45\x67\x89\xAB\xCD\xEF" + "\x23\x45\x67\x89\xAB\xCD\xEF\x01" + "\x45\x67\x89\xAB\xCD\xEF\x01\x23", + "\xF6\x9F\x24\x45\xDF\x4F\x9B\x17", + "\x20\x79\xC3\xD5\x3A\xA7\x63\xE1\x93\xB7\x9E\x25\x69\xAB\x52\x62" + "\x51\x65\x70\x48\x1F\x25\xB5\x0F\x73\xC0\xBD\xA8\x5C\x8E\x0D\xA7", + 32, + PURPLE_CIPHER_BATCH_MODE_CBC + ); +} + +static void +test_des3_cipher_cbc_nist2(void) { + test_des3_cipher( + "\x6B\xC1\xBE\xE2\x2E\x40\x9F\x96\xE9\x3D\x7E\x11\x73\x93\x17\x2A" + "\xAE\x2D\x8A\x57\x1E\x03\xAC\x9C\x9E\xB7\x6F\xAC\x45\xAF\x8E\x51", + "\x01\x23\x45\x67\x89\xAB\xCD\xEF" + "\x23\x45\x67\x89\xAB\xCD\xEF\x01" + "\x01\x23\x45\x67\x89\xAB\xCD\xEF", + "\xF6\x9F\x24\x45\xDF\x4F\x9B\x17", + "\x74\x01\xCE\x1E\xAB\x6D\x00\x3C\xAF\xF8\x4B\xF4\x7B\x36\xCC\x21" + "\x54\xF0\x23\x8F\x9F\xFE\xCD\x8F\x6A\xCF\x11\x83\x92\xB4\x55\x81", + 32, + PURPLE_CIPHER_BATCH_MODE_CBC + ); +} + +static void +test_des3_cipher_cbc_null_key(void) { + test_des3_cipher( + "\x16\xf4\xb3\x77\xfd\x4b\x9e\xca", + "\x38\x00\x88\x6a\xef\xcb\x00\xad" + "\x5d\xe5\x29\x00\x7d\x98\x64\x4c" + "\x86\x00\x7b\xd3\xc7\x00\x7b\x32", + "\x31\x32\x33\x34\x35\x36\x37\x38", + "\x52\xe7\xde\x96\x39\x87\x87\xdb", + 8, + PURPLE_CIPHER_BATCH_MODE_CBC + ); +} + +static void +test_des3_cipher_cbc_null_text(void) { + test_des3_cipher( + "\x65\x73\x34\xc1\x19\x00\x79\x65", + "\x32\x64\xda\x10\x13\x6a\xfe\x1e" + "\x37\x54\xd1\x2c\x41\x04\x10\x40" + "\xaf\x1c\x75\x2b\x51\x3a\x03\xf5", + "\x7C\xAF\x0D\x57\x1E\x57\x10\xDA", + "\x40\x12\x0e\x00\x85\xff\x6c\xc2", + 8, + PURPLE_CIPHER_BATCH_MODE_CBC + ); +} + +static void +test_des3_cipher_cbc_null_key_and_text(void) { + test_des3_cipher( + "\xdf\x7f\x00\x92\xe7\xc1\x49\xd2", + "\x0e\x41\x00\xc4\x8b\xf0\x6e\xa1" + "\x66\x49\x42\x63\x22\x00\xf0\x99" + "\x6b\x22\xc1\x37\x9c\x00\xe4\x8f", + "\x01\x19\x0D\x2c\x40\x67\x89\x67", + "\xa7\xc1\x10\xbe\x9b\xd5\x8a\x67", + 8, + PURPLE_CIPHER_BATCH_MODE_CBC + ); +} + + +gint +main(gint argc, gchar **argv) { + g_test_init(&argc, &argv, NULL); + + g_test_add_func("/cipher/des3/ecb nist1", + test_des3_cipher_ecb_nist1); + g_test_add_func("/cipher/des3/ecb nist2", + test_des3_cipher_ecb_nist2); + g_test_add_func("/cipher/des3/ecb null key", + test_des3_cipher_ecb_null_key); + g_test_add_func("/cipher/des3/ecb null text", + test_des3_cipher_ecb_null_text); + g_test_add_func("/cipher/des3/ebc null key and text", + test_des3_cipher_ecb_null_key_and_text); + + g_test_add_func("/cipher/des3/cbc nist1", + test_des3_cipher_cbc_nist1); + g_test_add_func("/cipher/des3/cbc nist2", + test_des3_cipher_cbc_nist2); + g_test_add_func("/cipher/des3/cbc null key", + test_des3_cipher_cbc_null_key); + g_test_add_func("/cipher/des3/cbc null text", + test_des3_cipher_cbc_null_text); + g_test_add_func("/cipher/des3/cbc null key and text", + test_des3_cipher_cbc_null_key_and_text); + + return g_test_run(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/tests/test_hmac.c Thu Mar 10 20:54:09 2016 -0600 @@ -0,0 +1,379 @@ +#include <glib.h> + +#include <purple.h> + +#include "ciphers/hmaccipher.h" +#include "ciphers/md5hash.h" +#include "ciphers/sha1hash.h" + +/****************************************************************************** + * HMAC Tests + * See RFC2202 and some other NULL tests I made up + *****************************************************************************/ +static void +test_hmac(gchar *data, size_t data_len, + const gchar *key, size_t key_len, + PurpleHash *hash, const gchar *digest) +{ + PurpleCipher *cipher = NULL; + gchar cdigest[41]; + gboolean ret = FALSE; + + cipher = purple_hmac_cipher_new(hash); + purple_cipher_set_key(cipher, (guchar *)key, key_len); + + purple_cipher_append(cipher, (guchar *)data, data_len); + ret = purple_cipher_digest_to_str(cipher, cdigest, sizeof(cdigest)); + + g_assert(ret); + g_assert_cmpstr(digest, ==, cdigest); + + g_object_unref(G_OBJECT(cipher)); + g_object_unref(G_OBJECT(hash)); +} + +static void +test_hmac_md5_hi(void) { + test_hmac( + "Hi There", + 8, + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", + 16, + purple_md5_hash_new(), + "9294727a3638bb1c13f48ef8158bfc9d" + ); +} + +static void +test_hmac_md5_what(void) { + test_hmac( + "what do ya want for nothing?", + 28, + "Jefe", + 4, + purple_md5_hash_new(), + "750c783e6ab0b503eaa86e310a5db738" + ); +} + +static void +test_hmac_md5_dd(void) { + test_hmac( + "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" + "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" + "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" + "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" + "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd", + 50, + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", + 16, + purple_md5_hash_new(), + "56be34521d144c88dbb8c733f0e8b3f6" + ); +} + +static void +test_hmac_md5_cd(void) { + test_hmac( + "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" + "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" + "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" + "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" + "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd", + 50, + "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a" + "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14" + "\x15\x16\x17\x18\x19", + 25, + purple_md5_hash_new(), + "697eaf0aca3a3aea3a75164746ffaa79" + ); +} + +static void +test_hmac_md5_truncation(void) { + test_hmac( + "Test With Truncation", + 20, + "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c", + 16, + purple_md5_hash_new(), + "56461ef2342edc00f9bab995690efd4c" + ); +} + +static void +test_hmac_md5_large_key(void) { + test_hmac( + "Test Using Larger Than Block-Size Key - Hash Key First", + 54, + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", + 80, + purple_md5_hash_new(), + "6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd" + ); +} + +static void +test_hmac_md5_large_key_and_data(void) { + test_hmac( + "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data", + 73, + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", + 80, + purple_md5_hash_new(), + "6f630fad67cda0ee1fb1f562db3aa53e" + ); +} + +static void +test_hmac_md5_null_key(void) { + test_hmac( + "Hi There", + 8, + "\x0a\x0b\x00\x0d\x0e\x0f\x1a\x2f\x0b\x0b" + "\x0b\x00\x00\x0b\x0b\x49\x5f\x6e\x0b\x0b", + 20, + purple_md5_hash_new(), + "597bfd644b797a985561eeb03a169e59" + ); +} + +static void +test_hmac_md5_null_text(void) { + test_hmac( + "Hi\x00There", + 8, + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", + 20, + purple_md5_hash_new(), + "70be8e1b7b50dfcc335d6cd7992c564f" + ); +} + +static void +test_hmac_md5_null_key_and_text(void) { + test_hmac( + "Hi\x00Th\x00re", + 8, + "\x0c\x0d\x00\x0f\x10\x1a\x3a\x3a\xe6\x34" + "\x0b\x00\x00\x0b\x0b\x49\x5f\x6e\x0b\x0b", + 20, + purple_md5_hash_new(), + "b31bcbba35a33a067cbba9131cba4889" + ); +} + +static void +test_hmac_sha1_hi(void) { + test_hmac( + "Hi There", + 8, + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", + 20, + purple_sha1_hash_new(), + "b617318655057264e28bc0b6fb378c8ef146be00" + ); +} + +static void +test_hmac_sha1_what(void) { + test_hmac( + "what do ya want for nothing?", + 28, + "Jefe", + 4, + purple_sha1_hash_new(), + "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79" + ); +} + +static void +test_hmac_sha1_dd(void) { + test_hmac( + "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" + "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" + "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" + "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd" + "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd", + 50, + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", + 20, + purple_sha1_hash_new(), + "125d7342b9ac11cd91a39af48aa17b4f63f175d3" + ); +} + +static void +test_hmac_sha1_cd(void) { + test_hmac( + "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" + "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" + "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" + "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd" + "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd", + 50, + "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a" + "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14" + "\x15\x16\x17\x18\x19", + 25, + purple_sha1_hash_new(), + "4c9007f4026250c6bc8414f9bf50c86c2d7235da" + ); +} + +static void +test_hmac_sha1_truncation(void) { + test_hmac( + "Test With Truncation", + 20, + "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c" + "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c", + 20, + purple_sha1_hash_new(), + "4c1a03424b55e07fe7f27be1d58bb9324a9a5a04" + ); +} + +static void +test_hmac_sha1_large_key(void) { + test_hmac( + "Test Using Larger Than Block-Size Key - Hash Key First", + 54, + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", + 80, + purple_sha1_hash_new(), + "aa4ae5e15272d00e95705637ce8a3b55ed402112" + ); +} + +static void +test_hmac_sha1_large_key_and_data(void) { + test_hmac( + "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data", + 73, + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa" + "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", + 80, + purple_sha1_hash_new(), + "e8e99d0f45237d786d6bbaa7965c7808bbff1a91" + ); +} + +static void +test_hmac_sha1_null_key(void) { + test_hmac( + "Hi There", + 8, + "\x0a\x0b\x00\x0d\x0e\x0f\x1a\x2f\x0b\x0b" + "\x0b\x00\x00\x0b\x0b\x49\x5f\x6e\x0b\x0b", + 20, + purple_sha1_hash_new(), + "eb62a2e0e33d300be669c52aab3f591bc960aac5" + ); +} + +static void +test_hmac_sha1_null_text(void) { + test_hmac( + "Hi\x00There", + 8, + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b" + "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", + 20, + purple_sha1_hash_new(), + "31ca58d849e971e418e3439de2c6f83144b6abb7" + ); +} + +static void +test_hmac_sha1_null_key_and_text(void) { + test_hmac( + "Hi\x00Th\x00re", + 8, + "\x0c\x0d\x00\x0f\x10\x1a\x3a\x3a\xe6\x34" + "\x0b\x00\x00\x0b\x0b\x49\x5f\x6e\x0b\x0b", + 20, + purple_sha1_hash_new(), + "e6b8e2fede87aa09dcb13e554df1435e056eae36" + ); +} + +gint +main(gint argc, gchar **argv) { + g_test_init(&argc, &argv, NULL); + + g_test_add_func("/hmac/md5/hi", + test_hmac_md5_hi); + g_test_add_func("/hmac/md5/what", + test_hmac_md5_what); + g_test_add_func("/hmac/md5/dd", + test_hmac_md5_dd); + g_test_add_func("/hmac/md5/cd", + test_hmac_md5_cd); + g_test_add_func("/hmac/md5/truncation", + test_hmac_md5_truncation); + g_test_add_func("/hmac/md5/large key", + test_hmac_md5_large_key); + g_test_add_func("/hmac/md5/large key and data", + test_hmac_md5_large_key_and_data); + g_test_add_func("/hmac/md5/null key", + test_hmac_md5_null_key); + g_test_add_func("/hmac/md5/null text", + test_hmac_md5_null_text); + g_test_add_func("/hmac/md5/null key and text", + test_hmac_md5_null_key_and_text); + + g_test_add_func("/hmac/sha1/hi", + test_hmac_sha1_hi); + g_test_add_func("/hmac/sha1/what", + test_hmac_sha1_what); + g_test_add_func("/hmac/sha1/dd", + test_hmac_sha1_dd); + g_test_add_func("/hmac/sha1/cd", + test_hmac_sha1_cd); + g_test_add_func("/hmac/sha1/truncation", + test_hmac_sha1_truncation); + g_test_add_func("/hmac/sha1/large key", + test_hmac_sha1_large_key); + g_test_add_func("/hmac/sha1/large key and data", + test_hmac_sha1_large_key_and_data); + g_test_add_func("/hmac/sha1/null key", + test_hmac_sha1_null_key); + g_test_add_func("/hmac/sha1/null text", + test_hmac_sha1_null_text); + g_test_add_func("/hmac/sha1/null key and text", + test_hmac_sha1_null_key_and_text); + + return g_test_run(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/tests/test_md4.c Thu Mar 10 20:54:09 2016 -0600 @@ -0,0 +1,85 @@ +#include <glib.h> + +#include <purple.h> + +#include "ciphers/md4hash.h" + +static void +test_md4hash(gchar *data, gchar *digest) { + PurpleHash *hash = NULL; + gchar cdigest[33]; + gboolean ret = FALSE; + + hash = purple_md4_hash_new(); + + purple_hash_append(hash, (guchar *)data, strlen(data)); + + ret = purple_hash_digest_to_str(hash, cdigest, sizeof(cdigest)); + + g_assert(ret); + g_assert_cmpstr(digest, ==, cdigest); +} + +static void +test_md4hash_empty_string(void) { + test_md4hash("", + "31d6cfe0d16ae931b73c59d7e0c089c0"); +} + +static void +test_md4hash_a(void) { + test_md4hash("a", + "bde52cb31de33e46245e05fbdbd6fb24"); +} + +static void +test_md4hash_abc(void) { + test_md4hash("abc", + "a448017aaf21d8525fc10ae87aa6729d"); +} + +static void +test_md4hash_message_digest(void) { + test_md4hash("message digest", + "d9130a8164549fe818874806e1c7014b"); +} + +static void +test_md4hash_a_to_z(void) { + test_md4hash("abcdefghijklmnopqrstuvwxyz", + "d79e1c308aa5bbcdeea8ed63df412da9"); +} + +static void +test_md4hash_A_to_Z_a_to_z_0_to_9(void) { + test_md4hash("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + "043f8582f241db351ce627e153e7f0e4"); +} + +static void +test_md4hash_1_to_0_eight_times(void) { + test_md4hash("12345678901234567890123456789012345678901234567890123456789012345678901234567890", + "e33b4ddc9c38f2199c3e7b164fcc0536"); +} + +gint +main(gint argc, gchar **argv) { + g_test_init(&argc, &argv, NULL); + + g_test_add_func("/hash/md4/empty-string", + test_md4hash_empty_string); + g_test_add_func("/hash/md4/a", + test_md4hash_a); + g_test_add_func("/hash/md4/abc", + test_md4hash_abc); + g_test_add_func("/hash/md4/message digest", + test_md4hash_message_digest); + g_test_add_func("/hash/md4/a to z", + test_md4hash_a_to_z); + g_test_add_func("/hash/md4/A to Z, a to z, 0 to 9" , + test_md4hash_A_to_Z_a_to_z_0_to_9); + g_test_add_func("/hash/md4/1 to 0 eight times", + test_md4hash_1_to_0_eight_times); + + return g_test_run(); +}
--- a/libpurple/tests/test_md4hash.c Wed Mar 09 22:23:39 2016 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -#include <glib.h> - -#include <purple.h> - -#include "ciphers/md4hash.h" - -static void -test_md4hash(gchar *data, gchar *digest) { - PurpleHash *hash = NULL; - gchar cdigest[33]; - gboolean ret = FALSE; - - hash = purple_md4_hash_new(); - - purple_hash_append(hash, (guchar *)data, strlen(data)); - - ret = purple_hash_digest_to_str(hash, cdigest, sizeof(cdigest)); - - g_assert(ret); - g_assert_cmpstr(digest, ==, cdigest); -} - -static void -test_md4hash_empty_string(void) { - test_md4hash("", - "31d6cfe0d16ae931b73c59d7e0c089c0"); -} - -static void -test_md4hash_a(void) { - test_md4hash("a", - "bde52cb31de33e46245e05fbdbd6fb24"); -} - -static void -test_md4hash_abc(void) { - test_md4hash("abc", - "a448017aaf21d8525fc10ae87aa6729d"); -} - -static void -test_md4hash_message_digest(void) { - test_md4hash("message digest", - "d9130a8164549fe818874806e1c7014b"); -} - -static void -test_md4hash_a_to_z(void) { - test_md4hash("abcdefghijklmnopqrstuvwxyz", - "d79e1c308aa5bbcdeea8ed63df412da9"); -} - -static void -test_md4hash_A_to_Z_a_to_z_0_to_9(void) { - test_md4hash("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - "043f8582f241db351ce627e153e7f0e4"); -} - -static void -test_md4hash_1_to_0_eight_times(void) { - test_md4hash("12345678901234567890123456789012345678901234567890123456789012345678901234567890", - "e33b4ddc9c38f2199c3e7b164fcc0536"); -} - -gint -main(gint argc, gchar **argv) { - g_test_init(&argc, &argv, NULL); - - g_test_add_func("/hash/md4/empty-string", - test_md4hash_empty_string); - g_test_add_func("/hash/md4/a", - test_md4hash_a); - g_test_add_func("/hash/md4/abc", - test_md4hash_abc); - g_test_add_func("/hash/md4/message digest", - test_md4hash_message_digest); - g_test_add_func("/hash/md4/a to z", - test_md4hash_a_to_z); - g_test_add_func("/hash/md4/A to Z, a to z, 0 to 9" , - test_md4hash_A_to_Z_a_to_z_0_to_9); - g_test_add_func("/hash/md4/1 to 0 eight times", - test_md4hash_1_to_0_eight_times); - - return g_test_run(); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/tests/test_md5.c Thu Mar 10 20:54:09 2016 -0600 @@ -0,0 +1,85 @@ +#include <glib.h> + +#include <purple.h> + +#include "ciphers/md5hash.h" + +static void +test_md5hash(gchar *data, gchar *digest) { + PurpleHash *hash = NULL; + gchar cdigest[33]; + gboolean ret = FALSE; + + hash = purple_md5_hash_new(); + + purple_hash_append(hash, (guchar *)data, strlen(data)); + + ret = purple_hash_digest_to_str(hash, cdigest, sizeof(cdigest)); + + g_assert(ret); + g_assert_cmpstr(digest, ==, cdigest); +} + +static void +test_md5hash_empty_string(void) { + test_md5hash("", + "d41d8cd98f00b204e9800998ecf8427e"); +} + +static void +test_md5hash_a(void) { + test_md5hash("a", + "0cc175b9c0f1b6a831c399e269772661"); +} + +static void +test_md5hash_abc(void) { + test_md5hash("abc", + "900150983cd24fb0d6963f7d28e17f72"); +} + +static void +test_md5hash_message_digest(void) { + test_md5hash("message digest", + "f96b697d7cb7938d525a2f31aaf161d0"); +} + +static void +test_md5hash_a_to_z(void) { + test_md5hash("abcdefghijklmnopqrstuvwxyz", + "c3fcd3d76192e4007dfb496cca67e13b"); +} + +static void +test_md5hash_A_to_Z_a_to_z_0_to_9(void) { + test_md5hash("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + "d174ab98d277d9f5a5611c2c9f419d9f"); +} + +static void +test_md5hash_1_to_0_eight_times(void) { + test_md5hash("12345678901234567890123456789012345678901234567890123456789012345678901234567890", + "57edf4a22be3c955ac49da2e2107b67a"); +} + +gint +main(gint argc, gchar **argv) { + g_test_init(&argc, &argv, NULL); + + g_test_add_func("/hash/md5/empty-string", + test_md5hash_empty_string); + g_test_add_func("/hash/md5/a", + test_md5hash_a); + g_test_add_func("/hash/md5/abc", + test_md5hash_abc); + g_test_add_func("/hash/md5/message digest", + test_md5hash_message_digest); + g_test_add_func("/hash/md5/a to z", + test_md5hash_a_to_z); + g_test_add_func("/hash/md5/A to Z, a to z, 0 to 9" , + test_md5hash_A_to_Z_a_to_z_0_to_9); + g_test_add_func("/hash/md5/1 to 0 eight times", + test_md5hash_1_to_0_eight_times); + + return g_test_run(); +}
--- a/libpurple/tests/test_md5hash.c Wed Mar 09 22:23:39 2016 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -#include <glib.h> - -#include <purple.h> - -#include "ciphers/md5hash.h" - -static void -test_md5hash(gchar *data, gchar *digest) { - PurpleHash *hash = NULL; - gchar cdigest[33]; - gboolean ret = FALSE; - - hash = purple_md5_hash_new(); - - purple_hash_append(hash, (guchar *)data, strlen(data)); - - ret = purple_hash_digest_to_str(hash, cdigest, sizeof(cdigest)); - - g_assert(ret); - g_assert_cmpstr(digest, ==, cdigest); -} - -static void -test_md5hash_empty_string(void) { - test_md5hash("", - "d41d8cd98f00b204e9800998ecf8427e"); -} - -static void -test_md5hash_a(void) { - test_md5hash("a", - "0cc175b9c0f1b6a831c399e269772661"); -} - -static void -test_md5hash_abc(void) { - test_md5hash("abc", - "900150983cd24fb0d6963f7d28e17f72"); -} - -static void -test_md5hash_message_digest(void) { - test_md5hash("message digest", - "f96b697d7cb7938d525a2f31aaf161d0"); -} - -static void -test_md5hash_a_to_z(void) { - test_md5hash("abcdefghijklmnopqrstuvwxyz", - "c3fcd3d76192e4007dfb496cca67e13b"); -} - -static void -test_md5hash_A_to_Z_a_to_z_0_to_9(void) { - test_md5hash("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - "d174ab98d277d9f5a5611c2c9f419d9f"); -} - -static void -test_md5hash_1_to_0_eight_times(void) { - test_md5hash("12345678901234567890123456789012345678901234567890123456789012345678901234567890", - "57edf4a22be3c955ac49da2e2107b67a"); -} - -gint -main(gint argc, gchar **argv) { - g_test_init(&argc, &argv, NULL); - - g_test_add_func("/hash/md5/empty-string", - test_md5hash_empty_string); - g_test_add_func("/hash/md5/a", - test_md5hash_a); - g_test_add_func("/hash/md5/abc", - test_md5hash_abc); - g_test_add_func("/hash/md5/message digest", - test_md5hash_message_digest); - g_test_add_func("/hash/md5/a to z", - test_md5hash_a_to_z); - g_test_add_func("/hash/md5/A to Z, a to z, 0 to 9" , - test_md5hash_A_to_Z_a_to_z_0_to_9); - g_test_add_func("/hash/md5/1 to 0 eight times", - test_md5hash_1_to_0_eight_times); - - return g_test_run(); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/tests/test_sha1.c Thu Mar 10 20:54:09 2016 -0600 @@ -0,0 +1,79 @@ +#include <glib.h> + +#include <purple.h> + +#include "ciphers/sha1hash.h" + +static void +test_sha1hash(gchar *data, gchar *digest) { + PurpleHash *hash = NULL; + gchar cdigest[41]; + gboolean ret = FALSE; + + hash = purple_sha1_hash_new(); + + if(data) { + purple_hash_append(hash, (guchar *)data, strlen(data)); + } else { + gint j; + guchar buff[1000]; + + memset(buff, 'a', 1000); + + for(j = 0; j < 1000; j++) + purple_hash_append(hash, buff, 1000); + } + + ret = purple_hash_digest_to_str(hash, cdigest, sizeof(cdigest)); + + g_assert(ret); + g_assert_cmpstr(digest, ==, cdigest); +} + +static void +test_sha1hash_empty_string(void) { + test_sha1hash("", + "da39a3ee5e6b4b0d3255bfef95601890afd80709"); +} + +static void +test_sha1hash_a(void) { + test_sha1hash("a", + "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8"); +} + +static void +test_sha1hash_abc(void) { + test_sha1hash("abc", + "a9993e364706816aba3e25717850c26c9cd0d89d"); +} + +static void +test_sha1hash_abcd_gibberish(void) { + test_sha1hash("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "84983e441c3bd26ebaae4aa1f95129e5e54670f1"); +} + +static void +test_sha1hash_1000_as_1000_times(void) { + test_sha1hash(NULL, + "34aa973cd4c4daa4f61eeb2bdbad27316534016f"); +} + +gint +main(gint argc, gchar **argv) { + g_test_init(&argc, &argv, NULL); + + g_test_add_func("/hash/sha1/empty-string", + test_sha1hash_empty_string); + g_test_add_func("/hash/sha1/a", + test_sha1hash_a); + g_test_add_func("/hash/sha1/abc", + test_sha1hash_abc); + g_test_add_func("/hash/sha1/abcd_gibberish", + test_sha1hash_abcd_gibberish); + g_test_add_func("/hash/sha1/1000 a's 1000 times", + test_sha1hash_1000_as_1000_times); + + return g_test_run(); +}
--- a/libpurple/tests/test_sha1hash.c Wed Mar 09 22:23:39 2016 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -#include <glib.h> - -#include <purple.h> - -#include "ciphers/sha1hash.h" - -static void -test_sha1hash(gchar *data, gchar *digest) { - PurpleHash *hash = NULL; - gchar cdigest[41]; - gboolean ret = FALSE; - - hash = purple_sha1_hash_new(); - - if(data) { - purple_hash_append(hash, (guchar *)data, strlen(data)); - } else { - gint j; - guchar buff[1000]; - - memset(buff, 'a', 1000); - - for(j = 0; j < 1000; j++) - purple_hash_append(hash, buff, 1000); - } - - ret = purple_hash_digest_to_str(hash, cdigest, sizeof(cdigest)); - - g_assert(ret); - g_assert_cmpstr(digest, ==, cdigest); -} - -static void -test_sha1hash_empty_string(void) { - test_sha1hash("", - "da39a3ee5e6b4b0d3255bfef95601890afd80709"); -} - -static void -test_sha1hash_a(void) { - test_sha1hash("a", - "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8"); -} - -static void -test_sha1hash_abc(void) { - test_sha1hash("abc", - "a9993e364706816aba3e25717850c26c9cd0d89d"); -} - -static void -test_sha1hash_abcd_gibberish(void) { - test_sha1hash("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - "84983e441c3bd26ebaae4aa1f95129e5e54670f1"); -} - -static void -test_sha1hash_1000_as_1000_times(void) { - test_sha1hash(NULL, - "34aa973cd4c4daa4f61eeb2bdbad27316534016f"); -} - -gint -main(gint argc, gchar **argv) { - g_test_init(&argc, &argv, NULL); - - g_test_add_func("/hash/sha1/empty-string", - test_sha1hash_empty_string); - g_test_add_func("/hash/sha1/a", - test_sha1hash_a); - g_test_add_func("/hash/sha1/abc", - test_sha1hash_abc); - g_test_add_func("/hash/sha1/abcd_gibberish", - test_sha1hash_abcd_gibberish); - g_test_add_func("/hash/sha1/1000 a's 1000 times", - test_sha1hash_1000_as_1000_times); - - return g_test_run(); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/tests/test_sha256.c Thu Mar 10 20:54:09 2016 -0600 @@ -0,0 +1,79 @@ +#include <glib.h> + +#include <purple.h> + +#include "ciphers/sha256hash.h" + +static void +test_sha256hash(gchar *data, gchar *digest) { + PurpleHash *hash = NULL; + gchar cdigest[65]; + gboolean ret = FALSE; + + hash = purple_sha256_hash_new(); + + if(data) { + purple_hash_append(hash, (guchar *)data, strlen(data)); + } else { + gint j; + guchar buff[1000]; + + memset(buff, 'a', 1000); + + for(j = 0; j < 1000; j++) + purple_hash_append(hash, buff, 1000); + } + + ret = purple_hash_digest_to_str(hash, cdigest, sizeof(cdigest)); + + g_assert(ret); + g_assert_cmpstr(digest, ==, cdigest); +} + +static void +test_sha256hash_empty_string(void) { + test_sha256hash("", + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); +} + +static void +test_sha256hash_a(void) { + test_sha256hash("a", + "ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb"); +} + +static void +test_sha256hash_abc(void) { + test_sha256hash("abc", + "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"); +} + +static void +test_sha256hash_abcd_gibberish(void) { + test_sha256hash("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"); +} + +static void +test_sha256hash_1000_as_1000_times(void) { + test_sha256hash(NULL, + "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0"); +} + +gint +main(gint argc, gchar **argv) { + g_test_init(&argc, &argv, NULL); + + g_test_add_func("/hash/sha256/empty-string", + test_sha256hash_empty_string); + g_test_add_func("/hash/sha256/a", + test_sha256hash_a); + g_test_add_func("/hash/sha256/abc", + test_sha256hash_abc); + g_test_add_func("/hash/sha256/abcd_gibberish", + test_sha256hash_abcd_gibberish); + g_test_add_func("/hash/sha256/1000 a's 1000 times", + test_sha256hash_1000_as_1000_times); + + return g_test_run(); +}
--- a/libpurple/tests/test_sha256hash.c Wed Mar 09 22:23:39 2016 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -#include <glib.h> - -#include <purple.h> - -#include "ciphers/sha256hash.h" - -static void -test_sha256hash(gchar *data, gchar *digest) { - PurpleHash *hash = NULL; - gchar cdigest[65]; - gboolean ret = FALSE; - - hash = purple_sha256_hash_new(); - - if(data) { - purple_hash_append(hash, (guchar *)data, strlen(data)); - } else { - gint j; - guchar buff[1000]; - - memset(buff, 'a', 1000); - - for(j = 0; j < 1000; j++) - purple_hash_append(hash, buff, 1000); - } - - ret = purple_hash_digest_to_str(hash, cdigest, sizeof(cdigest)); - - g_assert(ret); - g_assert_cmpstr(digest, ==, cdigest); -} - -static void -test_sha256hash_empty_string(void) { - test_sha256hash("", - "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); -} - -static void -test_sha256hash_a(void) { - test_sha256hash("a", - "ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb"); -} - -static void -test_sha256hash_abc(void) { - test_sha256hash("abc", - "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"); -} - -static void -test_sha256hash_abcd_gibberish(void) { - test_sha256hash("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"); -} - -static void -test_sha256hash_1000_as_1000_times(void) { - test_sha256hash(NULL, - "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0"); -} - -gint -main(gint argc, gchar **argv) { - g_test_init(&argc, &argv, NULL); - - g_test_add_func("/hash/sha256/empty-string", - test_sha256hash_empty_string); - g_test_add_func("/hash/sha256/a", - test_sha256hash_a); - g_test_add_func("/hash/sha256/abc", - test_sha256hash_abc); - g_test_add_func("/hash/sha256/abcd_gibberish", - test_sha256hash_abcd_gibberish); - g_test_add_func("/hash/sha256/1000 a's 1000 times", - test_sha256hash_1000_as_1000_times); - - return g_test_run(); -}