[edk2-devel] [edk2-platforms][PATCH 27/34] JadePkg: Add Capsule Update support

Nhi Pham via groups.io nhi=os.amperecomputing.com at groups.io
Wed Dec 9 09:25:24 UTC 2020


Wire up the various modules to implement signed capsule update. Also,
add JadeCapsule DSC/FDF files to tweak the capsule build for combining
both ATF binaries and UEFI image into a binary update image.

Please note that the test key for signing the capsule is simply from
EDK2 repository. In production, the product owner needs to handle and
protect the key properly. The test key is found at the following path:
BaseTools/Source/Python/Pkcs7Sign/TestRoot.cer

Per Secure Firmware Update mechanism provided by Ampere Trusted Firmware
(ATF), the update image will be authenticated in the secure world before
being written to flash device. So, the image must be signed with a
firmware update key (DBU key) and place in the Build/Jade directory by
name jade_atfedk2.img.signed. The DBU test key is available under the
Platform/Ampere/TestKeys path.
the Build/Jade directory.

Signed-off-by: Nhi Pham <nhi at os.amperecomputing.com>
---
 Platform/Ampere/JadePkg/Jade.dsc                         | 32 +++++++
 Platform/Ampere/JadePkg/JadeCapsule.dsc                  | 29 +++++++
 Platform/Ampere/JadePkg/Jade.fdf                         | 53 ++++++++++++
 Platform/Ampere/JadePkg/JadeCapsule.fdf                  | 90 ++++++++++++++++++++
 Platform/Ampere/JadePkg/TestKeys/Dbu_AmpereTest.cer.pem  | 25 ++++++
 Platform/Ampere/JadePkg/TestKeys/Dbu_AmpereTest.priv.pem | 28 ++++++
 6 files changed, 257 insertions(+)

diff --git a/Platform/Ampere/JadePkg/Jade.dsc b/Platform/Ampere/JadePkg/Jade.dsc
index 6d2079117377..036971c565e3 100755
--- a/Platform/Ampere/JadePkg/Jade.dsc
+++ b/Platform/Ampere/JadePkg/Jade.dsc
@@ -50,6 +50,16 @@ [Defines]
 #
 ################################################################################
 [LibraryClasses]
+  #
+  # Capsule Update requirements
+  #
+  BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf
+  DisplayUpdateProgressLib|MdeModulePkg/Library/DisplayUpdateProgressLibGraphics/DisplayUpdateProgressLibGraphics.inf
+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf
+  EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf
+  FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf
+  IniParsingLib|SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.inf
+  PlatformFlashAccessLib|Silicon/Ampere/AmpereAltraPkg/Library/PlatformFlashAccessLib/PlatformFlashAccessLib.inf
 
   #
   # RTC Library: Common RTC
@@ -73,6 +83,9 @@ [LibraryClasses]
   #
   PcieBoardLib|Platform/Ampere/JadePkg/Library/Pcie/BoardPcie.inf
 
+[LibraryClasses.common.DXE_RUNTIME_DRIVER]
+  CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf
+
 ################################################################################
 #
 # Specific Platform Pcds
@@ -93,6 +106,11 @@ [PcdsFixedAtBuild.common]
   gAmpereTokenSpaceGuid.PcdSmbiosTables1MajorVersion|$(MAJOR_VER)
   gAmpereTokenSpaceGuid.PcdSmbiosTables1MinorVersion|$(MINOR_VER)
 
+  #
+  # Increasing the maximum size of capsule is to cover ARM Trusted Firmware binaries
+  #
+  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizeNonPopulateCapsule|0xE00000
+
 !if $(SECURE_BOOT_ENABLE) == TRUE
   # Override the default values from SecurityPkg to ensure images
   # from all sources are verified in secure boot
@@ -114,6 +132,11 @@ [PcdsDynamicDefault.common.DEFAULT]
   gAmpereTokenSpaceGuid.PcdSmbiosTables1SystemSerialNumber|"0123-4567-89AB-CDEF"
   gAmpereTokenSpaceGuid.PcdSmbiosTables1SystemSkuNumber|"01234567"
 
+[PcdsDynamicExDefault.common.DEFAULT]
+  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100
+  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{0x31, 0xca, 0x8b, 0xf0, 0x2e, 0x54, 0xea, 0x4c, 0x8b, 0x48, 0x8e, 0x54, 0xf9, 0x42, 0x25, 0x94}
+  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{0xed, 0x06, 0x1c, 0x43, 0xe2, 0x4f, 0x8f, 0x43, 0x98, 0xa3, 0xa9, 0xb1, 0xfd, 0x92, 0x30, 0x19}
+
 [PcdsPatchableInModule]
   #
   # Console Resolution (HD mode)
