blob: 2fcec9cadcd25a904d482ecdf236bbabc2d0c915 [file] [log] [blame]
Heinrich Schuchardt043059d2024-11-02 11:08:36 +01001// 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 <dm.h>
10#include <dm/test.h>
11#include <test/test.h>
12#include <test/ut.h>
13
14static int dm_test_cmd_hash_md5(struct unit_test_state *uts)
15{
16 if (!CONFIG_IS_ENABLED(MD5)) {
17 ut_assert(run_command("hash md5 $loadaddr 0", 0));
18
19 return 0;
20 }
21
22 ut_assertok(run_command("hash md5 $loadaddr 0", 0));
23 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
24 ut_asserteq_ptr(uts->actual_str,
25 strstr(uts->actual_str, "md5 for "));
26 ut_assert(strstr(uts->actual_str,
27 "d41d8cd98f00b204e9800998ecf8427e"));
28 ut_assert_console_end();
29
30 ut_assertok(run_command("hash md5 $loadaddr 0 foo; echo $foo", 0));
31 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
32 ut_asserteq_ptr(uts->actual_str,
33 strstr(uts->actual_str, "md5 for "));
34 ut_assert(strstr(uts->actual_str,
35 "d41d8cd98f00b204e9800998ecf8427e"));
36 ut_check_console_line(uts, "d41d8cd98f00b204e9800998ecf8427e");
37
38 if (!CONFIG_IS_ENABLED(HASH_VERIFY)) {
39 ut_assert(run_command("hash -v sha256 $loadaddr 0 foo", 0));
40 ut_check_console_line(uts, "hash - compute hash message digest");
41
42 return 0;
43 }
44
45 ut_assertok(run_command("hash -v md5 $loadaddr 0 foo", 0));
46 ut_assert_console_end();
47
48 env_set("foo", "ffffffffffffffffffffffffffffffff");
49 ut_assert(run_command("hash -v md5 $loadaddr 0 foo", 0));
50 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
51 ut_assert(strstr(uts->actual_str, "!="));
52 ut_assert_console_end();
53
54 return 0;
55}
56DM_TEST(dm_test_cmd_hash_md5, UTF_CONSOLE);
57
58static int dm_test_cmd_hash_sha256(struct unit_test_state *uts)
59{
60 if (!CONFIG_IS_ENABLED(SHA256)) {
61 ut_assert(run_command("hash sha256 $loadaddr 0", 0));
62
63 return 0;
64 }
65
66 ut_assertok(run_command("hash sha256 $loadaddr 0", 0));
67 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
68 ut_asserteq_ptr(uts->actual_str,
69 strstr(uts->actual_str, "sha256 for "));
70 ut_assert(strstr(uts->actual_str,
71 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));
72 ut_assert_console_end();
73
74 ut_assertok(run_command("hash sha256 $loadaddr 0 foo; echo $foo", 0));
75 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
76 ut_asserteq_ptr(uts->actual_str,
77 strstr(uts->actual_str, "sha256 for "));
78 ut_assert(strstr(uts->actual_str,
79 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));
80 ut_check_console_line(uts,
81 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");
82
83 if (!CONFIG_IS_ENABLED(HASH_VERIFY)) {
84 ut_assert(run_command("hash -v sha256 $loadaddr 0 foo", 0));
85 ut_check_console_line(uts, "hash - compute hash message digest");
86
87 return 0;
88 }
89
90 ut_assertok(run_command("hash -v sha256 $loadaddr 0 foo", 0));
91 ut_assert_console_end();
92
93 env_set("foo", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
94 ut_assert(run_command("hash -v sha256 $loadaddr 0 foo", 0));
95 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
96 ut_assert(strstr(uts->actual_str, "!="));
97 ut_assert_console_end();
98
99 return 0;
100}
101DM_TEST(dm_test_cmd_hash_sha256, UTF_CONSOLE);