Reviewed-by: Jiewen Yao <jiewen....@intel.com> > -----Original Message----- > From: Grzegorz Bernacki <g...@semihalf.com> > Sent: Thursday, July 1, 2021 5:18 PM > To: devel@edk2.groups.io > Cc: l...@nuviainc.com; ardb+tianoc...@kernel.org; Samer.El-Haj- > mahm...@arm.com; sunny.w...@arm.com; m...@semihalf.com; > upstr...@semihalf.com; Yao, Jiewen <jiewen....@intel.com>; Wang, Jian J > <jian.j.w...@intel.com>; Xu, Min M <min.m...@intel.com>; > ler...@redhat.com; sami.muja...@arm.com; af...@apple.com; Ni, Ray > <ray...@intel.com>; Justen, Jordan L <jordan.l.jus...@intel.com>; > rebe...@bsdio.com; gre...@freebsd.org; thomas.abra...@arm.com; Chiu, > Chasel <chasel.c...@intel.com>; Desimone, Nathaniel L > <nathaniel.l.desim...@intel.com>; gaolim...@byosoft.com.cn; Dong, Eric > <eric.d...@intel.com>; Kinney, Michael D <michael.d.kin...@intel.com>; Sun, > Zailiang <zailiang....@intel.com>; Qian, Yi <yi.q...@intel.com>; > gra...@nuviainc.com; r...@semihalf.com; p...@akeo.ie; Grzegorz Bernacki > <g...@semihalf.com> > Subject: [PATCH v5 08/10] SecurityPkg: Add EnrollFromDefaultKeys application. > > This application allows user to force key enrollment from > Secure Boot default variables. > > Signed-off-by: Grzegorz Bernacki <g...@semihalf.com> > --- > SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.inf | 47 > +++++++++ > SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.c | 109 > ++++++++++++++++++++ > 2 files changed, 156 insertions(+) > create mode 100644 > SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.inf > create mode 100644 > SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.c > > diff --git > a/SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.inf > b/SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.inf > new file mode 100644 > index 0000000000..4d79ca3844 > --- /dev/null > +++ b/SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.inf > @@ -0,0 +1,47 @@ > +## @file > +# Enroll PK, KEK, db, dbx from Default variables > +# > +# Copyright (c) 2021, ARM Ltd. All rights reserved.<BR> > +# Copyright (c) 2021, Semihalf All rights reserved.<BR> > +# SPDX-License-Identifier: BSD-2-Clause-Patent > +## > + > +[Defines] > + INF_VERSION = 1.28 > + BASE_NAME = EnrollFromDefaultKeysApp > + FILE_GUID = 6F18CB2F-1293-4BC1-ABB8-35F84C71812E > + MODULE_TYPE = UEFI_APPLICATION > + VERSION_STRING = 0.1 > + ENTRY_POINT = UefiMain > + > +[Sources] > + EnrollFromDefaultKeysApp.c > + > +[Packages] > + MdeModulePkg/MdeModulePkg.dec > + MdePkg/MdePkg.dec > + SecurityPkg/SecurityPkg.dec > + > +[Guids] > + gEfiCertPkcs7Guid > + gEfiCertSha256Guid > + gEfiCertX509Guid > + gEfiCustomModeEnableGuid > + gEfiGlobalVariableGuid > + gEfiImageSecurityDatabaseGuid > + gEfiSecureBootEnableDisableGuid > + > +[Protocols] > + gEfiSmbiosProtocolGuid ## CONSUMES > + > +[LibraryClasses] > + BaseLib > + BaseMemoryLib > + DebugLib > + MemoryAllocationLib > + PrintLib > + UefiApplicationEntryPoint > + UefiBootServicesTableLib > + UefiLib > + UefiRuntimeServicesTableLib > + SecureBootVariableLib > diff --git a/SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.c > b/SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.c > new file mode 100644 > index 0000000000..3407c1c4b9 > --- /dev/null > +++ b/SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.c > @@ -0,0 +1,109 @@ > +/** @file > + Enroll default PK, KEK, db, dbx. > + > +Copyright (c) 2021, ARM Ltd. All rights reserved.<BR> > +Copyright (c) 2021, Semihalf All rights reserved.<BR> > + > +SPDX-License-Identifier: BSD-2-Clause-Patent > +**/ > + > +#include <Guid/AuthenticatedVariableFormat.h> // > gEfiCustomModeEnableGuid > +#include <Guid/GlobalVariable.h> // EFI_SETUP_MODE_NAME > +#include <Guid/ImageAuthentication.h> // > EFI_IMAGE_SECURITY_DATABASE > +#include <Library/BaseLib.h> // GUID_STRING_LENGTH > +#include <Library/BaseMemoryLib.h> // CopyGuid() > +#include <Library/DebugLib.h> // ASSERT() > +#include <Library/MemoryAllocationLib.h> // FreePool() > +#include <Library/PrintLib.h> // AsciiSPrint() > +#include <Library/UefiBootServicesTableLib.h> // gBS > +#include <Library/UefiLib.h> // AsciiPrint() > +#include <Library/UefiRuntimeServicesTableLib.h> // gRT > +#include <Uefi/UefiMultiPhase.h> > +#include <Library/SecureBootVariableLib.h> > + > +/** > + Entry point function of this shell application. > +**/ > +EFI_STATUS > +EFIAPI > +UefiMain ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + EFI_STATUS Status; > + UINT8 SetupMode; > + > + Status = GetSetupMode (&SetupMode); > + if (EFI_ERROR (Status)) { > + AsciiPrint ("EnrollFromDefaultKeysApp: Cannot get SetupMode > variable: %r\n", Status); > + return 1; > + } > + > + if (SetupMode == USER_MODE) { > + AsciiPrint ("EnrollFromDefaultKeysApp: Skipped - USER_MODE\n"); > + return 1; > + } > + > + Status = SetSecureBootMode (CUSTOM_SECURE_BOOT_MODE); > + if (EFI_ERROR (Status)) { > + AsciiPrint ("EnrollFromDefaultKeysApp: Cannot set > CUSTOM_SECURE_BOOT_MODE: %r\n", Status); > + return 1; > + } > + > + Status = EnrollDbFromDefault (); > + if (EFI_ERROR (Status)) { > + AsciiPrint ("EnrollFromDefaultKeysApp: Cannot enroll db: %r\n", Status); > + goto error; > + } > + > + Status = EnrollDbxFromDefault (); > + if (EFI_ERROR (Status)) { > + AsciiPrint ("EnrollFromDefaultKeysApp: Cannot enroll dbt: %r\n", Status); > + } > + > + Status = EnrollDbtFromDefault (); > + if (EFI_ERROR (Status)) { > + AsciiPrint ("EnrollFromDefaultKeysApp: Cannot enroll dbx: %r\n", Status); > + } > + > + Status = EnrollKEKFromDefault (); > + if (EFI_ERROR (Status)) { > + AsciiPrint ("EnrollFromDefaultKeysApp: Cannot enroll KEK: %r\n", Status); > + goto cleardbs; > + } > + > + Status = EnrollPKFromDefault (); > + if (EFI_ERROR (Status)) { > + AsciiPrint ("EnrollFromDefaultKeysApp: Cannot enroll PK: %r\n", Status); > + goto clearKEK; > + } > + > + Status = SetSecureBootMode (STANDARD_SECURE_BOOT_MODE); > + if (EFI_ERROR (Status)) { > + AsciiPrint ( > + "EnrollFromDefaultKeysApp: Cannot set CustomMode to > STANDARD_SECURE_BOOT_MODE\n" > + "Please do it manually, otherwise system can be easily compromised\n" > + ); > + } > + return 0; > + > +clearKEK: > + DeleteKEK (); > + > +cleardbs: > + DeleteDbt (); > + DeleteDbx (); > + DeleteDb (); > + > +error: > + Status = SetSecureBootMode (STANDARD_SECURE_BOOT_MODE); > + if (EFI_ERROR (Status)) { > + AsciiPrint ( > + "EnrollFromDefaultKeysApp: Cannot set CustomMode to > STANDARD_SECURE_BOOT_MODE\n" > + "Please do it manually, otherwise system can be easily compromised\n" > + ); > + } > + > + return 1; > +} > -- > 2.25.1
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#77522): https://edk2.groups.io/g/devel/message/77522 Mute This Topic: https://groups.io/mt/83912196/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-