@@ -154,6 +177,15 @@ [Components.common]
   Platform/Ampere/JadePkg/Drivers/SmbiosCpuDxe/SmbiosCpuDxe.inf
   Platform/Ampere/JadePkg/Drivers/SmbiosMemInfoDxe/SmbiosMemInfoDxe.inf
 
+  #
+  # Firmware Capsule Update
+  #
+  Platform/Ampere/JadePkg/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf
+  MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf
+  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf
+  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf
+  MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf
+
   #
   # HII
   #
diff --git a/Platform/Ampere/JadePkg/JadeCapsule.dsc b/Platform/Ampere/JadePkg/JadeCapsule.dsc
new file mode 100755
index 000000000000..933c4cf5144b
--- /dev/null
+++ b/Platform/Ampere/JadePkg/JadeCapsule.dsc
@@ -0,0 +1,29 @@
+## @file
+#
+# Copyright (c) 2020, Ampere Computing LLC. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+################################################################################
+#
+# Defines Section - statements that will be processed to create a Makefile.
+#
+################################################################################
+[Defines]
+  PLATFORM_NAME                  = Jade
+  PLATFORM_GUID                  = 34C87B13-434A-4767-88FB-2D0CD2AED46F
+  PLATFORM_VERSION               = 0.1
+  DSC_SPECIFICATION              = 0x0001001B
+  OUTPUT_DIRECTORY               = Build/Jade
+  SUPPORTED_ARCHITECTURES        = AARCH64
+  BUILD_TARGETS                  = DEBUG|RELEASE
+  SKUID_IDENTIFIER               = DEFAULT
+  FLASH_DEFINITION               = Platform/Ampere/JadePkg/JadeCapsule.fdf
+
+  #
+  # Defines for default states.  These can be changed on the command line.
+  # -D FLAG=VALUE
+  #
+  DEFINE UEFI_ATF_IMAGE          = Build/Jade/jade_atfedk2.img.signed
diff --git a/Platform/Ampere/JadePkg/Jade.fdf b/Platform/Ampere/JadePkg/Jade.fdf
index 2cf2678e1d76..636376ac9cb1 100755
--- a/Platform/Ampere/JadePkg/Jade.fdf
+++ b/Platform/Ampere/JadePkg/Jade.fdf
@@ -188,6 +188,8 @@ [FV.FV_PEI]
 
   INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
 
+  INF RuleOverride = FMP_IMAGE_DESC Platform/Ampere/JadePkg/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf
+
 [FV.FvMain]
 BlockSize          = 0x40000
 NumBlocks          = 0x18
@@ -370,6 +372,17 @@ [FV.FvMain]
   INF Platform/Ampere/JadePkg/Drivers/SmbiosCpuDxe/SmbiosCpuDxe.inf
   INF Platform/Ampere/JadePkg/Drivers/SmbiosMemInfoDxe/SmbiosMemInfoDxe.inf
 
+  #
+  # Firmware Capsule Update
+  #
+  INF  MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf
+  INF  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf
+
+  FILE FREEFORM = PCD(gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiPkcs7TestPublicKeyFileGuid) {
+      SECTION RAW = BaseTools/Source/Python/Pkcs7Sign/TestRoot.cer
+      SECTION UI = "Pkcs7TestRoot"
+      }
+
   #
   # HII
   #
@@ -378,4 +391,44 @@ [FV.FvMain]
   INF Silicon/Ampere/AmpereAltraPkg/Drivers/CpuConfigDxe/CpuConfigDxe.inf
   INF Silicon/Ampere/AmpereAltraPkg/Drivers/AcpiConfigDxe/AcpiConfigDxe.inf
 
