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:
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user