blob: 296dd762b31d028565b2cab19597904444fae9fb [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"));
Heinrich Schuchardt1c95b2d2024-11-16 21:08:22 +010036 ut_assertok(ut_check_console_line(uts,
37 "d41d8cd98f00b204e9800998ecf8427e"));
Heinrich Schuchardt043059d2024-11-02 11:08:36 +010038
39 if (!CONFIG_IS_ENABLED(HASH_VERIFY)) {
40 ut_assert(run_command("hash -v sha256 $loadaddr 0 foo", 0));
Heinrich Schuchardt1c95b2d2024-11-16 21:08:22 +010041 ut_assertok(ut_check_console_line(
42 uts, "hash - compute hash message digest"));
Heinrich Schuchardt043059d2024-11-02 11:08:36 +010043
44 return 0;
45 }
46
47 ut_assertok(run_command("hash -v md5 $loadaddr 0 foo", 0));
48 ut_assert_console_end();
49
50 env_set("foo", "ffffffffffffffffffffffffffffffff");
51 ut_assert(run_command("hash -v md5 $loadaddr 0 foo", 0));
52 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
53 ut_assert(strstr(uts->actual_str, "!="));
54 ut_assert_console_end();
55
56 return 0;
57}
58DM_TEST(dm_test_cmd_hash_md5, UTF_CONSOLE);
59
60static int dm_test_cmd_hash_sha256(struct unit_test_state *uts)
61{
62 if (!CONFIG_IS_ENABLED(SHA256)) {
63 ut_assert(run_command("hash sha256 $loadaddr 0", 0));
64
65 return 0;
66 }
67
68 ut_assertok(run_command("hash sha256 $loadaddr 0", 0));
69 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
70 ut_asserteq_ptr(uts->actual_str,
71 strstr(uts->actual_str, "sha256 for "));
72 ut_assert(strstr(uts->actual_str,
73 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));
74 ut_assert_console_end();
75
76 ut_assertok(run_command("hash sha256 $loadaddr 0 foo; echo $foo", 0));
77 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
78 ut_asserteq_ptr(uts->actual_str,
79 strstr(uts->actual_str, "sha256 for "));
80 ut_assert(strstr(uts->actual_str,
81 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));
Heinrich Schuchardt1c95b2d2024-11-16 21:08:22 +010082 ut_assertok(ut_check_console_line(
83 uts, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));
Heinrich Schuchardt043059d2024-11-02 11:08:36 +010084
85 if (!CONFIG_IS_ENABLED(HASH_VERIFY)) {
86 ut_assert(run_command("hash -v sha256 $loadaddr 0 foo", 0));
Heinrich Schuchardt1c95b2d2024-11-16 21:08:22 +010087 ut_assertok(ut_check_console_line(
88 uts, "hash - compute hash message digest"));
Heinrich Schuchardt043059d2024-11-02 11:08:36 +010089
90 return 0;
91 }
92
93 ut_assertok(run_command("hash -v sha256 $loadaddr 0 foo", 0));
94 ut_assert_console_end();
95
96 env_set("foo", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
97 ut_assert(run_command("hash -v sha256 $loadaddr 0 foo", 0));
98 console_record_readline(uts->actual_str, sizeof(uts->actual_str));
99 ut_assert(strstr(uts->actual_str, "!="));
100 ut_assert_console_end();
101
102 return 0;
103}
104DM_TEST(dm_test_cmd_hash_sha256, UTF_CONSOLE);