1 /* Copyright (C) 2014 Trend Micro Inc.
4 * This program is a free software; you can redistribute it
5 * and/or modify it under the terms of the GNU General Public
6 * License (version 2) as published by the FSF - Free Software
14 #include "headers/defs.h"
15 #include "../os_crypto/blowfish/bf_op.h"
16 #include "../os_crypto/md5/md5_op.h"
17 #include "../os_crypto/sha1/sha1_op.h"
18 #include "../os_crypto/md5_sha1/md5_sha1_op.h"
20 Suite *test_suite(void);
23 START_TEST(test_blowfish)
25 const char *key = "test_key";
26 const char *string = "test string";
27 const int buffersize = 1024;
28 char buffer1[buffersize];
29 char buffer2[buffersize];
31 OS_BF_Str(string, buffer1, key, buffersize, OS_ENCRYPT);
32 OS_BF_Str(buffer1, buffer2, key, buffersize, OS_DECRYPT);
34 ck_assert_str_eq(buffer2, string);
38 START_TEST(test_md5string)
40 const char *string = "teststring";
41 const char *string_md5 = "d67c5cbf5b01c9f91932e3b8def5e5f8";
44 OS_MD5_Str(string, buffer);
46 ck_assert_str_eq(buffer, string_md5);
50 START_TEST(test_md5file)
52 const char *string = "teststring";
53 const char *string_md5 = "d67c5cbf5b01c9f91932e3b8def5e5f8";
57 strncpy(file_name, "/tmp/tmp_file-XXXXXX", 256);
58 int fd = mkstemp(file_name);
60 write(fd, string, strlen(string));
64 ck_assert_int_eq(OS_MD5_File(file_name, buffer, OS_TEXT), 0);
66 ck_assert_str_eq(buffer, string_md5);
70 START_TEST(test_md5file_fail)
73 ck_assert_int_eq(OS_MD5_File("not_existing_file", buffer, OS_TEXT), -1);
77 START_TEST(test_sha1file)
79 const char *string = "teststring";
80 const char *string_sha1 = "b8473b86d4c2072ca9b08bd28e373e8253e865c4";
84 strncpy(file_name, "/tmp/tmp_file-XXXXXX", 256);
85 int fd = mkstemp(file_name);
87 write(fd, string, strlen(string));
91 ck_assert_int_eq(OS_SHA1_File(file_name, buffer, OS_TEXT), 0);
93 ck_assert_str_eq(buffer, string_sha1);
97 START_TEST(test_sha1file_fail)
100 ck_assert_int_eq(OS_SHA1_File("not_existing_file", buffer, OS_TEXT), -1);
104 START_TEST(test_md5sha1file)
106 const char *string = "teststring";
107 const char *string_md5 = "d67c5cbf5b01c9f91932e3b8def5e5f8";
108 const char *string_sha1 = "b8473b86d4c2072ca9b08bd28e373e8253e865c4";
110 /* create tmp file */
112 strncpy(file_name, "/tmp/tmp_file-XXXXXX", 256);
113 int fd = mkstemp(file_name);
115 write(fd, string, strlen(string));
121 ck_assert_int_eq(OS_MD5_SHA1_File(file_name, NULL, md5buffer, sha1buffer, OS_TEXT), 0);
123 ck_assert_str_eq(md5buffer, string_md5);
124 ck_assert_str_eq(sha1buffer, string_sha1);
128 START_TEST(test_md5sha1cmdfile)
130 const char *string = "teststring";
131 const char *string_md5 = "d67c5cbf5b01c9f91932e3b8def5e5f8";
132 const char *string_sha1 = "b8473b86d4c2072ca9b08bd28e373e8253e865c4";
134 /* create tmp file */
136 strncpy(file_name, "/tmp/tmp_file-XXXXXX", 256);
137 int fd = mkstemp(file_name);
139 write(fd, string, strlen(string));
145 ck_assert_int_eq(OS_MD5_SHA1_File(file_name, "cat ", md5buffer, sha1buffer, OS_TEXT), 0);
147 ck_assert_str_eq(md5buffer, string_md5);
148 ck_assert_str_eq(sha1buffer, string_sha1);
152 START_TEST(test_md5sha1cmdfile_fail)
157 ck_assert_int_eq(OS_MD5_SHA1_File("not_existing_file", NULL, md5buffer, sha1buffer, OS_TEXT), -1);
161 Suite *test_suite(void)
163 Suite *s = suite_create("os_crypto");
165 TCase *tc_blowfish = tcase_create("blowfish");
166 tcase_add_test(tc_blowfish, test_blowfish);
168 TCase *tc_md5 = tcase_create("md5");
169 tcase_add_test(tc_md5, test_md5string);
170 tcase_add_test(tc_md5, test_md5file);
171 tcase_add_test(tc_md5, test_md5file_fail);
173 TCase *tc_sha1 = tcase_create("sha1");
174 tcase_add_test(tc_sha1, test_sha1file);
175 tcase_add_test(tc_sha1, test_sha1file_fail);
177 TCase *tc_md5sha1 = tcase_create("md5_sha1");
178 tcase_add_test(tc_md5sha1, test_md5sha1file);
179 tcase_add_test(tc_md5sha1, test_md5sha1cmdfile);
180 tcase_add_test(tc_md5sha1, test_md5sha1cmdfile_fail);
181 tcase_set_timeout(tc_md5sha1, 7);
183 suite_add_tcase(s, tc_blowfish);
184 suite_add_tcase(s, tc_md5);
185 suite_add_tcase(s, tc_sha1);
186 suite_add_tcase(s, tc_md5sha1);
193 Suite *s = test_suite();
194 SRunner *sr = srunner_create(s);
195 srunner_run_all(sr, CK_NORMAL);
196 int number_failed = srunner_ntests_failed(sr);
199 return ((number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE);