aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/security/vboot/Kconfig7
-rw-r--r--src/security/vboot/Makefile.inc5
-rw-r--r--util/chromeos/README.md16
-rwxr-xr-xutil/chromeos/gen_test_hwid.sh31
4 files changed, 58 insertions, 1 deletions
diff --git a/src/security/vboot/Kconfig b/src/security/vboot/Kconfig
index 1e372d86ba..d6d74cac73 100644
--- a/src/security/vboot/Kconfig
+++ b/src/security/vboot/Kconfig
@@ -228,7 +228,12 @@ menu "GBB configuration"
config GBB_HWID
string "Hardware ID"
- default "NOCONF HWID"
+ default ""
+ help
+ A hardware identifier for device. On Chrome OS this is used for auto
+ update and recovery, and will be generated when manufacturing by the
+ factory software, in a strictly defined format.
+ Leave empty to get a test-only Chrome OS HWID v2 string generated.
config GBB_BMPFV_FILE
string "Path to bmpfv image"
diff --git a/src/security/vboot/Makefile.inc b/src/security/vboot/Makefile.inc
index 3078e30e21..abb8863c02 100644
--- a/src/security/vboot/Makefile.inc
+++ b/src/security/vboot/Makefile.inc
@@ -239,6 +239,11 @@ $(obj)/gbb.stub: $(obj)/coreboot.rom $(FUTILITY)
mv $@.tmp $@
endif
+# Generate a test-only HWID
+ifeq ($(CONFIG_GBB_HWID),)
+CONFIG_GBB_HWID := $$($(top)/util/chromeos/gen_test_hwid.sh "$(CONFIG_MAINBOARD_PART_NUMBER)")
+endif
+
$(obj)/gbb.region: $(obj)/gbb.stub
@printf " SETUP GBB\n"
cp $< $@.tmp
diff --git a/util/chromeos/README.md b/util/chromeos/README.md
index 7a3897d8a0..0b9a7d74d8 100644
--- a/util/chromeos/README.md
+++ b/util/chromeos/README.md
@@ -26,3 +26,19 @@ $ ./crosfirmware.sh panther
Right now it will produce the ME firmware blob, IFD, VGA option rom,
and `mrc.bin`.
+
+## gen_test_hwid.sh
+
+`gen_test_hwid.sh` generates a test-only identifier in Chrome OS HWID v2
+compatible format.
+
+Usage:
+```
+$ ./gen_test_hwid.sh BOARD_NAME
+```
+
+Example:
+```
+$ ./gen_test_hwid.sh Kukui
+KUKUI TEST 9847
+```
diff --git a/util/chromeos/gen_test_hwid.sh b/util/chromeos/gen_test_hwid.sh
new file mode 100755
index 0000000000..849ff6a8c0
--- /dev/null
+++ b/util/chromeos/gen_test_hwid.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# This file is part of the coreboot project.
+#
+# Copyright 2019 Google Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+main() {
+ if [ "$#" != 1 ]; then
+ echo "Usage: $0 MAINBOARD_PARTNUMBER" >&2
+ exit 1
+ fi
+
+ # Generate a test-only Chrome OS HWID v2 string
+ local board="$1"
+ local prefix="$(echo "${board}" | tr a-z A-Z) TEST"
+ # gzip has second-to-last 4 bytes in CRC32.
+ local crc32="$(printf "${prefix}" | gzip -1 | tail -c 8 | head -c 4 | \
+ hexdump -e '1/4 "%04u" ""' | tail -c 4)"
+
+ echo "${prefix}" "${crc32}"
+}
+main "$@"