forked from Minki/linux
addf466389
Add and use a check-blacklist-hashes.awk script to make sure that the builtin blacklist hashes set with CONFIG_SYSTEM_BLACKLIST_HASH_LIST will effectively be taken into account as blacklisted hashes. This is useful to debug invalid hash formats, and it make sure that previous hashes which could have been loaded in the kernel, but silently ignored, are now noticed and deal with by the user at kernel build time. This also prevent stricter blacklist key description checking (provided by following commits) to failed for builtin hashes. Update CONFIG_SYSTEM_BLACKLIST_HASH_LIST help to explain the content of a hash string and how to generate certificate ones. Cc: David Howells <dhowells@redhat.com> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Eric Snowberg <eric.snowberg@oracle.com> Cc: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Mickaël Salaün <mic@linux.microsoft.com> Link: https://lore.kernel.org/r/20210712170313.884724-3-mic@digikod.net Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
38 lines
1.0 KiB
Awk
Executable File
38 lines
1.0 KiB
Awk
Executable File
#!/usr/bin/awk -f
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Copyright © 2020, Microsoft Corporation. All rights reserved.
|
|
#
|
|
# Author: Mickaël Salaün <mic@linux.microsoft.com>
|
|
#
|
|
# Check that a CONFIG_SYSTEM_BLACKLIST_HASH_LIST file contains a valid array of
|
|
# hash strings. Such string must start with a prefix ("tbs" or "bin"), then a
|
|
# colon (":"), and finally an even number of hexadecimal lowercase characters
|
|
# (up to 128).
|
|
|
|
BEGIN {
|
|
RS = ","
|
|
}
|
|
{
|
|
if (!match($0, "^[ \t\n\r]*\"([^\"]*)\"[ \t\n\r]*$", part1)) {
|
|
print "Not a string (item " NR "):", $0;
|
|
exit 1;
|
|
}
|
|
if (!match(part1[1], "^(tbs|bin):(.*)$", part2)) {
|
|
print "Unknown prefix (item " NR "):", part1[1];
|
|
exit 1;
|
|
}
|
|
if (!match(part2[2], "^([0-9a-f]+)$", part3)) {
|
|
print "Not a lowercase hexadecimal string (item " NR "):", part2[2];
|
|
exit 1;
|
|
}
|
|
if (length(part3[1]) > 128) {
|
|
print "Hash string too long (item " NR "):", part3[1];
|
|
exit 1;
|
|
}
|
|
if (length(part3[1]) % 2 == 1) {
|
|
print "Not an even number of hexadecimal characters (item " NR "):", part3[1];
|
|
exit 1;
|
|
}
|
|
}
|