1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 00:32:04 +02:00

autoboot.c: Add feature to stop autobooting via SHA256 encrypted password

This patch adds the feature to only stop the autobooting, and therefor
boot into the U-Boot prompt, when the input string / password matches
a values that is encypted via a SHA256 hash and saved in the environment.

This feature is enabled by defined these config options:
     CONFIG_AUTOBOOT_KEYED
     CONFIG_AUTOBOOT_STOP_STR_SHA256

Signed-off-by: Stefan Roese <sr@denx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Stefan Roese
2015-05-18 14:08:24 +02:00
committed by Tom Rini
parent d126e01649
commit 8f0b1e24e2
4 changed files with 152 additions and 31 deletions

View File

@@ -227,6 +227,26 @@ int hash_progressive_lookup_algo(const char *algo_name,
}
#ifndef USE_HOSTCC
int hash_parse_string(const char *algo_name, const char *str, uint8_t *result)
{
struct hash_algo *algo;
int ret;
int i;
ret = hash_lookup_algo(algo_name, &algo);
if (ret)
return ret;
for (i = 0; i < algo->digest_size; i++) {
char chr[3];
strncpy(chr, &str[i * 2], 2);
result[i] = simple_strtoul(chr, NULL, 16);
}
return 0;
}
/**
* store_result: Store the resulting sum to an address or variable
*
@@ -315,7 +335,6 @@ static int parse_verify_sum(struct hash_algo *algo, char *verify_str,
buf = map_sysmem(addr, algo->digest_size);
memcpy(vsum, buf, algo->digest_size);
} else {
unsigned int i;
char *vsum_str;
int digits = algo->digest_size * 2;
@@ -335,14 +354,7 @@ static int parse_verify_sum(struct hash_algo *algo, char *verify_str,
}
}
for (i = 0; i < algo->digest_size; i++) {
char *nullp = vsum_str + (i + 1) * 2;
char end = *nullp;
*nullp = '\0';
vsum[i] = simple_strtoul(vsum_str + (i * 2), NULL, 16);
*nullp = end;
}
hash_parse_string(algo->name, vsum_str, vsum);
}
return 0;
}