[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 03/19] docs/grub: Document signing grub with an appended signatur
From: |
Daniel Axtens |
Subject: |
[PATCH 03/19] docs/grub: Document signing grub with an appended signature |
Date: |
Wed, 31 Mar 2021 01:07:28 +1100 |
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>
---
docs/grub.texi | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/docs/grub.texi b/docs/grub.texi
index b1a0e2761691..34a2708bc070 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -6050,6 +6050,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.27.0
- [PATCH 00/19] appended signature secure boot support, Daniel Axtens, 2021/03/30
- [PATCH 01/19] Add suport for signing grub with an appended signature, Daniel Axtens, 2021/03/30
- [PATCH 02/19] docs/grub: Document signing grub under UEFI, Daniel Axtens, 2021/03/30
- [PATCH 03/19] docs/grub: Document signing grub with an appended signature,
Daniel Axtens <=
- [PATCH 04/19] dl: provide a fake grub_dl_set_persistent for the emu target, Daniel Axtens, 2021/03/30
- [PATCH 05/19] pgp: factor out rsa_pad, Daniel Axtens, 2021/03/30
- [PATCH 06/19] crypto: move storage for grub_crypto_pk_* to crypto.c, Daniel Axtens, 2021/03/30
- [PATCH 07/19] posix_wrap: tweaks in preparation for libtasn1, Daniel Axtens, 2021/03/30
- [PATCH 09/19] libtasn1: disable code not needed in grub, Daniel Axtens, 2021/03/30
- [PATCH 08/19] libtasn1: import libtasn1-4.16.0, Daniel Axtens, 2021/03/30
- [PATCH 10/19] libtasn1: changes for grub compatibility, Daniel Axtens, 2021/03/30
- [PATCH 11/19] libtasn1: compile into asn1 module, Daniel Axtens, 2021/03/30
- [PATCH 12/19] test_asn1: test module for libtasn1, Daniel Axtens, 2021/03/30
- [PATCH 13/19] grub-install: support embedding x509 certificates, Daniel Axtens, 2021/03/30