[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 03/19] docs/grub: Document signing grub with an appended signa
From: |
Daniel Axtens |
Subject: |
[PATCH v3 03/19] docs/grub: Document signing grub with an appended signature |
Date: |
Thu, 21 Apr 2022 17:46:58 +1000 |
Signing grub for firmware that verifies an appended signature is a
bit fiddly. I don't want people to have to figure it out from scratch
so document it here.
Signed-off-by: Daniel Axtens <dja@axtens.net>
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
---
docs/grub.texi | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/docs/grub.texi b/docs/grub.texi
index fdf2884b814f..a7f5f6cd154c 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -6119,6 +6119,48 @@ image works under UEFI secure boot and can maintain the
secure-boot chain. It
will also be necessary to enrol the public key used into a relevant firmware
key database.
+@section Signing GRUB with an appended signature
+
+The @file{core.img} itself can be signed with a Linux kernel module-style
+appended signature.
+
+To support IEEE1275 platforms where the boot image is often loaded directly
+from a disk partition rather than from a file system, the @file{core.img}
+can specify the size and location of the appended signature with an ELF
+note added by @command{grub-install}.
+
+An image can be signed this way using the @command{sign-file} command from
+the Linux kernel:
+
+@example
+@group
+# grub.key is your private key and certificate.der is your public key
+
+# Determine the size of the appended signature. It depends on the signing
+# certificate and the hash algorithm
+touch empty
+sign-file SHA256 grub.key certificate.der empty empty.sig
+SIG_SIZE=`stat -c '%s' empty.sig`
+rm empty empty.sig
+
+# Build a grub image with $SIG_SIZE reserved for the signature
+grub-install --appended-signature-size $SIG_SIZE --modules="..." ...
+
+# Replace the reserved size with a signature:
+# cut off the last $SIG_SIZE bytes with truncate's minus modifier
+truncate -s -$SIG_SIZE /boot/grub/powerpc-ieee1275/core.elf core.elf.unsigned
+# sign the trimmed file with an appended signature, restoring the correct size
+sign-file SHA256 grub.key certificate.der core.elf.unsigned core.elf.signed
+
+# Don't forget to install the signed image as required
+# (e.g. on powerpc-ieee1275, to the PReP partition)
+@end group
+@end example
+
+As with UEFI secure boot, it is necessary to build in the required modules,
+or sign them separately.
+
+
@node Platform limitations
@chapter Platform limitations
--
2.32.0
- [PATCH v3 00/19] Appended signature secure boot support, Daniel Axtens, 2022/04/21
- [PATCH v3 01/19] Add suport for signing grub with an appended signature, Daniel Axtens, 2022/04/21
- [PATCH v3 03/19] docs/grub: Document signing grub with an appended signature,
Daniel Axtens <=
- [PATCH v3 06/19] crypto: move storage for grub_crypto_pk_* to crypto.c, Daniel Axtens, 2022/04/21
- [PATCH v3 10/19] libtasn1: changes for grub compatibility, Daniel Axtens, 2022/04/21
- [PATCH v3 05/19] pgp: factor out rsa_pad, Daniel Axtens, 2022/04/21
- [PATCH v3 04/19] dl: provide a fake grub_dl_set_persistent for the emu target, Daniel Axtens, 2022/04/21
- [PATCH v3 07/19] posix_wrap: tweaks in preparation for libtasn1, Daniel Axtens, 2022/04/21
- [PATCH v3 02/19] docs/grub: Document signing grub under UEFI, Daniel Axtens, 2022/04/21
- [PATCH v3 09/19] libtasn1: disable code not needed in grub, Daniel Axtens, 2022/04/21
- [PATCH v3 08/19] libtasn1: import libtasn1-4.18.0, Daniel Axtens, 2022/04/21
- [PATCH v3 13/19] grub-install: support embedding x509 certificates, Daniel Axtens, 2022/04/21
- [PATCH v3 12/19] test_asn1: test module for libtasn1, Daniel Axtens, 2022/04/21