From nobody Mon Feb 9 01:16:23 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+75575+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+75575+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1621945611; cv=none; d=zohomail.com; s=zohoarc; b=Nf0EXR/LGNHu8VIhnrrldV+ppd1NXN+jMgZpnH5N+AVP0vgS8jzoRmylYdYaBfqyJfpYJs+fS+AiQZX7giyENCG5rJ4UzLQ/hJWM6QKlZ6H20fT8u3Tq8qvpVV/DXQ+Bs/fKfQzz2W6F/q8K2D/etnNz2MMpmiF1unu22EVpBXg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621945611; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=zs68+SHSvusjzOO4tivPfzEXo0i1FLig3cedIXURALY=; b=B7BESDO0BHfJKlor7ShU9STfFihvaSkFn7h2ziTN3KHneh9ltEXiW8hp8UWhWB6i6xRi2FhemRE8y7LcWo2x+NNXpAWnCwNNv1IPr+tV+v341XQEYlCAjMLSbsiP7BnbCTGQArrmvFtGXdLo2dj7GcsNgkI1/r1KstdArRFX4Ok= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+75575+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1621945611020190.80185020491183; Tue, 25 May 2021 05:26:51 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id iT5oYY1788612xFdhv1etc5O; Tue, 25 May 2021 05:26:50 -0700 X-Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by mx.groups.io with SMTP id smtpd.web10.5678.1621920691622584728 for ; Mon, 24 May 2021 22:31:31 -0700 X-Received: from pps.filterd (m0098399.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 14P54dAD158091; Tue, 25 May 2021 01:31:29 -0400 X-Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 38rryak5ac-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 May 2021 01:31:28 -0400 X-Received: from m0098399.ppops.net (m0098399.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 14P55N6T162383; Tue, 25 May 2021 01:31:27 -0400 X-Received: from ppma03wdc.us.ibm.com (ba.79.3fa9.ip4.static.sl-reverse.com [169.63.121.186]) by mx0a-001b2d01.pphosted.com with ESMTP id 38rryak595-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 May 2021 01:31:27 -0400 X-Received: from pps.filterd (ppma03wdc.us.ibm.com [127.0.0.1]) by ppma03wdc.us.ibm.com (8.16.0.43/8.16.0.43) with SMTP id 14P5R8tA025079; Tue, 25 May 2021 05:31:26 GMT X-Received: from b01cxnp22033.gho.pok.ibm.com (b01cxnp22033.gho.pok.ibm.com [9.57.198.23]) by ppma03wdc.us.ibm.com with ESMTP id 38psk94fkv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 May 2021 05:31:26 +0000 X-Received: from b01ledav001.gho.pok.ibm.com (b01ledav001.gho.pok.ibm.com [9.57.199.106]) by b01cxnp22033.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 14P5VP1G29884910 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 May 2021 05:31:25 GMT X-Received: from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 54D682805A; Tue, 25 May 2021 05:31:25 +0000 (GMT) X-Received: from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 11D212805C; Tue, 25 May 2021 05:31:25 +0000 (GMT) X-Received: from localhost.localdomain (unknown [9.2.130.16]) by b01ledav001.gho.pok.ibm.com (Postfix) with ESMTP; Tue, 25 May 2021 05:31:25 +0000 (GMT) From: Dov Murik To: devel@edk2.groups.io Cc: Dov Murik , Tobin Feldman-Fitzthum , Tobin Feldman-Fitzthum , Jim Cadden , James Bottomley , Hubertus Franke , Laszlo Ersek , Ard Biesheuvel , Jordan Justen , Ashish Kalra , Brijesh Singh , Erdem Aktas , Jiewen Yao , Min Xu , Tom Lendacky Subject: [edk2-devel] [PATCH v1 8/8] OvmfPkg/AmdSev: add SevQemuLoadImageLib Date: Tue, 25 May 2021 05:31:16 +0000 Message-Id: <20210525053116.1533673-9-dovmurik@linux.ibm.com> In-Reply-To: <20210525053116.1533673-1-dovmurik@linux.ibm.com> References: <20210525053116.1533673-1-dovmurik@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: jMJpPhGvaSNYq3FMIOrBGGf5_Yybhgp0 X-Proofpoint-ORIG-GUID: LcmFT4nUExCBiOVq1Oyi9yiMgEBAQGGT Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,dovmurik@linux.ibm.com X-Gm-Message-State: dhzWIzZJLIdI7P7WNI7AJipvx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1621945610; bh=sSZMmZQljairp6EAuj2jbfw9+0fwffwanhpSFygief0=; h=Cc:Date:From:Reply-To:Subject:To; b=w+5JZPkI8iKQMIvSsdP7TtHS6wNtmZWimm1Vl12V2t6U3SbIbxf6Dg4VDwT5rX49yFk DKtezprdcdagPibtZu+P45soigoukw1/Q9vxEKhS+pwpZh9BSb/eq5S4H/mciCZchBo2d q4ainAsq1KZqeT37N60Jeeh+z0OZc9pUqPU= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" From: James Bottomley This is a wrapper library around GenericQemuLoadImageLib which activates a verifier on the command line to check its hash against the one passed in via the SEV hash table. The verifier is enabled if SEV memory encryption is active. Cc: Laszlo Ersek Cc: Ard Biesheuvel Cc: Jordan Justen Cc: Ashish Kalra Cc: Brijesh Singh Cc: Erdem Aktas Cc: James Bottomley Cc: Jiewen Yao Cc: Min Xu Cc: Tom Lendacky Signed-off-by: James Bottomley --- OvmfPkg/AmdSev/AmdSevX64.dsc | 4 +- OvmfPkg/AmdSev/Library/SevQemuLoadImageLib/SevQemuLoadImageLib.inf | 30 ++= +++++++++ OvmfPkg/AmdSev/Library/SevQemuLoadImageLib/SevQemuLoadImageLib.c | 52 ++= ++++++++++++++++++ 3 files changed, 84 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc index bfb16798b3b7..9db3d993dda0 100644 --- a/OvmfPkg/AmdSev/AmdSevX64.dsc +++ b/OvmfPkg/AmdSev/AmdSevX64.dsc @@ -284,7 +284,6 @@ [LibraryClasses.common.PEIM] CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuE= xceptionHandlerLib.inf MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/PeiQemuFwCfgS3LibFwCfg.inf - QemuLoadImageLib|OvmfPkg/Library/GenericQemuLoadImageLib/GenericQemuLoad= ImageLib.inf PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgPeiLib.inf =20 @@ -372,7 +371,8 @@ [LibraryClasses.common.DXE_DRIVER] PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf - QemuLoadImageLib|OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib= .inf + GenericQemuLoadImageLib|OvmfPkg/Library/GenericQemuLoadImageLib/GenericQ= emuLoadImageLib.inf + QemuLoadImageLib|OvmfPkg/AmdSev/Library/SevQemuLoadImageLib/SevQemuLoadI= mageLib.inf !if $(TPM_ENABLE) =3D=3D TRUE Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibTcg/Tpm12DeviceLibTcg.i= nf Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.inf diff --git a/OvmfPkg/AmdSev/Library/SevQemuLoadImageLib/SevQemuLoadImageLib= .inf b/OvmfPkg/AmdSev/Library/SevQemuLoadImageLib/SevQemuLoadImageLib.inf new file mode 100644 index 000000000000..b87031f4d15a --- /dev/null +++ b/OvmfPkg/AmdSev/Library/SevQemuLoadImageLib/SevQemuLoadImageLib.inf @@ -0,0 +1,30 @@ +## @file +# Provides the Secure Verification services for AMD SEV firmware config +# +# Copyright (C) 2021 James Bottomley, IBM Corporation. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION =3D 1.27 + BASE_NAME =3D SevQemuLoadImageLib + FILE_GUID =3D 7ceec418-e1e3-42fb-91c5-56abc6d3744d + MODULE_TYPE =3D BASE + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D QemuLoadImageLib|DXE_DRIVER + CONSTRUCTOR =3D SevQemuLoadImageConstructor + +[Sources] + SevQemuLoadImageLib.c + +[Packages] + MdePkg/MdePkg.dec + OvmfPkg/OvmfPkg.dec + +[LibraryClasses] + DebugLib + GenericQemuLoadImageLib + MemEncryptSevLib + SevHashFinderLib diff --git a/OvmfPkg/AmdSev/Library/SevQemuLoadImageLib/SevQemuLoadImageLib= .c b/OvmfPkg/AmdSev/Library/SevQemuLoadImageLib/SevQemuLoadImageLib.c new file mode 100644 index 000000000000..a44d296cea78 --- /dev/null +++ b/OvmfPkg/AmdSev/Library/SevQemuLoadImageLib/SevQemuLoadImageLib.c @@ -0,0 +1,52 @@ +/** @file + AMD SEV Firmware Config file verifier + + Copyright (C) 2021 James Bottomley, IBM Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include + +#include +#include +#include +#include + +STATIC EFI_STATUS +EFIAPI +SevCmdLineVerifier ( + IN CONST CHAR16 *Name, + IN VOID *Buffer, + IN UINTN Size + ) +{ + DEBUG ((DEBUG_INFO, "%a: Validating Hash\n", __FUNCTION__)); + + return ValidateHashEntry (&SEV_CMDLINE_HASH_GUID, Buffer, Size); +} + +/** + Register security measurement handler. + + @param ImageHandle ImageHandle of the loaded driver. + @param SystemTable Pointer to the EFI System Table. + + @retval EFI_SUCCESS The handlers were registered successfully. +**/ +EFI_STATUS +EFIAPI +SevQemuLoadImageConstructor ( + VOID + ) +{ + if (MemEncryptSevIsEnabled ()) { + DEBUG ((DEBUG_INFO, "Enabling hash verification of fw_cfg cmdline\n")); + return RegisterFwCfgVerifier (SevCmdLineVerifier); + } else { + // + // Don't install verifier if SEV isn't enabled + // + DEBUG ((DEBUG_INFO, "NOT Enabling hash verification of fw_cfg cmdline\= n")); + return EFI_SUCCESS; + } +} --=20 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#75575): https://edk2.groups.io/g/devel/message/75575 Mute This Topic: https://groups.io/mt/83074459/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-