@@ -32,6 +32,7 @@ umask 022
3232readonly REQUIRED_PKGS=" base-files libgcc dash coreutils sed tar gawk syslinux grub-i386-efi grub-x86_64-efi squashfs-tools xorriso"
3333readonly INITRAMFS_PKGS=" binutils xz device-mapper dhclient dracut-network openresolv"
3434readonly PROGNAME=$( basename " $0 " )
35+ toSign=0
3536
3637info_msg () {
3738 printf " \033[1m$@ \n\033[m"
@@ -199,6 +200,11 @@ generate_isolinux_boot() {
199200 " $ISOLINUX_DIR " /isolinux.cfg
200201}
201202
203+ dosign () {
204+ print_step " Signing $2 ..."
205+ sbsign --key $DBKEY --cert $DBCRT --output " $1 " .signed " $1 "
206+ }
207+
202208generate_grub_efi_boot () {
203209 cp -f grub/grub.cfg " $GRUB_DIR "
204210 cp -f grub/grub_void.cfg.in " $GRUB_DIR " /grub_void.cfg
@@ -237,9 +243,8 @@ generate_grub_efi_boot() {
237243 cp -f " $VOIDHOSTDIR " /tmp/bootia32.efi " ${GRUB_EFI_TMPDIR} " /EFI/BOOT/BOOTIA32.EFI
238244
239245 # Bootloader signing
240- if ([ $toSign ] && [ -f " ${GRUB_EFI_TMPDIR} " /EFI/BOOT/BOOTX32.EFI ]); then
241- print_step " Signing BOOTX32.EFI..."
242- sbsign --key $DBKEY --cert $DBCRT --output " ${GRUB_EFI_TMPDIR} " /EFI/BOOT/BOOTX32-signed.EFI " ${GRUB_EFI_TMPDIR} " /EFI/BOOT/BOOTX32.EFI
246+ if [ $toSign -eq 1 ] && [ -f " ${GRUB_EFI_TMPDIR} " /EFI/BOOT/BOOTX32.EFI ]; then
247+ dosign " ${GRUB_EFI_TMPDIR} " /EFI/BOOT/BOOTX32.EFI BOOTX32.EFI
243248 fi
244249
245250 xbps-uchroot " $VOIDHOSTDIR " grub-mkstandalone -- \
@@ -255,9 +260,8 @@ generate_grub_efi_boot() {
255260 cp -f " $VOIDHOSTDIR " /tmp/bootx64.efi " ${GRUB_EFI_TMPDIR} " /EFI/BOOT/BOOTX64.EFI
256261
257262 # Bootloader signing
258- if ([ $toSign ] && [ -f " ${GRUB_EFI_TMPDIR} " /EFI/BOOT/BOOTX64.EFI ]); then
259- print_step " Signing BOOTX64.EFI..."
260- sbsign --key $DBKEY --cert $DBCRT --output " ${GRUB_EFI_TMPDIR} " /EFI/BOOT/BOOTX64-signed.EFI " ${GRUB_EFI_TMPDIR} " /EFI/BOOT/BOOTX64.EFI
263+ if [ $toSign -eq 1 ] && [ -f " ${GRUB_EFI_TMPDIR} " /EFI/BOOT/BOOTX64.EFI ]; then
264+ dosign " ${GRUB_EFI_TMPDIR} " /EFI/BOOT/BOOTX64.EFI BOOTX64.EFI
261265 fi
262266
263267 umount " $GRUB_EFI_TMPDIR "
357361
358362# The -d and -t options are complementary. If one exists, the other must also exist.
359363# If these options are set, I also check sbsign command.
360- if ([ -z $DBKEY ] && [ ! -z $DBCRT ]) || ([ ! -z $DBKEY ] && [ -z $DBCRT ]); then
364+ if ([ $DBKEY ] && [ ! $DBCRT ]) || ([ ! $DBKEY ] && [ $DBCRT ]); then
361365 die " Must be set a key and certificate via -d and -t option, exiting..."
362- elif ( [ $DBKEY ] && [ $DBCRT ]) ; then
363- if [ $DBKEY ] && [ ! -f $DBKEY ]; then
366+ elif [ $DBKEY ] && [ $DBCRT ]; then
367+ if [ ! -f $DBKEY ]; then
364368 die " $DBKEY does not exist, exiting..."
365- elif [ $DBCRT ] && [ ! -f $DBCRT ]; then
369+ elif [ ! -f $DBCRT ]; then
366370 die " $DBCRT does not exist, exiting..."
367- elif ! [ -x " $( command -v sbsign) " ] ; then
371+ elif ! command -v sbsign > /dev/null ; then
368372 die " sbsign command does not exist, exiting..."
369373 else
370- toSign=true
374+ toSign=1
371375 fi
372376fi
373377
0 commit comments