summaryrefslogtreecommitdiff
path: root/test/cmd/hash.c
blob: bb96380c351a80de01e4f32b8998fb525be4cb5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Tests for hash command
 *
 * Copyright 2024, Heinrich Schuchardt <heinrich.schuchardt@canoncal.com>
 */

#include <command.h>
#include <env.h>
#include <dm.h>
#include <dm/test.h>
#include <test/test.h>
#include <test/ut.h>

static int dm_test_cmd_hash_md5(struct unit_test_state *uts)
{
	if (!CONFIG_IS_ENABLED(MD5)) {
		ut_assert(run_command("hash md5 $loadaddr 0", 0));

		return 0;
	}

	ut_assertok(run_command("hash md5 $loadaddr 0", 0));
	console_record_readline(uts->actual_str, sizeof(uts->actual_str));
	ut_asserteq_ptr(uts->actual_str,
			strstr(uts->actual_str, "md5 for "));
	ut_assert(strstr(uts->actual_str,
			 "d41d8cd98f00b204e9800998ecf8427e"));
	ut_assert_console_end();

	ut_assertok(run_command("hash md5 $loadaddr 0 foo; echo $foo", 0));
	console_record_readline(uts->actual_str, sizeof(uts->actual_str));
	ut_asserteq_ptr(uts->actual_str,
			strstr(uts->actual_str, "md5 for "));
	ut_assert(strstr(uts->actual_str,
			 "d41d8cd98f00b204e9800998ecf8427e"));
	ut_assertok(ut_check_console_line(uts,
					  "d41d8cd98f00b204e9800998ecf8427e"));

	if (!CONFIG_IS_ENABLED(HASH_VERIFY)) {
		ut_assert(run_command("hash -v sha256 $loadaddr 0 foo", 0));
		ut_assertok(ut_check_console_line(
				uts, "hash - compute hash message digest"));

		return 0;
	}

	ut_assertok(run_command("hash -v md5 $loadaddr 0 foo", 0));
	ut_assert_console_end();

	env_set("foo", "ffffffffffffffffffffffffffffffff");
	ut_assert(run_command("hash -v md5 $loadaddr 0 foo", 0));
	console_record_readline(uts->actual_str, sizeof(uts->actual_str));
	ut_assert(strstr(uts->actual_str, "!="));
	ut_assert_console_end();

	return 0;
}
DM_TEST(dm_test_cmd_hash_md5, UTF_CONSOLE);

static int dm_test_cmd_hash_sha256(struct unit_test_state *uts)
{
	if (!CONFIG_IS_ENABLED(SHA256)) {
		ut_assert(run_command("hash sha256 $loadaddr 0", 0));

		return 0;
	}

	ut_assertok(run_command("hash sha256 $loadaddr 0", 0));
	console_record_readline(uts->actual_str, sizeof(uts->actual_str));
	ut_asserteq_ptr(uts->actual_str,
			strstr(uts->actual_str, "sha256 for "));
	ut_assert(strstr(uts->actual_str,
			 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));
	ut_assert_console_end();

	ut_assertok(run_command("hash sha256 $loadaddr 0 foo; echo $foo", 0));
	console_record_readline(uts->actual_str, sizeof(uts->actual_str));
	ut_asserteq_ptr(uts->actual_str,
			strstr(uts->actual_str, "sha256 for "));
	ut_assert(strstr(uts->actual_str,
			 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));
	ut_assertok(ut_check_console_line(
			uts, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));

	if (!CONFIG_IS_ENABLED(HASH_VERIFY)) {
		ut_assert(run_command("hash -v sha256 $loadaddr 0 foo", 0));
		ut_assertok(ut_check_console_line(
				uts, "hash - compute hash message digest"));

		return 0;
	}

	ut_assertok(run_command("hash -v sha256 $loadaddr 0 foo", 0));
	ut_assert_console_end();

	env_set("foo", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
	ut_assert(run_command("hash -v sha256 $loadaddr 0 foo", 0));
	console_record_readline(uts->actual_str, sizeof(uts->actual_str));
	ut_assert(strstr(uts->actual_str, "!="));
	ut_assert_console_end();

	return 0;
}
DM_TEST(dm_test_cmd_hash_sha256, UTF_CONSOLE);