pidgin/pidgin
Clone
Summary
Browse
Changes
Graph
merge of '77693555855fe9cd3215414f79964dba346cc5fa'
gaim
2008-11-12, Richard Laager
1966704b3e42
merge of '77693555855fe9cd3215414f79964dba346cc5fa'
and '19a87e98e5857ad0289f2c760d460f7f1dbbb42d'
#include
<glib.h>
#include
<check.h>
#include
<stdlib.h>
#include
<string.h>
#undef HAVE_DBUS
#include
"../cipher.h"
#include
"../signal.h"
/******************************************************************************
* MD4 Tests
*****************************************************************************/
#define MD4_TEST(data, digest) { \
GaimCipher *cipher = NULL; \
GaimCipherContext *context = NULL; \
gchar cdigest[33]; \
gchar *sdigest = NULL; \
gboolean ret = FALSE; \
\
cipher = gaim_ciphers_find_cipher("md4"); \
context = gaim_cipher_context_new(cipher, NULL); \
gaim_cipher_context_append(context, (guchar *)(data), strlen((data))); \
\
ret = gaim_cipher_context_digest_to_str(context, sizeof(cdigest), cdigest, \
NULL); \
\
fail_unless(ret == TRUE, NULL); \
\
fail_unless(strcmp((digest), cdigest) == 0, NULL); \
\
gaim_cipher_context_destroy(context); \
}
START_TEST
(
test_md4_empty_string
)
{
MD4_TEST
(
""
,
"31d6cfe0d16ae931b73c59d7e0c089c0"
);
}
END_TEST
START_TEST
(
test_md4_a
)
{
MD4_TEST
(
"a"
,
"bde52cb31de33e46245e05fbdbd6fb24"
);
}
END_TEST
START_TEST
(
test_md4_abc
)
{
MD4_TEST
(
"abc"
,
"a448017aaf21d8525fc10ae87aa6729d"
);
}
END_TEST
START_TEST
(
test_md4_message_digest
)
{
MD4_TEST
(
"message digest"
,
"d9130a8164549fe818874806e1c7014b"
);
}
END_TEST
START_TEST
(
test_md4_a_to_z
)
{
MD4_TEST
(
"abcdefghijklmnopqrstuvwxyz"
,
"d79e1c308aa5bbcdeea8ed63df412da9"
);
}
END_TEST
START_TEST
(
test_md4_A_to_Z_a_to_z_0_to_9
)
{
MD4_TEST
(
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
,
"043f8582f241db351ce627e153e7f0e4"
);
}
END_TEST
START_TEST
(
test_md4_1_to_0_8_times
)
{
MD4_TEST
(
"123456789012345678901234567890123456789012345678901234567890"
"12345678901234567890"
,
"e33b4ddc9c38f2199c3e7b164fcc0536"
);
}
END_TEST
/******************************************************************************
* MD5 Tests
*****************************************************************************/
#define MD5_TEST(data, digest) { \
GaimCipher *cipher = NULL; \
GaimCipherContext *context = NULL; \
gchar cdigest[33]; \
gchar *sdigest = NULL; \
gboolean ret = FALSE; \
\
cipher = gaim_ciphers_find_cipher("md5"); \
context = gaim_cipher_context_new(cipher, NULL); \
gaim_cipher_context_append(context, (guchar *)(data), strlen((data))); \
\
ret = gaim_cipher_context_digest_to_str(context, sizeof(cdigest), cdigest, \
NULL); \
\
fail_unless(ret == TRUE, NULL); \
\
fail_unless(strcmp((digest), cdigest) == 0, NULL); \
\
gaim_cipher_context_destroy(context); \
}
START_TEST
(
test_md5_empty_string
)
{
MD5_TEST
(
""
,
"d41d8cd98f00b204e9800998ecf8427e"
);
}
END_TEST
START_TEST
(
test_md5_a
)
{
MD5_TEST
(
"a"
,
"0cc175b9c0f1b6a831c399e269772661"
);
}
END_TEST
START_TEST
(
test_md5_abc
)
{
MD5_TEST
(
"abc"
,
"900150983cd24fb0d6963f7d28e17f72"
);
}
END_TEST
START_TEST
(
test_md5_message_digest
)
{
MD5_TEST
(
"message digest"
,
"f96b697d7cb7938d525a2f31aaf161d0"
);
}
END_TEST
START_TEST
(
test_md5_a_to_z
)
{
MD5_TEST
(
"abcdefghijklmnopqrstuvwxyz"
,
"c3fcd3d76192e4007dfb496cca67e13b"
);
}
END_TEST
START_TEST
(
test_md5_A_to_Z_a_to_z_0_to_9
)
{
MD5_TEST
(
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
,
"d174ab98d277d9f5a5611c2c9f419d9f"
);
}
END_TEST
START_TEST
(
test_md5_1_to_0_8_times
)
{
MD5_TEST
(
"123456789012345678901234567890123456789012345678901234567890"
"12345678901234567890"
,
"57edf4a22be3c955ac49da2e2107b67a"
);
}
END_TEST
/******************************************************************************
* SHA-1 Tests
*****************************************************************************/
#define SHA1_TEST(data, digest) { \
GaimCipher *cipher = NULL; \
GaimCipherContext *context = NULL; \
gchar cdigest[41]; \
gchar *sdigest = NULL; \
gboolean ret = FALSE; \
\
cipher = gaim_ciphers_find_cipher("sha1"); \
context = gaim_cipher_context_new(cipher, NULL); \
\
if((data)) { \
gaim_cipher_context_append(context, (guchar *)(data), strlen((data))); \
} else { \
gint j; \
guchar buff[1000]; \
\
memset(buff, 'a', 1000); \
\
for(j = 0; j < 1000; j++) \
gaim_cipher_context_append(context, buff, 1000); \
} \
\
ret = gaim_cipher_context_digest_to_str(context, sizeof(cdigest), cdigest, \
NULL); \
\
fail_unless(ret == TRUE, NULL); \
\
fail_unless(strcmp((digest), cdigest) == 0, NULL); \
\
gaim_cipher_context_destroy(context); \
}
START_TEST
(
test_sha1_a
)
{
SHA1_TEST
(
"a"
,
"86f7e437faa5a7fce15d1ddcb9eaeaea377667b8"
);
}
END_TEST
START_TEST
(
test_sha1_abc
)
{
SHA1_TEST
(
"abc"
,
"a9993e364706816aba3e25717850c26c9cd0d89d"
);
}
END_TEST
START_TEST
(
test_sha1_abcd_gibberish
)
{
SHA1_TEST
(
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
,
"84983e441c3bd26ebaae4aa1f95129e5e54670f1"
);
}
END_TEST
START_TEST
(
test_sha1_1000_as_1000_times
)
{
SHA1_TEST
(
NULL
,
"34aa973cd4c4daa4f61eeb2bdbad27316534016f"
);
}
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_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
);
return
s
;
}