+[FV.SystemFirmwareDescriptor]
+FvAlignment        = 8
+ERASE_POLARITY     = 1
+MEMORY_MAPPED      = TRUE
+STICKY_WRITE       = TRUE
+LOCK_CAP           = TRUE
+LOCK_STATUS        = TRUE
+WRITE_DISABLED_CAP = TRUE
+WRITE_ENABLED_CAP  = TRUE
+WRITE_STATUS       = TRUE
+WRITE_LOCK_CAP     = TRUE
+WRITE_LOCK_STATUS  = TRUE
+READ_DISABLED_CAP  = TRUE
+READ_ENABLED_CAP   = TRUE
+READ_STATUS        = TRUE
+READ_LOCK_CAP      = TRUE
+READ_LOCK_STATUS   = TRUE
+
+  INF RuleOverride = FMP_IMAGE_DESC Platform/Ampere/JadePkg/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf
+
+[FV.CapsuleDispatchFv]
+FvAlignment        = 8
+ERASE_POLARITY     = 1
+MEMORY_MAPPED      = TRUE
+STICKY_WRITE       = TRUE
+LOCK_CAP           = TRUE
+LOCK_STATUS        = TRUE
+WRITE_DISABLED_CAP = TRUE
+WRITE_ENABLED_CAP  = TRUE
+WRITE_STATUS       = TRUE
+WRITE_LOCK_CAP     = TRUE
+WRITE_LOCK_STATUS  = TRUE
+READ_DISABLED_CAP  = TRUE
+READ_ENABLED_CAP   = TRUE
+READ_STATUS        = TRUE
+READ_LOCK_CAP      = TRUE
+READ_LOCK_STATUS   = TRUE
+
+  INF  SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf
+
 !include Platform/Ampere/FvRules.fdf.inc
