1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * Tests for hash command
4 *
5 * Copyright 2024, Heinrich Schuchardt <heinrich.schuchardt@canoncal.com>
6 */
7
8 #include <command.h>
9 #include <env.h>
10 #include <dm.h>
11 #include <dm/test.h>
12 #include <test/test.h>
13 #include <test/ut.h>
14
dm_test_cmd_hash_md5(struct unit_test_state * uts)15 static int dm_test_cmd_hash_md5(struct unit_test_state *uts)
16 {
17 if (!CONFIG_IS_ENABLED(MD5)) {
18 ut_assert(run_command("hash md5 $loadaddr 0", 0));
19
20 return 0;
21 }
22
23 ut_assertok(run_command("hash md5 $loadaddr 0", 0));
24 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
25 ut_asserteq_ptr(uts->actual_str,
26 strstr(uts->actual_str, "md5 for "));
27 ut_assert(strstr(uts->actual_str,
28 "d41d8cd98f00b204e9800998ecf8427e"));
29 ut_assert_console_end();
30
31 ut_assertok(run_command("hash md5 $loadaddr 0 foo; echo $foo", 0));
32 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
33 ut_asserteq_ptr(uts->actual_str,
34 strstr(uts->actual_str, "md5 for "));
35 ut_assert(strstr(uts->actual_str,
36 "d41d8cd98f00b204e9800998ecf8427e"));
37 ut_assertok(ut_check_console_line(uts,
38 "d41d8cd98f00b204e9800998ecf8427e"));
39
40 if (!CONFIG_IS_ENABLED(HASH_VERIFY)) {
41 ut_assert(run_command("hash -v sha256 $loadaddr 0 foo", 0));
42 ut_assertok(ut_check_console_line(
43 uts, "hash - compute hash message digest"));
44
45 return 0;
46 }
47
48 ut_assertok(run_command("hash -v md5 $loadaddr 0 foo", 0));
49 ut_assert_console_end();
50
51 env_set("foo", "ffffffffffffffffffffffffffffffff");
52 ut_assert(run_command("hash -v md5 $loadaddr 0 foo", 0));
53 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
54 ut_assert(strstr(uts->actual_str, "!="));
55 ut_assert_console_end();
56
57 return 0;
58 }
59 DM_TEST(dm_test_cmd_hash_md5, UTF_CONSOLE);
60
dm_test_cmd_hash_sha256(struct unit_test_state * uts)61 static int dm_test_cmd_hash_sha256(struct unit_test_state *uts)
62 {
63 if (!CONFIG_IS_ENABLED(SHA256)) {
64 ut_assert(run_command("hash sha256 $loadaddr 0", 0));
65
66 return 0;
67 }
68
69 ut_assertok(run_command("hash sha256 $loadaddr 0", 0));
70 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
71 ut_asserteq_ptr(uts->actual_str,
72 strstr(uts->actual_str, "sha256 for "));
73 ut_assert(strstr(uts->actual_str,
74 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));
75 ut_assert_console_end();
76
77 ut_assertok(run_command("hash sha256 $loadaddr 0 foo; echo $foo", 0));
78 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
79 ut_asserteq_ptr(uts->actual_str,
80 strstr(uts->actual_str, "sha256 for "));
81 ut_assert(strstr(uts->actual_str,
82 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));
83 ut_assertok(ut_check_console_line(
84 uts, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));
85
86 if (!CONFIG_IS_ENABLED(HASH_VERIFY)) {
87 ut_assert(run_command("hash -v sha256 $loadaddr 0 foo", 0));
88 ut_assertok(ut_check_console_line(
89 uts, "hash - compute hash message digest"));
90
91 return 0;
92 }
93
94 ut_assertok(run_command("hash -v sha256 $loadaddr 0 foo", 0));
95 ut_assert_console_end();
96
97 env_set("foo", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
98 ut_assert(run_command("hash -v sha256 $loadaddr 0 foo", 0));
99 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
100 ut_assert(strstr(uts->actual_str, "!="));
101 ut_assert_console_end();
102
103 return 0;
104 }
105 DM_TEST(dm_test_cmd_hash_sha256, UTF_CONSOLE);
106