I don't think so. rEFInd isn't installed by default with any of the
default distributions that I'm aware of; users install it manually as
an alternative to GRUB. I think a note on the Secure Boot wiki page
would be sufficient to let people who use rEFInd know that they should
explicitly check for its keys before making their own.

Jason
---
Now instead of four in the eights place /
you’ve got three, ‘Cause you added one  /
(That is to say, eight) to the two,     /
But you can’t take seven from three,    /
So you look at the sixty-fours....


On Tue, Apr 9, 2019 at 9:18 PM Ping Cheng <pingli...@gmail.com> wrote:
>
> On Tue, Apr 9, 2019 at 3:17 PM Gerecke, Jason <killert...@gmail.com> wrote:
>>
>> From: Jason Gerecke <jason.gere...@wacom.com>
>>
>> Previously we would only automatically discover Ubuntu's shim MOK if one
>> had been created. We now also try to use the kernel's autogenerated key
>> if present, and the key generated by rEFInd (though this may be inside
>> a directory that only root can read from).
>
>
> Does this mean we should prompt users to compile input-wacom under root?
>
> It’s quite a lot of work. Thank you for your effort, Jason!
>
> Acked-by: Ping Cheng <ping.ch...@wacom.com> for the whole set.
>
> Cheers,
> Ping
>
>>
>>
>> Signed-off-by: Jason Gerecke <jason.gere...@wacom.com>
>> ---
>>  configure.ac | 52 ++++++++++++++++++++++++++++++++--------------------
>>  1 file changed, 32 insertions(+), 20 deletions(-)
>>
>> diff --git a/configure.ac b/configure.ac
>> index fa88ade..5353705 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -248,6 +248,25 @@ dnl 
>> =======================================================
>>  dnl Module signing
>>  AC_DEFUN([WACOM_LINUX_READ_CONFIG], [grep -sh '^$1='  
>> $WCM_KERNEL_DIR/.config /boot/config-$MODUTS | head -n1 | cut -d= -f2- | sed 
>> -e 's/^"\(.*\)"$/\1/'])
>>
>> +AC_DEFUN([WACOM_LINUX_FILE_IF_EXISTS], [test -f "$1" && readlink -e "$1"])
>> +
>> +AC_DEFUN([WACOM_LINUX_CHECK_KEYCERT],
>> +if test "$MODSIGN_PRIVFILE" = "yes" -o -z "$MODSIGN_PRIVFILE"; then
>> +       AC_MSG_CHECKING(for $1 key at $2)
>> +       KEYFILE=$(WACOM_LINUX_FILE_IF_EXISTS([$2]))
>> +       RESULT=$(test -z "$KEYFILE" && echo "no" || echo "yes")
>> +       AC_MSG_RESULT([$RESULT])
>> +       AC_MSG_CHECKING(for $1 cert at $3)
>> +       CERTFILE=$(WACOM_LINUX_FILE_IF_EXISTS([$3]))
>> +       RESULT=$(test -z "$CERTFILE" && echo "no" || echo "yes")
>> +       AC_MSG_RESULT([$RESULT])
>> +       if test -n "$KEYFILE" -a -n "$CERTFILE"; then
>> +               MODSIGN_PRIVFILE="$KEYFILE"
>> +               MODSIGN_CERTFILE="$CERTFILE";
>> +       fi
>> +fi)
>> +
>> +
>>  MODSIGN_ENABLE=default
>>  MODSIGN_HASHALGO=
>>  MODSIGN_PRIVFILE=
>> @@ -290,20 +309,6 @@ if test "$MODSIGN_ENABLE" = "yes" -o "$MODSIGN_ENABLE" 
>> = "default"; then
>>
>>
>>
>> -       # There is no standard location for storing kernel signing keys
>> -       # and certificates. The kernel itself has CONFIG_MODULE_SIG_KEY
>> -       # (which contains a key and cert) which likely points to a file
>> -       # that doesn't exist unless you built the kernel yourself. Most
>> -       # distributions use the "shim" bootloader which allows "machine
>> -       # owner keys" (MOK) to be enrolled by the end-user, but only
>> -       # Ubuntu provides a tool to automatically generate these keys
>> -       # (`update-secureboot-policy --new-key`); other distros rely on
>> -       # the user generating the key/cert themselves and keeping it in a
>> -       # suitably-safe location.
>> -       #
>> -       # The kernel should automatically try to sign modules as part of
>> -       # the `make modules_install` step, so that covers the first case.
>> -       # In the second case the best we can do is try Ubuntu's location.
>>         AC_ARG_WITH(signing-key,
>>                 AS_HELP_STRING([--with-signing-key=<trusted.priv>], [Specify 
>> module signing key location]),
>>                 [MODSIGN_PRIVFILE="$withval"])
>> @@ -311,12 +316,19 @@ if test "$MODSIGN_ENABLE" = "yes" -o "$MODSIGN_ENABLE" 
>> = "default"; then
>>                 AS_HELP_STRING([--with-signing-cert=<trusted.der>], [Specify 
>> module signing cert location]),
>>                 [MODSIGN_CERTFILE="$withval"])
>>
>> -       if test "$MODSIGN_PRIVFILE" = "yes" -o -z "$MODSIGN_PRIVFILE"; then
>> -               MODSIGN_PRIVFILE=$(ls /var/lib/shim-signed/mok/MOK.priv 
>> 2>/dev/null || echo "$MODSIGN_PRIVFILE")
>> -       fi
>> -       if test "$MODSIGN_CERTFILE" = "yes" -o -z "$MODSIGN_CERTFILE"; then
>> -               MODSIGN_CERTFILE=$(ls /var/lib/shim-signed/mok/MOK.der 
>> 2>/dev/null || echo "$MODSIGN_CERTFILE")
>> -       fi
>> +       HASPRIVFILE=$(test "$MODSIGN_PRIVFILE" = "yes" -o -z 
>> "$MODSIGN_PRIVFILE" && echo 0 || echo 1)
>> +       HASCERTFILE=$(test "$MODSIGN_CERTFILE" = "yes" -o -z 
>> "$MODSIGN_CERTFILE" && echo 0 || echo 1)
>> +       if test "$HASPRIVFILE" -ne "$HASCERTFILE"; then
>> +               AC_MSG_ERROR([Options '--with-signing-key' and 
>> '--with-signing-cert' must either both be set or both be unset.])
>> +       elif test "$HASPRIVFILE" -eq 1; then
>> +               # Try to get absolute path, if possible
>> +               
>> MODSIGN_PRIVFILE=$(WACOM_LINUX_FILE_IF_EXISTS([$MODSIGN_PRIVFILE]) || echo 
>> "$MODSIGN_PRIVFILE")
>> +               
>> MODSIGN_CERTFILE=$(WACOM_LINUX_FILE_IF_EXISTS([$MODSIGN_CERTFILE]) || echo 
>> "$MODSIGN_PRIVFILE")
>> +       else
>> +               WACOM_LINUX_CHECK_KEYCERT([kernel autogenerated], 
>> $WCM_KERNEL_DIR/$(WACOM_LINUX_READ_CONFIG([CONFIG_MODULE_SIG_KEY])), 
>> [$WCM_KERNEL_DIR/certs/signing_key.x509])
>> +               WACOM_LINUX_CHECK_KEYCERT([shim MOK], 
>> [/var/lib/shim-signed/mok/MOK.priv], [/var/lib/shim-signed/mok/MOK.der])
>> +               WACOM_LINUX_CHECK_KEYCERT([rEFInd MOK], 
>> [/etc/refind.d/keys/refind_local.key], [/etc/refind.d/keys/refind_local.cer])
>> +       fi
>>
>>         AC_MSG_CHECKING(for module signing key)
>>         AC_MSG_RESULT([$MODSIGN_PRIVFILE])
>> --
>> 2.21.0
>>


_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to