diff --git a/Platform/Ampere/JadePkg/JadeCapsule.fdf b/Platform/Ampere/JadePkg/JadeCapsule.fdf
new file mode 100755
index 000000000000..28872d5751b8
--- /dev/null
+++ b/Platform/Ampere/JadePkg/JadeCapsule.fdf
@@ -0,0 +1,90 @@
+## @file
+#
+# Copyright (c) 2020, Ampere Computing LLC. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+################################################################################
+#
+# FD Section
+# The [FD] Section is made up of the definition statements and a
+# description of what goes into  the Flash Device Image.  Each FD section
+# defines one flash "device" image.  A flash device image may be one of
+# the following: Removable media bootable image (like a boot floppy
+# image,) an Option ROM image (that would be "flashed" into an add-in
+# card,) a System "Flash"  image (that would be burned into a system's
+# flash) or an Update ("Capsule") image that will be used to update and
+# existing system flash.
+#
+################################################################################
+
+[FD.JADE_FIRMWARE_CAPSULE]
+BaseAddress   = 0x00000000  # The base address of the Firmware in NOR Flash.
+Size          = 0x00D10000  # The size in bytes of the FLASH Device
+ErasePolarity = 1
+
+0x00000000|0x00010000
+FILE = $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/SYSTEMFIRMWAREDESCRIPTOR.Fv
+
+0x00010000|0x00D00000
+FILE = $(UEFI_ATF_IMAGE)
+
+################################################################################
+#
+# FV Section
+#
+# [FV] section is used to define what components or modules are placed within a flash
+# device file.  This section also defines order the components and modules are positioned
+# within the image.  The [FV] section consists of define statements, set statements and
+# module statements.
+#
+################################################################################
+
+[FV.SystemFirmwareUpdateCargo]
+FvAlignment        = 16
+ERASE_POLARITY     = 1
+MEMORY_MAPPED      = TRUE
+STICKY_WRITE       = TRUE
+LOCK_CAP           = TRUE
+LOCK_STATUS        = TRUE
+WRITE_DISABLED_CAP = TRUE
+WRITE_ENABLED_CAP  = TRUE
+WRITE_STATUS       = TRUE
+WRITE_LOCK_CAP     = TRUE
+WRITE_LOCK_STATUS  = TRUE
+READ_DISABLED_CAP  = TRUE
+READ_ENABLED_CAP   = TRUE
+READ_STATUS        = TRUE
+READ_LOCK_CAP      = TRUE
+READ_LOCK_STATUS   = TRUE
+
+FILE RAW = 431C06ED-4FE2-438F-98A3-A9B1FD923019 { # PcdEdkiiSystemFirmwareFileGuid
+    FD = JADE_FIRMWARE_CAPSULE
+  }
+
+FILE RAW = ce57b167-b0e4-41e8-a897-5f4feb781d40 { # gEdkiiSystemFmpCapsuleDriverFvFileGuid
+    $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/CAPSULEDISPATCHFV.Fv
+  }
+
+FILE RAW = 812136D3-4D3A-433A-9418-29BB9BF78F6E { # gEdkiiSystemFmpCapsuleConfigFileGuid
+    Platform/Ampere/JadePkg/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini
+  }
+
+[FmpPayload.FmpPayloadSystemFirmwarePkcs7]
+IMAGE_HEADER_INIT_VERSION = 0x02
+IMAGE_TYPE_ID             = f08bca31-542e-4cea-8b48-8e54f9422594 # PcdSystemFmpCapsuleImageTypeIdGuid
+IMAGE_INDEX               = 0x1
+HARDWARE_INSTANCE         = 0x0
+MONOTONIC_COUNT           = 0x1
+CERTIFICATE_GUID          = 4AAFD29D-68DF-49EE-8AA9-347D375665A7 # PKCS7
+
+FV = SystemFirmwareUpdateCargo
+
+[Capsule.JadeFirmwareUpdateCapsuleFmpPkcs7]
+CAPSULE_GUID                = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid
+CAPSULE_HEADER_SIZE         = 0x20
+CAPSULE_HEADER_INIT_VERSION = 0x1
+
+FMP_PAYLOAD = FmpPayloadSystemFirmwarePkcs7
diff --git a/Platform/Ampere/JadePkg/TestKeys/Dbu_AmpereTest.cer.pem b/Platform/Ampere/JadePkg/TestKeys/Dbu_AmpereTest.cer.pem
new file mode 100755
index 000000000000..af13a6de307c
--- /dev/null
+++ b/Platform/Ampere/JadePkg/TestKeys/Dbu_AmpereTest.cer.pem
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEHzCCAwegAwIBAgIJANC2pw7xG4tpMA0GCSqGSIb3DQEBCwUAMIGlMQswCQYD
+VQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEUMBIGA1UEBwwLU2FudGEgQ2xh
+cmExGzAZBgNVBAoMEkFwcGxpZWQgTWljcm8gQ29ycDEWMBQGA1UECwwNU29mdHdh
+cmUgRGVwdDEVMBMGA1UEAwwMQVBNIFNvZnR3YXJlMR8wHQYJKoZIhvcNAQkBFhB0
+dG5ndXllbkBhcG0uY29tMB4XDTE3MTAxMDIxNDgyNloXDTE3MTEwOTIxNDgyNlow
+gaUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRQwEgYDVQQHDAtT
+YW50YSBDbGFyYTEbMBkGA1UECgwSQXBwbGllZCBNaWNybyBDb3JwMRYwFAYDVQQL
+DA1Tb2Z0d2FyZSBEZXB0MRUwEwYDVQQDDAxBUE0gU29mdHdhcmUxHzAdBgkqhkiG
+9w0BCQEWEHR0bmd1eWVuQGFwbS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQDFRhbF5xAtFPHfzyPOMAJP3IAvV9Z9Wm7EpkS2+RzBXui8IyeXoLhp
+jj+cd5oXkRRCXBxrTt72J2Unr7hPyZT9gPSNb+Zfaf5J3tEbAbjUAa8ziCddbKFc
+H7uCICih0rQvH06UFbZoxOS58Wd/orZWlwbyeTWwxRervHApre5ywSJYqsmtGETu
+v7Bzm1Vu+CXFrrcBTfEq40Z9P88TSo0nY1zA28aG7H4cG2JwPTsB9KzxSa5prycI
+Xvp+lzXuOz+PDwgHdRtS48je6jEFrDfjNHH0drlBgm2/9CB3tBoQ1MatA9+FdiRu
+mdyMlLjfuSNF1e1Y//dTKsj78BSYNpOFAgMBAAGjUDBOMB0GA1UdDgQWBBSUgaqU
+W7QR+GznJh68YTtaqlfg6zAfBgNVHSMEGDAWgBSUgaqUW7QR+GznJh68YTtaqlfg
+6zAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBLUKPnipzWpOY0RZVZ
+9UV9aTnU+iF3sQRUB9YRfGQY1yRA7l8HZc/FGFUF2Lhhz89jGd8NRiP09boNlBDD
+YwppO4TdU82zvazCd6X/tI6r3v14CDIjh3yQ1et88VyqDQ7bM88kEdRH2zTbmHKg
+kTGLSowt06EWBv02WdLhTde2pnjKwU7K8CLdBLlw1ZsQPoFcWxprO1bOtj/pmfQS
+OSxKt7D6Pv0szcLzP4XX1YaLcxYHhZ0/bBWeFVzUY/KNEAL/NWakPDJxSmulZHzg
+aFKGfsmiYdVVBJUFfEIm3l/HLgfjAtJQcHZeLJ9TFVl0yiNfiG4fYPxBxxC4gSgS
+OxGb
+-----END CERTIFICATE-----
diff --git a/Platform/Ampere/JadePkg/TestKeys/Dbu_AmpereTest.priv.pem b/Platform/Ampere/JadePkg/TestKeys/Dbu_AmpereTest.priv.pem
new file mode 100755
index 000000000000..1c67bcd9d75c
--- /dev/null
+++ b/Platform/Ampere/JadePkg/TestKeys/Dbu_AmpereTest.priv.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDFRhbF5xAtFPHf
+zyPOMAJP3IAvV9Z9Wm7EpkS2+RzBXui8IyeXoLhpjj+cd5oXkRRCXBxrTt72J2Un
+r7hPyZT9gPSNb+Zfaf5J3tEbAbjUAa8ziCddbKFcH7uCICih0rQvH06UFbZoxOS5
+8Wd/orZWlwbyeTWwxRervHApre5ywSJYqsmtGETuv7Bzm1Vu+CXFrrcBTfEq40Z9
+P88TSo0nY1zA28aG7H4cG2JwPTsB9KzxSa5prycIXvp+lzXuOz+PDwgHdRtS48je
+6jEFrDfjNHH0drlBgm2/9CB3tBoQ1MatA9+FdiRumdyMlLjfuSNF1e1Y//dTKsj7
+8BSYNpOFAgMBAAECggEBALOx2XKhvFFkX8Kfm5zojGKUl0sItv9uTbHhRnxpRHE7
+88HUP+9VXkYAZh8vrvRCmfKsltKEgII2dmUFIl3DYGzed2UShgVptlExnsX79pFf
+i2jkX/8wwXb6DMJGatyk4q591QT9FjAvEa3yoHVaEL+lSJW8JVUE4z/zITRGFAsA
+GqZ6DaGDuOXbtDXn3gtVg39VkaX7YbuZZBoQsjeQx/2+2/Pcg4/SjwCpPRcWYSwd
+2AFp4eM7ZEQh/85i85VfRXu1064X6h/jQn9B6OprqlIAvgwKWkyNGM7nPjBDJvVJ
+q/IrMWrhLTcJMynbdE6BBtHsokzEkdAfHLk4hJgZVqECgYEA50I+3D/56JFcOH6Y
+ATnmgmAUrc7TYy4kJdIwIJNCk2zeo4B1wgTeZRoUg6+Qt3Sy2jNlhoylXeFKOasQ
+j9IAh9SkzkcG0HLqVHqVVa5DJDkG0ZInt+HwaIpvVtLqtI036q4tIzlP2zRi3use
+z0LGRN7Aan4aOFMFfS6HbXM5q/kCgYEA2mEOjHtjfJ57kqzNNeRssn4P3/Q6s+aC
+1/mSnr1KM7RW8VtcieHKll4VTkGWYXdQTwMP9sQUOK1EDb6ICLxrl6JrooC89N+Z
+hfIzR0tVARkFxC344sSaAPAZX5UuFvaIZPyS8F2vreCxvSSFnraiY29rKBUZYACv
+s89XgBrwzu0CgYBuIFzg89JljvtUp+xpARKlWW3fixOdMnbiT+K9UIMuw3SOdfkd
+6MWjbbUBNNT8mCUnxbv+Q/Hn8AYxyiW752x7Qqcs2CQFlgPDMRD2WWL91+5IVIp3
+ha+/iNUWiqBcVLehGUrDcGJ3582BjIQCfTD/0Pfefqir09VUVJkHZQy8uQKBgEN7
+kp9e0dOEtfMRayioOd6+jfFK64kERpKvENv06qUnqWZUMTh6ibwFvte79NiRokOI
+UrqSxRzujgUhR7BLaYQmMNS6q6mQH0UBH098u/vm251QB4Ur89suVujulJuL+4IZ
+et7EVLGKqeIlExWEopHPsHFmc7zy+Vi7TfLMYHXRAoGBAK/Ccp2sFanC16XEXzFT
+vwae/XjBYGzvCy+PihwF0DgxuYxg46cLjflO8Q27JbM1H0VJpT7KDQtspvH9G38v
+bWmRbngWjCX9FmIzEc3eFJzutLQZxu8I51gHRzwIzwkD7gYBCVsWqahnf5bK/LRO
+5MLVdsdNuor2VKVw3IBYEQnQ
+-----END PRIVATE KEY-----
-- 
2.17.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#68527): https://edk2.groups.io/g/devel/message/68527
Mute This Topic: https://groups.io/mt/78825513/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list