[PATCH v1 2/2] test: check default GUID selection of signature database variables
Heinrich Schuchardt
xypron.glpk at gmx.de
Thu Jul 16 21:56:04 CEST 2026
On 7/14/26 11:49, Aristo Chen wrote:
> The name to GUID mapping that "env set -e" applies when no -guid
> option is given was not covered by any test, which is how the wrong
> default GUID for "dbr" went unnoticed until the previous commit.
>
> Add a test case that enrolls each of db, dbx, dbt and dbr in setup
> mode without an explicit -guid option and checks that every variable
> is created under the image security database GUID and not under the
> global variable GUID. This is also the first coverage of dbt and dbr
> anywhere under test/. The enrollment happens in setup mode because
> once secure boot is enabled, efi_variable_authenticate() only accepts
> writes to PK, KEK, db and dbx.
>
> Signed-off-by: Aristo Chen <aristo.chen at canonical.com>
> ---
> test/py/tests/test_efi_secboot/conftest.py | 8 +++++
> .../py/tests/test_efi_secboot/test_authvar.py | 30 +++++++++++++++++++
> 2 files changed, 38 insertions(+)
>
> diff --git a/test/py/tests/test_efi_secboot/conftest.py b/test/py/tests/test_efi_secboot/conftest.py
> index 76b8f9fa0a3..0755497d46d 100644
> --- a/test/py/tests/test_efi_secboot/conftest.py
> +++ b/test/py/tests/test_efi_secboot/conftest.py
> @@ -96,6 +96,14 @@ def efi_boot_env(request, ubman):
> check_call('cd %s; %ssign-efi-sig-list -t "2020-04-05" -c KEK.crt -k KEK.key dbx db.esl dbx_db.auth'
> % (mnt_point, EFITOOLS_PATH),
> shell=True)
> + # dbt (with TEST_db certificate)
> + check_call('cd %s; %ssign-efi-sig-list -t "2020-04-05" -c KEK.crt -k KEK.key dbt db.esl dbt.auth'
> + % (mnt_point, EFITOOLS_PATH),
> + shell=True)
> + # dbr (with TEST_db certificate)
> + check_call('cd %s; %ssign-efi-sig-list -t "2020-04-05" -c KEK.crt -k KEK.key dbr db.esl dbr.auth'
> + % (mnt_point, EFITOOLS_PATH),
> + shell=True)
>
> # Copy image
> check_call('cp %s/lib/efi_loader/helloworld.efi %s' %
> diff --git a/test/py/tests/test_efi_secboot/test_authvar.py b/test/py/tests/test_efi_secboot/test_authvar.py
> index 7b45f8fb814..45350b19b06 100644
> --- a/test/py/tests/test_efi_secboot/test_authvar.py
> +++ b/test/py/tests/test_efi_secboot/test_authvar.py
> @@ -279,3 +279,33 @@ class TestEfiAuthVar(object):
> output = ubman.run_command(
> 'printenv -e SetupMode')
> assert '00000000: 01' in output
> +
> + def test_efi_var_auth6(self, ubman, efi_boot_env):
> + """
> + Test Case 6 - Default GUID of signature database variables
> + """
> + ubman.restart_uboot()
> + disk_img = efi_boot_env
> + with ubman.log.section('Test Case 6a'):
> + # Test Case 6a, install signature database variables in setup
> + # mode without -guid
> + output = ubman.run_command_list([
> + 'host bind 0 %s' % disk_img,
> + 'printenv -e SetupMode'])
> + assert '00000000: 01' in ''.join(output)
> +
> + for var in ('db', 'dbx', 'dbt', 'dbr'):
Thank you Aristo for updating the test.
Should we check the GUID of PK and KEK too?
Best regards
Heinrich
> + output = ubman.run_command_list([
> + 'fatload host 0:1 4000000 %s.auth' % var,
> + 'setenv -e -nv -bs -rt -at -i 4000000:$filesize %s' % var,
> + 'printenv -e -n -guid d719b2cb-3d3a-4596-a3bc-dad00e67656f %s' % var])
> + assert 'Failed to set EFI variable' not in ''.join(output)
> + assert '%s:' % var in ''.join(output)
> +
> + with ubman.log.section('Test Case 6b'):
> + # Test Case 6b, variables must not exist under the global
> + # variable GUID
> + for var in ('db', 'dbx', 'dbt', 'dbr'):
> + output = ubman.run_command(
> + 'printenv -e -n -guid 8be4df61-93ca-11d2-aa0d-00e098032b8c %s' % var)
> + assert '\"%s\" not defined' % var in output
More information about the U-Boot
mailing list