[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v1 03/21] docs/grub: Document signing grub with an appended signa
From: |
Sudhakar Kuppusamy |
Subject: |
[PATCH v1 03/21] docs/grub: Document signing grub with an appended signature |
Date: |
Wed, 18 Dec 2024 20:26:29 +0530 |
From: Daniel Axtens <dja@axtens.net>
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>
Signed-off-by: Sudhakar Kuppusamy <sudhakar@linux.ibm.com>
---
docs/grub.texi | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/docs/grub.texi b/docs/grub.texi
index c07d5d0dc..6e483298d 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -9135,6 +9135,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.43.5
- [PATCH v1 00/21] Appended Signature Secure Boot Support for PowerPC, Sudhakar Kuppusamy, 2024/12/18
- [PATCH v1 01/21] powerpc-ieee1275: Add support for signing grub with an appended signature, Sudhakar Kuppusamy, 2024/12/18
- [PATCH v1 02/21] docs/grub: Document signing grub under UEFI, Sudhakar Kuppusamy, 2024/12/18
- [PATCH v1 03/21] docs/grub: Document signing grub with an appended signature,
Sudhakar Kuppusamy <=
- [PATCH v1 04/21] dl: provide a fake grub_dl_set_persistent for the emu target, Sudhakar Kuppusamy, 2024/12/18
- [PATCH v1 05/21] pgp: factor out rsa_pad, Sudhakar Kuppusamy, 2024/12/18
- [PATCH v1 06/21] crypto: move storage for grub_crypto_pk_* to crypto.c, Sudhakar Kuppusamy, 2024/12/18
- [PATCH v1 07/21] grub-install: support embedding x509 certificates, Sudhakar Kuppusamy, 2024/12/18
- [PATCH v1 09/21] appended signatures: parse PKCS#7 signedData and X.509 certificates, Sudhakar Kuppusamy, 2024/12/18