diff options
author | Dan Winship <danw@redhat.com> | 2014-12-01 13:37:43 -0500 |
---|---|---|
committer | Dan Winship <danw@redhat.com> | 2014-12-04 08:39:54 -0500 |
commit | 34519eee136ef95666f77482315edde9d48250e5 (patch) | |
tree | a33e8e2cf848b823a88d451d32bb98a2c4b4d232 /libnm-core/tests | |
parent | 539fac8b675e6a9e5bbb5374e32e3d7615fcf0b7 (diff) | |
download | NetworkManager-34519eee136ef95666f77482315edde9d48250e5.tar.gz |
tests: add a test of libnm-core's crypto_md5_hash()
Diffstat (limited to 'libnm-core/tests')
-rw-r--r-- | libnm-core/tests/test-crypto.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/libnm-core/tests/test-crypto.c b/libnm-core/tests/test-crypto.c index 2fab2fec69..afc91a178e 100644 --- a/libnm-core/tests/test-crypto.c +++ b/libnm-core/tests/test-crypto.c @@ -401,6 +401,58 @@ test_pkcs8 (gconstpointer test_data) g_strfreev (parts); } +#define SALT "sodium chloride" +#define SHORT_PASSWORD "short" +#define LONG_PASSWORD "this is a longer password than the short one" +#define SHORT_DIGEST 16 +#define LONG_DIGEST 57 + +struct { + const char *salt, *password; + gsize digest_size; + const char *result; +} md5_tests[] = { + { NULL, SHORT_PASSWORD, SHORT_DIGEST, + "4f09daa9d95bcb166a302407a0e0babe" }, + { NULL, SHORT_PASSWORD, LONG_DIGEST, + "4f09daa9d95bcb166a302407a0e0babeb7d62e5baf706830d007c253f0fe7584ad7e92dc00a599ec277293c298ae70ee3904c348e23be61c91" }, + { SALT, SHORT_PASSWORD, SHORT_DIGEST, + "774771f7292210233b5724991d1f9894" }, + { SALT, SHORT_PASSWORD, LONG_DIGEST, + "774771f7292210233b5724991d1f98941a6ffdb45e4dc7fa04b1fa6aceed379c1ade0577bc8f261d109942ed5736921c052664d72e0d5bade9" }, + { NULL, LONG_PASSWORD, SHORT_DIGEST, + "e9c03517f81ff29bb777dac21fb1699c" }, + { NULL, LONG_PASSWORD, LONG_DIGEST, + "e9c03517f81ff29bb777dac21fb1699c50968c7ccd8db4f0a59d00ffd87b05876d45f25a927d51a8400c35af60fbd64584349a8b7435d62fd9" }, + { SALT, LONG_PASSWORD, SHORT_DIGEST, + "4e5c076e2f85f5e03994acbf3a9e10d6" }, + { SALT, LONG_PASSWORD, LONG_DIGEST, + "4e5c076e2f85f5e03994acbf3a9e10d61a6969c9fdf47ae8b1f7e2725b3767b05cc974bfcb5344b630c91761e015e09d7794b5065662533bc9" }, +}; + +static void +test_md5 (void) +{ + char digest[LONG_DIGEST], *hex; + int i; + GError *error = NULL; + + for (i = 0; i < G_N_ELEMENTS (md5_tests); i++) { + memset (digest, 0, sizeof (digest)); + crypto_md5_hash (md5_tests[i].salt, + md5_tests[i].salt ? strlen (md5_tests[i].salt) : 0, + md5_tests[i].password, + strlen (md5_tests[i].password), + digest, md5_tests[i].digest_size, + &error); + g_assert_no_error (error); + + hex = nm_utils_bin2hexstr (digest, md5_tests[i].digest_size, -1); + g_assert_cmpstr (hex, ==, md5_tests[i].result); + g_free (hex); + } +} + NMTST_DEFINE (); int @@ -460,6 +512,8 @@ main (int argc, char **argv) "pkcs8-enc-key.pem, 1234567890", test_pkcs8); + g_test_add_func ("/libnm/crypto/md5", test_md5); + ret = g_test_run (); return ret; |