The topic is done or dropped?

Any status update or decision making?

Thanks
Guomin
> -----Original Message-----
> From: Kinney, Michael D <michael.d.kin...@intel.com>
> Sent: Tuesday, July 7, 2020 11:42 PM
> To: devel@edk2.groups.io; l...@mellanox.com; Jiang, Guomin
> <guomin.ji...@intel.com>; Xu, Wei6 <wei6...@intel.com>; Gao, Liming
> <liming....@intel.com>; Ni, Ray <ray...@intel.com>; Zimmer, Vincent
> <vincent.zim...@intel.com>; Rothman, Michael A
> <michael.a.roth...@intel.com>; Kinney, Michael D
> <michael.d.kin...@intel.com>
> Cc: Sean Brogan <sean.bro...@microsoft.com>
> Subject: RE: [edk2-devel] [PATCH] FmpDevicePkg: Enhance capsule
> verification with secure boot keys
> 
> Hi Liming Sun,
> 
> Thank you for providing the additional details.
> 
> The use case description is very brief and appears that it may not follow
> some of the UEFI Specification requirements.
> I want to make sure we have a clear understanding of the use cases with
> some of the UEFI Secure Boot and Firmware Updates experts.
> 
> We have a TianoCore design meeting that is hosted by Ray Ni.
> 
> Can you please work with Ray to get onto the agenda for that meeting where
> you can present your ideas?
> 
> Thanks,
> 
> Mike
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Liming
> > Sun
> > Sent: Monday, July 6, 2020 1:59 PM
> > To: Kinney, Michael D <michael.d.kin...@intel.com>;
> > devel@edk2.groups.io; Jiang, Guomin <guomin.ji...@intel.com>; Xu,
> Wei6
> > <wei6...@intel.com>; Gao, Liming <liming....@intel.com>
> > Cc: Sean Brogan <sean.bro...@microsoft.com>
> > Subject: Re: [edk2-devel] [PATCH] FmpDevicePkg: Enhance capsule
> > verification with secure boot keys
> >
> > Thanks Michael. Below is the use case:
> >
> > - Device vendor provides devices with UEFI preinstalled;
> > - Customer gets the device in non-secure-boot mode by default, and
> > would like to enroll the secure boot keys themselves in some automatic
> > way (such as using capsule).
> >
> > PcdFmpDevicePkcs7CertBufferXdr is not used for two reasons for this
> > use case:
> > 1. Simplicity. So vendor doesn't need to be involved in the key
> > management, and customer could create and sign the capsule themselves.
> > 2. Secure reasons. Once customer fully own the device and put it into
> > secure-boot mode, even the capsule from the device vendor couldn't be
> > applied without being signed by customer. (The hardcoded
> > PcdFmpDevicePkcs7CertBufferXdr couldn't achieve this goal).
> >
> > Thanks,
> > Liming
> >
> > > -----Original Message-----
> > > From: Kinney, Michael D <michael.d.kin...@intel.com>
> > > Sent: Wednesday, July 1, 2020 1:43 PM
> > > To: devel@edk2.groups.io; Liming Sun
> > <l...@mellanox.com>; Jiang, Guomin
> > <guomin.ji...@intel.com>; Xu, Wei6
> > > <wei6...@intel.com>; Gao, Liming
> > <liming....@intel.com>; Kinney, Michael D <michael.d.kin...@intel.com>
> > > Cc: Sean Brogan <sean.bro...@microsoft.com>
> > > Subject: RE: [edk2-devel] [PATCH] FmpDevicePkg:
> > Enhance capsule verification with secure boot keys
> > >
> > > Liming Sun,
> > >
> > > Can you explain why you cannot use
> > PcdFmpDevicePkcs7CertBufferXdr
> > > for your use case?  I want to understand the use case
> > to see if
> > > that feature can be applied or if a minor enhancement
> > to this
> > > feature can work.
> > >
> > > Using the UEFI Secure Boot DB for anything other than
> > authentication
> > > of UEFI boot loaders is not recommended.
> > >
> > > Thanks,
> > >
> > > Mike
> > >
> > > > -----Original Message-----
> > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > > > Liming Sun
> > > > Sent: Wednesday, July 1, 2020 9:27 AM
> > > > To: Jiang, Guomin <guomin.ji...@intel.com>; devel@edk2.groups.io;
> > > > Xu, Wei6 <wei6...@intel.com>;
> > Gao,
> > > > Liming <liming....@intel.com>; Kinney, Michael D
> > > > <michael.d.kin...@intel.com>
> > > > Cc: Sean Brogan <sean.bro...@microsoft.com>
> > > > Subject: Re: [edk2-devel] [PATCH] FmpDevicePkg:
> > Enhance
> > > > capsule verification with secure boot keys
> > > >
> > > > >> But if your customer indeed want it, you can add
> > it
> > > > to your customization code.
> > > > Thanks. Yes, this is a behavior customer expects.
> > This
> > > > change just tries to provide a handy way to enroll initial keys.
> > > > So the initial keys could be carried in the capsule itself.
> > > > It also has "PcdFmpDeviceAllowSecureBootKeys"
> > disabled
> > > > by default, so it behaves the same as before.
> > > >
> > > > We'll try to use customization code instead as suggested.
> > > >
> > > > Thanks,
> > > > Liming
> > > >
> > > > > -----Original Message-----
> > > > > From: Jiang, Guomin <guomin.ji...@intel.com>
> > > > > Sent: Tuesday, June 30, 2020 8:56 PM
> > > > > To: Liming Sun <l...@mellanox.com>;
> > > > devel@edk2.groups.io; Xu, Wei6 <wei6...@intel.com>;
> > Gao,
> > > > Liming <liming....@intel.com>;
> > > > > Kinney, Michael D <michael.d.kin...@intel.com>
> > > > > Cc: Sean Brogan <sean.bro...@microsoft.com>
> > > > > Subject: RE: [edk2-devel] [PATCH] FmpDevicePkg:
> > > > Enhance capsule verification with secure boot keys
> > > > >
> > > > > I want to ask your one question: are you sure that
> > > > every mother board which deliver to customer will
> > enable
> > > > the secure boot mode?
> > > > >
> > > > > I just emphasize that I want to make sure that the
> > > > device firmware come from the device vendor.
> > > > >
> > > > > Thanks for your effort, the patch is good, I just
> > > > think it is not suitable for common solution.
> > > > >
> > > > > But if your customer indeed want it, you can add
> > it to
> > > > your customization code.
> > > > >
> > > > > Thanks
> > > > > Guomin
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Liming Sun <l...@mellanox.com>
> > > > > > Sent: Tuesday, June 30, 2020 8:47 PM
> > > > > > To: devel@edk2.groups.io; Jiang, Guomin
> > > > <guomin.ji...@intel.com>; Xu,
> > > > > > Wei6 <wei6...@intel.com>; Gao, Liming
> > > > <liming....@intel.com>; Kinney,
> > > > > > Michael D <michael.d.kin...@intel.com>
> > > > > > Cc: Sean Brogan <sean.bro...@microsoft.com>
> > > > > > Subject: RE: [edk2-devel] [PATCH] FmpDevicePkg:
> > > > Enhance capsule
> > > > > > verification with secure boot keys
> > > > > >
> > > > > > Thanks Guomin.
> > > > > >
> > > > > > I still have one question. Let's assume we're
> > the
> > > > device vendor and we let
> > > > > > customer to enroll their keys. Once the keys are
> > > > enrolled, the device will be
> > > > > > in secure boot mode. Are you saying that the end
> > > > user could "have the ability
> > > > > > to enroll their DB without too many effort" even
> > > > after the secure boot has
> > > > > > been enabled already?
> > > > > >
> > > > > > Please correct me if I misunderstood it.
> > > > > >
> > > > > > - Liming
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: devel@edk2.groups.io
> > <devel@edk2.groups.io>
> > > > On Behalf Of
> > > > > > Guomin
> > > > > > > Jiang via groups.io
> > > > > > > Sent: Tuesday, June 30, 2020 3:33 AM
> > > > > > > To: devel@edk2.groups.io; Liming Sun
> > > > <l...@mellanox.com>; Xu, Wei6
> > > > > > > <wei6...@intel.com>; Gao, Liming
> > > > <liming....@intel.com>; Kinney,
> > > > > > > Michael D <michael.d.kin...@intel.com>
> > > > > > > Cc: Sean Brogan <sean.bro...@microsoft.com>
> > > > > > > Subject: Re: [edk2-devel] [PATCH]
> > FmpDevicePkg:
> > > > Enhance capsule
> > > > > > > verification with secure boot keys
> > > > > > >
> > > > > > > Liming,
> > > > > > >
> > > > > > > The end user have the ability to enroll their
> > DB
> > > > without too many effort.
> > > > > > >
> > > > > > > And I think some end user also have the
> > ability to
> > > > get insecure firmware
> > > > > > which not from the device vendor.
> > > > > > >
> > > > > > > I suggest that tell the device vendor that it
> > is
> > > > critical that set the
> > > > > > PcdFmpDevicePkcs7CertBufferXdr rather than
> > decrease
> > > > the security.
> > > > > > >
> > > > > > > Best Regards
> > > > > > > Guomin
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: devel@edk2.groups.io
> > > > <devel@edk2.groups.io> On Behalf Of
> > > > > > > > Liming Sun
> > > > > > > > Sent: Tuesday, June 30, 2020 11:33 AM
> > > > > > > > To: Jiang, Guomin <guomin.ji...@intel.com>;
> > > > devel@edk2.groups.io;
> > > > > > > > Xu,
> > > > > > > > Wei6 <wei6...@intel.com>; Gao, Liming
> > > > <liming....@intel.com>;
> > > > > > > > Kinney, Michael D
> > <michael.d.kin...@intel.com>
> > > > > > > > Cc: Sean Brogan <sean.bro...@microsoft.com>
> > > > > > > > Subject: Re: [edk2-devel] [PATCH]
> > FmpDevicePkg:
> > > > Enhance capsule
> > > > > > > > verification with secure boot keys
> > > > > > > >
> > > > > > > > Thanks Guomin for the comments!
> > > > > > > >
> > > > > > > > Below is the main scenario for the proposed
> > > > change:
> > > > > > > >
> > > > > > > > - Device Manufacturer provides the devices
> > with
> > > > UEFI preinstalled in
> > > > > > > > non- secure state and no hard-coded keys (
> > > > > > PcdFmpDevicePkcs7CertBufferXdr).
> > > > > > > >
> > > > > > > > - Customer (not End-User) enrolls their own
> > keys
> > > > in trusted
> > > > > > > > environment before delivering to End User.
> > > > > > > > This capsule approach can be used for large
> > > > deployment without
> > > > > > > > involving any private keys.
> > > > > > > >
> > > > > > > > Yes, I do agree that once it's delivered to
> > End
> > > > User it won't be
> > > > > > > > considered secure.
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > Liming
> > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: Jiang, Guomin
> > <guomin.ji...@intel.com>
> > > > > > > > > Sent: Sunday, June 28, 2020 11:18 PM
> > > > > > > > > To: devel@edk2.groups.io; Liming Sun
> > > > <l...@mellanox.com>; Xu, Wei6
> > > > > > > > > <wei6...@intel.com>; Gao, Liming
> > > > <liming....@intel.com>; Kinney,
> > > > > > > > > Michael D <michael.d.kin...@intel.com>
> > > > > > > > > Cc: Sean Brogan
> > <sean.bro...@microsoft.com>
> > > > > > > > > Subject: RE: [edk2-devel] [PATCH]
> > > > FmpDevicePkg: Enhance capsule
> > > > > > > > > verification with secure boot keys
> > > > > > > > >
> > > > > > > > > I think it have some vulnerability, the
> > case
> > > > as below.
> > > > > > > > >
> > > > > > > > > 1. Untrusted End User enroll the new DB
> > key ->
> > > > sign the untrusted
> > > > > > > > > device firmware -> flash the untrusted
> > device
> > > > firmware -> the
> > > > > > > > > system will
> > > > > > > > become unsafe.
> > > > > > > > >
> > > > > > > > > I think the end user is untrusted and we
> > need
> > > > to make sure only
> > > > > > > > > few person
> > > > > > > > can have the privilege.
> > > > > > > > >
> > > > > > > > > Best Regards
> > > > > > > > > Guomin
> > > > > > > > >
> > > > > > > > > > -----Original Message-----
> > > > > > > > > > From: devel@edk2.groups.io
> > > > <devel@edk2.groups.io> On Behalf Of
> > > > > > > > > > Liming Sun
> > > > > > > > > > Sent: Saturday, June 20, 2020 1:48 AM
> > > > > > > > > > To: Xu, Wei6 <wei6...@intel.com>; Gao,
> > > > Liming
> > > > > > > > > > <liming....@intel.com>; Kinney, Michael
> > D
> > > > > > > > > > <michael.d.kin...@intel.com>
> > > > > > > > > > Cc: Liming Sun <l...@mellanox.com>;
> > > > devel@edk2.groups.io; Sean
> > > > > > > > > > Brogan <sean.bro...@microsoft.com>
> > > > > > > > > > Subject: [edk2-devel] [PATCH]
> > FmpDevicePkg:
> > > > Enhance capsule
> > > > > > > > > > verification with secure boot keys
> > > > > > > > > >
> > > > > > > > > > This commit enhances the FmpDevicePkg
> > > > package to optionally
> > > > > > > > > > verify capsule with the secure boot keys
> > > > when
> > > > > > > > > > PcdFmpDevicePkcs7CertBufferXdr is not
> > set
> > > > and the new PCD
> > > > > > > > > > variable PcdFmpDeviceAllowSecureBootKeys
> > is
> > > > configured. Below is
> > > > > > > > > > the check
> > > > > > > > logic:
> > > > > > > > > >   - Pass if verified with PK key, or PK
> > key
> > > > not set yet;
> > > > > > > > > >   - Deny if verified with the DBX keys;
> > > > > > > > > >   - Verified it against the DB keys;
> > > > > > > > > >
> > > > > > > > > > One purpose for this change is to auto-
> > > > deploy the UEFI secure
> > > > > > > > > > boot keys with UEFI capsule. Initially
> > it's
> > > > done in trusted environment.
> > > > > > > > > > Once secure boot is enabled, the same
> > keys
> > > > will be used to
> > > > > > > > > > verify the signed capsules as well for
> > > > further updates.
> > > > > > > > > >
> > > > > > > > > > Signed-off-by: Liming Sun
> > > > <l...@mellanox.com>
> > > > > > > > > > ---
> > > > > > > > > >  FmpDevicePkg/FmpDevicePkg.dec     |   6
> > +++
> > > > > > > > > >  FmpDevicePkg/FmpDxe/FmpDxe.c      | 109
> > > > > > > > > > ++++++++++++++++++++++++++++++++++++--
> > > > > > > > > >  FmpDevicePkg/FmpDxe/FmpDxe.h      |   1
> > +
> > > > > > > > > >  FmpDevicePkg/FmpDxe/FmpDxe.inf    |   3
> > ++
> > > > > > > > > >  FmpDevicePkg/FmpDxe/FmpDxeLib.inf |   1
> > +
> > > > > > > > > >  5 files changed, 117 insertions(+), 3
> > > > deletions(-)
> > > > > > > > > >
> > > > > > > > > > diff --git
> > a/FmpDevicePkg/FmpDevicePkg.dec
> > > > > > > > > > b/FmpDevicePkg/FmpDevicePkg.dec index
> > > > cab63f5..3aeb89c 100644
> > > > > > > > > > --- a/FmpDevicePkg/FmpDevicePkg.dec
> > > > > > > > > > +++ b/FmpDevicePkg/FmpDevicePkg.dec
> > > > > > > > > > @@ -126,6 +126,12 @@
> > > > > > > > > >    # @Prompt Firmware Device Image Type
> > ID
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > >
> > > >
> > gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid|
> > > > {0}|VOID
> > > > > > > > > > *|0x40000010
> > > > > > > > > >
> > > > > > > > > > +  ## This option is used to verify the
> > > > capsule using secure
> > > > > > > > > > + boot keys if the  #
> > > > PcdFmpDevicePkcs7CertBufferXdr is not
> > > > > > configured.
> > > > > > > > > > + In such case, the check  # will pass
> > if
> > > > secure boot hasn't
> > > > > > > > > > + been enabled
> > > > > > > > yet.
> > > > > > > > > > +  # @A flag to tell whether to use
> > secure
> > > > boot keys when
> > > > > > > > > > PcdFmpDevicePkcs7CertBufferXdr is not
> > set.
> > > > > > > > > > +
> > > > > > > > > > +
> > > > > > > > > >
> > > > > > > >
> > > > > >
> > > >
> > gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceAllowSecureBootK
> > > > eys|0x0|
> > > > > > > > > > UINT8|
> > > > > > > > > > + 0x40000012
> > > > > > > > > > +
> > > > > > > > > >  [PcdsFixedAtBuild,
> > PcdsPatchableInModule,
> > > > PcdsDynamic,
> > > > > > > > PcdsDynamicEx]
> > > > > > > > > >    ## One or more PKCS7 certificates
> > used to
> > > > verify a firmware
> > > > > > > > > > device
> > > > > > > > capsule
> > > > > > > > > >    #  update image.  Encoded using the
> > > > Variable-Length Opaque
> > > > > > > > > > Data format of RFC diff --git
> > > > a/FmpDevicePkg/FmpDxe/FmpDxe.c
> > > > > > > > > > b/FmpDevicePkg/FmpDxe/FmpDxe.c index
> > > > 5884177..6f82aee 100644
> > > > > > > > > > --- a/FmpDevicePkg/FmpDxe/FmpDxe.c
> > > > > > > > > > +++ b/FmpDevicePkg/FmpDxe/FmpDxe.c
> > > > > > > > > > @@ -682,6 +682,102 @@ GetAllHeaderSize (
> > > > > > > > > >    return CalculatedSize;  }
> > > > > > > > > >
> > > > > > > > > > +EFI_STATUS
> > > > > > > > > > +CheckTheImageWithSecureBootVariable (
> > > > > > > > > > +  IN CONST CHAR16    *Name,
> > > > > > > > > > +  IN CONST EFI_GUID  *Guid,
> > > > > > > > > > +  IN CONST VOID      *Image,
> > > > > > > > > > +  IN UINTN           ImageSize
> > > > > > > > > > +  )
> > > > > > > > > > +{
> > > > > > > > > > +  EFI_STATUS          Status;
> > > > > > > > > > +  VOID                *Data;
> > > > > > > > > > +  UINTN               Length;
> > > > > > > > > > +  EFI_SIGNATURE_LIST  *CertList;
> > > > > > > > > > +  EFI_SIGNATURE_DATA  *CertData;
> > > > > > > > > > +  UINTN               CertCount;
> > > > > > > > > > +  UINTN               Index;
> > > > > > > > > > +
> > > > > > > > > > +  Status = GetVariable2 (Name, Guid,
> > &Data,
> > > > &Length);  if
> > > > > > > > > > + (EFI_ERROR
> > > > > > > > > > + (Status)) {
> > > > > > > > > > +    return EFI_NOT_FOUND;  }
> > > > > > > > > > +
> > > > > > > > > > +  CertList = (EFI_SIGNATURE_LIST *)
> > Data;
> > > > while ((Length > 0)
> > > > > > > > > > + && (Length >= CertList-
> > > > >SignatureListSize)) {
> > > > > > > > > > +    if (CompareGuid (&CertList-
> > > > >SignatureType, &gEfiCertX509Guid))
> > > > > > {
> > > > > > > > > > +      CertData  = (EFI_SIGNATURE_DATA
> > *)
> > > > ((UINT8 *) CertList +
> > > > > > > > > > +        sizeof (EFI_SIGNATURE_LIST) +
> > > > CertList->SignatureHeaderSize);
> > > > > > > > > > +      CertCount = (CertList-
> > > > >SignatureListSize - sizeof
> > > > > > > > > > + (EFI_SIGNATURE_LIST)
> > > > > > > > -
> > > > > > > > > > +        CertList->SignatureHeaderSize)
> > /
> > > > > > > > > > + CertList->SignatureSize;
> > > > > > > > > > +
> > > > > > > > > > +      for (Index = 0; Index <
> > CertCount;
> > > > Index++) {
> > > > > > > > > > +        Status = AuthenticateFmpImage (
> > > > > > > > > > +
> > > > (EFI_FIRMWARE_IMAGE_AUTHENTICATION *)Image,
> > > > > > > > > > +                   ImageSize,
> > > > > > > > > > +                   CertData-
> > >SignatureData,
> > > > > > > > > > +                   CertList-
> > >SignatureSize
> > > > - sizeof (EFI_GUID)
> > > > > > > > > > +                   );
> > > > > > > > > > +        if (!EFI_ERROR (Status))
> > > > > > > > > > +          goto Done;
> > > > > > > > > > +
> > > > > > > > > > +        CertData = (EFI_SIGNATURE_DATA
> > *)
> > > > ((UINT8 *) CertData +
> > > > > > > > > > + CertList-
> > > > > > > > > > >SignatureSize);
> > > > > > > > > > +      }
> > > > > > > > > > +    }
> > > > > > > > > > +
> > > > > > > > > > +    Length -= CertList-
> > >SignatureListSize;
> > > > > > > > > > +    CertList = (EFI_SIGNATURE_LIST *)
> > > > ((UINT8 *) CertList +
> > > > > > > > > > + CertList->SignatureListSize);  }
> > > > > > > > > > +
> > > > > > > > > > +Done:
> > > > > > > > > > +  FreePool (Data);
> > > > > > > > > > +  return Status;
> > > > > > > > > > +}
> > > > > > > > > > +
> > > > > > > > > > +EFI_STATUS
> > > > > > > > > > +CheckTheImageWithSecureBootKeys (
> > > > > > > > > > +  IN  CONST VOID  *Image,
> > > > > > > > > > +  IN  UINTN       ImageSize
> > > > > > > > > > +  )
> > > > > > > > > > +{
> > > > > > > > > > +  EFI_STATUS  Status;
> > > > > > > > > > +
> > > > > > > > > > +  // PK check.
> > > > > > > > > > +  Status =
> > > > CheckTheImageWithSecureBootVariable(
> > > > > > > > > > +             EFI_PLATFORM_KEY_NAME,
> > > > > > > > > > +             &gEfiGlobalVariableGuid,
> > > > > > > > > > +             Image,
> > > > > > > > > > +             ImageSize
> > > > > > > > > > +             );
> > > > > > > > > > +  if (!EFI_ERROR (Status) || Status ==
> > > > EFI_NOT_FOUND) {
> > > > > > > > > > +    // Return SUCCESS if verified by PK
> > key
> > > > or PK key not configured.
> > > > > > > > > > +    DEBUG ((DEBUG_INFO, "FmpDxe:
> > Verified
> > > > capsule with PK
> > > > > > key.\n"));
> > > > > > > > > > +    return EFI_SUCCESS;  }
> > > > > > > > > > +
> > > > > > > > > > +  // DBX check.
> > > > > > > > > > +  Status =
> > > > CheckTheImageWithSecureBootVariable(
> > > > > > > > > > +
> > EFI_IMAGE_SECURITY_DATABASE1,
> > > > > > > > > > +
> > > > &gEfiImageSecurityDatabaseGuid,
> > > > > > > > > > +             Image,
> > > > > > > > > > +             ImageSize
> > > > > > > > > > +             );
> > > > > > > > > > +  if (!EFI_ERROR (Status)) {
> > > > > > > > > > +    DEBUG ((DEBUG_INFO, "FmpDxe: Reject
> > > > capsule with DBX
> > > > > > key.\n"));
> > > > > > > > > > +    return EFI_SECURITY_VIOLATION;  }
> > > > > > > > > > +
> > > > > > > > > > +  // DB check.
> > > > > > > > > > +  DEBUG ((DEBUG_INFO, "FmpDxe: Verify
> > > > capsule with DB
> > > > > > > > > > +key.\n"));
> > > > > > > > > > +  Status =
> > > > CheckTheImageWithSecureBootVariable(
> > > > > > > > > > +
> > EFI_IMAGE_SECURITY_DATABASE,
> > > > > > > > > > +
> > > > &gEfiImageSecurityDatabaseGuid,
> > > > > > > > > > +             Image,
> > > > > > > > > > +             ImageSize
> > > > > > > > > > +             );
> > > > > > > > > > +  return Status;
> > > > > > > > > > +}
> > > > > > > > > > +
> > > > > > > > > >  /**
> > > > > > > > > >    Checks if the firmware image is valid
> > for
> > > > the device.
> > > > > > > > > >
> > > > > > > > > > @@ -728,6 +824,7 @@ CheckTheImage (
> > > > > > > > > >    UINT8
> > > > *PublicKeyDataXdrEnd;
> > > > > > > > > >    EFI_FIRMWARE_IMAGE_DEP
> > > > *Dependencies;
> > > > > > > > > >    UINT32
> > > > DependenciesSize;
> > > > > > > > > > +  UINT8
> > > > AllowSecureBootKeys;
> > > > > > > > > >
> > > > > > > > > >    Status           = EFI_SUCCESS;
> > > > > > > > > >    RawSize          = 0;
> > > > > > > > > > @@ -782,9 +879,15 @@ CheckTheImage (
> > > > > > > > > >    PublicKeyDataXdr    = PcdGetPtr
> > > > > > (PcdFmpDevicePkcs7CertBufferXdr);
> > > > > > > > > >    PublicKeyDataXdrEnd =
> > PublicKeyDataXdr +
> > > > PcdGetSize
> > > > > > > > > > (PcdFmpDevicePkcs7CertBufferXdr);
> > > > > > > > > >
> > > > > > > > > > -  if (PublicKeyDataXdr == NULL ||
> > > > (PublicKeyDataXdr ==
> > > > > > > > > > PublicKeyDataXdrEnd)) {
> > > > > > > > > > -    DEBUG ((DEBUG_ERROR, "FmpDxe(%s):
> > > > Invalid certificate, skipping
> > > > > > it.\n",
> > > > > > > > > > mImageIdName));
> > > > > > > > > > -    Status = EFI_ABORTED;
> > > > > > > > > > +  if (PublicKeyDataXdr == NULL ||
> > > > (PublicKeyDataXdrEnd -
> > > > > > > > > > + PublicKeyDataXdr
> > > > > > > > > > < sizeof (UINT32))) {
> > > > > > > > > > +    AllowSecureBootKeys = PcdGet8
> > > > > > > > (PcdFmpDeviceAllowSecureBootKeys);
> > > > > > > > > > +    if (AllowSecureBootKeys) {
> > > > > > > > > > +      DEBUG ((DEBUG_INFO, "FmpDxe: Use
> > > > secure boot certs.\n"));
> > > > > > > > > > +      Status =
> > > > CheckTheImageWithSecureBootKeys (Image,
> > > > > > ImageSize);
> > > > > > > > > > +    } else {
> > > > > > > > > > +      DEBUG ((DEBUG_ERROR, "FmpDxe(%s):
> > > > Invalid certificate,
> > > > > > > > > > + skipping
> > > > > > > > > > it.\n", mImageIdName));
> > > > > > > > > > +      Status = EFI_ABORTED;
> > > > > > > > > > +    }
> > > > > > > > > >    } else {
> > > > > > > > > >      //
> > > > > > > > > >      // Try each key from
> > > > PcdFmpDevicePkcs7CertBufferXdr diff
> > > > > > > > > > --git a/FmpDevicePkg/FmpDxe/FmpDxe.h
> > > > > > > > > > b/FmpDevicePkg/FmpDxe/FmpDxe.h
> > > > > > > > index
> > > > > > > > > > 30754de..72a6ce6 100644
> > > > > > > > > > --- a/FmpDevicePkg/FmpDxe/FmpDxe.h
> > > > > > > > > > +++ b/FmpDevicePkg/FmpDxe/FmpDxe.h
> > > > > > > > > > @@ -34,6 +34,7 @@
> > > > > > > > > >  #include
> > <Protocol/FirmwareManagement.h>
> > > > #include
> > > > > > > > > > <Protocol/FirmwareManagementProgress.h>
> > > > > > > > > >  #include <Protocol/VariableLock.h>
> > > > > > > > > > +#include <Guid/ImageAuthentication.h>
> > > > > > > > > >  #include <Guid/SystemResourceTable.h>
> > > > #include
> > > > > > > > > > <Guid/EventGroup.h>
> > > > > > > > > >
> > > > > > > > > > diff --git
> > a/FmpDevicePkg/FmpDxe/FmpDxe.inf
> > > > > > > > > > b/FmpDevicePkg/FmpDxe/FmpDxe.inf index
> > > > eeb904a..60b02d4
> > > > > > 100644
> > > > > > > > > > --- a/FmpDevicePkg/FmpDxe/FmpDxe.inf
> > > > > > > > > > +++ b/FmpDevicePkg/FmpDxe/FmpDxe.inf
> > > > > > > > > > @@ -58,6 +58,8 @@
> > > > > > > > > >
> > > > > > > > > >  [Guids]
> > > > > > > > > >    gEfiEndOfDxeEventGroupGuid
> > > > > > > > > > +  gEfiCertX509Guid
> > > > > > > > > > +  gEfiImageSecurityDatabaseGuid
> > > > > > > > > >
> > > > > > > > > >  [Protocols]
> > > > > > > > > >    gEdkiiVariableLockProtocolGuid
> > > > ## CONSUMES
> > > > > > > > > > @@ -74,6 +76,7 @@
> > > > > > > > > >
> > > >
> > gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferX
> > > > dr
> > > > > > > > > > ## CONSUMES
> > > > > > > > > >
> > > > > >
> > > >
> > gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceTestKeySha256Dig
> > > > est
> > > > > > > > > > ## CONSUMES
> > > > > > > > > >
> > > >
> > gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid
> > > > > > > > > > ## CONSUMES
> > > > > > > > > > +
> > > > > >
> > > >
> > gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceAllowSecureBootK
> > > > eys
> > > > > > > > > > ## CONSUMES
> > > > > > > > > >
> > > > gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed
> > > > > > ##
> > > > > > > > > > SOMETIMES_PRODUCES
> > > > > > > > > >
> > > > > > > > > >  [Depex]
> > > > > > > > > > diff --git
> > > > a/FmpDevicePkg/FmpDxe/FmpDxeLib.inf
> > > > > > > > > > b/FmpDevicePkg/FmpDxe/FmpDxeLib.inf
> > > > > > > > > > index 9a93b5e..1308cae 100644
> > > > > > > > > > --- a/FmpDevicePkg/FmpDxe/FmpDxeLib.inf
> > > > > > > > > > +++ b/FmpDevicePkg/FmpDxe/FmpDxeLib.inf
> > > > > > > > > > @@ -74,6 +74,7 @@
> > > > > > > > > >
> > > >
> > gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferX
> > > > dr
> > > > > > > > > > ## CONSUMES
> > > > > > > > > >
> > > > > >
> > > >
> > gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceTestKeySha256Dig
> > > > est
> > > > > > > > > > ## CONSUMES
> > > > > > > > > >
> > > >
> > gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid
> > > > > > > > > > ## CONSUMES
> > > > > > > > > > +
> > > > > >
> > > >
> > gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceAllowSecureBootK
> > > > eys
> > > > > > > > > > ## CONSUMES
> > > > > > > > > >
> > > > gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed
> > > > > > ##
> > > > > > > > > > SOMETIMES_PRODUCES
> > > > > > > > > >
> > > > > > > > > >  [Depex]
> > > > > > > > > > --
> > > > > > > > > > 1.8.3.1
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > >
> > > >
> > > >
> >
> >
> > 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#63031): https://edk2.groups.io/g/devel/message/63031
Mute This Topic: https://groups.io/mt/74985160/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to