From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web10.11007.1594887119632505011 for ; Thu, 16 Jul 2020 01:11:59 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=O1aGaMwe; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: jiewen.yao@intel.com) IronPort-SDR: QzGW0/R1DlyI2MAO2CTEiSmerrV0oaRpkVKnfe4w1Kkm0bn/Qp8zxmdST7MlkXWHxX5Zu9xUn2 bcDC0Hpmf0Jw== X-IronPort-AV: E=McAfee;i="6000,8403,9683"; a="150722046" X-IronPort-AV: E=Sophos;i="5.75,358,1589266800"; d="scan'208";a="150722046" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jul 2020 01:11:58 -0700 IronPort-SDR: +O5AfstfENlO5DcJJcocp9yT6kVJ/Othvh5jiB3u7baXYiVqCudHmLcdqPj8T1n7l2XcwQXn6N Wbq4toCkAL9w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,358,1589266800"; d="scan'208";a="269189162" Received: from orsmsx105.amr.corp.intel.com ([10.22.225.132]) by fmsmga007.fm.intel.com with ESMTP; 16 Jul 2020 01:11:58 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by ORSMSX105.amr.corp.intel.com (10.22.225.132) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 16 Jul 2020 01:11:57 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.36.52) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 16 Jul 2020 01:11:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HVyh3bQr1EewQtaUSVUhmGwdXQmdewv7jP0aze9orySzC09++Z4GGoKgqm7MoTlT4eCuaqZhM2gN8CDUQRso3FNLlYYlJRTZ5sHDB1dCJnpH8LVsVDN0oGwO6/l1mwrNssXcEdkMnPcmRaGar2fLpJ/HXRxyqo7cLrWm8fUABT9/Dc9jCq9X2fLnALoZwGdj0VxaAAGhJkTdJS3FdPq369winRKllnLR1USKkurLd5jwWQrhhO5Nnak4etNZKZCVXqn1w46Rq3XtOSZF+7fP+phNCSHE0Xj8YtiwNp58YGY+lqH0Rlf4z9wHYU7lZRfo2ZPDDuGIq8q7RaBCpH10qQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6rweVFnY/sqMOJN2DlWxvtm5z0orkeK43jaLHl+GPKc=; b=QC63Oz1w3U/Fs1zuDjVbLzRyy8R8A0YekZkC/1GNknxR0Qn3JB2GalwbhegVR3qwQeeOsMDqE3yiqIeGTjxJ4fXpHRLbsM66AVqBEYxrhuti8QZcipKccCD086nnG0YHev36dBZ0pMBxypSfwmKCUaFnzg0jQmGG52ddIowDNaPuzrhOkUo0xvXa+uQ3KlLb0aJ8XHPJUIwC+6NWjauBkMLbiYTzSnClu+gRC41/5UnK6SqrdOjfQEN28UdB2NNWD0xGfYIRyY04BbXDJvFS8FofRbibBfGRHmzvycp8SSVi5Ed7QbsxY2BJ6EzpdxwUyZbz1lXq4OFJ7X+IGNZ+qw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6rweVFnY/sqMOJN2DlWxvtm5z0orkeK43jaLHl+GPKc=; b=O1aGaMwe7XcJHG9lI1eYbo0zzR0uqBmfFqOqK7JRv0rueTYNSkM1YS4rvykk3Hj5gE98DiRYhrNMi5U5EBwlMJ564GSCYVUXGkLYq9D52zEFWoszD+C59XpEdao6wOzzl0feEqP5bxw3POTVWgHYJ8YejQSfklkIsaO6So3vkrw= Received: from DM5PR11MB2026.namprd11.prod.outlook.com (2603:10b6:3:10::17) by DM5PR11MB1644.namprd11.prod.outlook.com (2603:10b6:4:c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22; Thu, 16 Jul 2020 08:11:55 +0000 Received: from DM5PR11MB2026.namprd11.prod.outlook.com ([fe80::e19d:1de4:c479:da4]) by DM5PR11MB2026.namprd11.prod.outlook.com ([fe80::e19d:1de4:c479:da4%4]) with mapi id 15.20.3174.026; Thu, 16 Jul 2020 08:11:55 +0000 From: "Yao, Jiewen" To: "Zhang, Qi1" , "devel@edk2.groups.io" CC: "Wang, Jian J" , Chao Zhang , "Kumar, Rahul1" Subject: Re: [PATCH v2 4/7] SecurityPkg/Tcg2: Add TcgPpi Thread-Topic: [PATCH v2 4/7] SecurityPkg/Tcg2: Add TcgPpi Thread-Index: AQHWW0T86extyNwa4EWJAR8GT2UDkakJ2rCw Date: Thu, 16 Jul 2020 08:11:55 +0000 Message-ID: References: <20200716074430.9675-1-qi1.zhang@intel.com> <20200716074430.9675-5-qi1.zhang@intel.com> In-Reply-To: <20200716074430.9675-5-qi1.zhang@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMTAxMmI3ZWMtNjE2MC00ODdhLTlmNWQtOWUzMmZmZTdiYjZhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiV00yZjV0aDZjRldqSGN6dmlUQXR5RCtrZFFka241YU5NK0ZLbzhkT2c2OGE5cCtDUktQYnZtbHZJM3o0azVDTSJ9 x-ctpclassification: CTP_NT dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.216] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fc36e353-0d65-4238-a7ad-08d8295fe7ae x-ms-traffictypediagnostic: DM5PR11MB1644: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TBVaqsIRcVKD/6+zfGsY4rL/2/h7SDf5JGaNedVSPcvTEJrGkxToTZ0laKINk8WNLhyRRCHVw98b0IBPKIIhJ9bcH9zwfapNzjt+PIDwucU1yhmFCgra4006dixPIws99f53WmG8m3DgptrN6lWGSv9hhtEKhyV1aelYl67AaTXe1M7/ImdnHC8j4nEsLIENvRNqHWEbpMzkl4aJfFFDzrLAn8PRbXL0t6pWlY5gVnjlJ+e6xK0aqg6ZzVFnCsPPqBMYC+oMfeIGIWUt5zwcllwvlZF5JIXpQOB/JNgwS1KBC6Wq873qxa7whd2QIE1QcdWmhfzGo4iI4IoJ8ggS2KUt3jNUrzEejwfNZbk178Ad0/4FzRt43kY9IuBkC+AN8VyznQKUimS3JJLjkRF9HA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR11MB2026.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(39860400002)(136003)(376002)(396003)(366004)(346002)(8676002)(2906002)(9686003)(110136005)(5660300002)(64756008)(33656002)(26005)(66556008)(19627235002)(53546011)(316002)(186003)(83380400001)(52536014)(6506007)(55016002)(54906003)(66446008)(15650500001)(71200400001)(86362001)(66476007)(8936002)(107886003)(966005)(478600001)(45080400002)(76116006)(66946007)(7696005)(4326008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: PqJHuPTv5L2Vl9oDGcF4sE1bgHt2FP6zyTLWLmMGLMqUVU4Xqfss0US2UC15kjQVJvyMporBfSODnaVmR0fUUJlQ1DT+nALLP6Hj+YZAQOaUvOcBr4afa1MorwzeFGKneUjC3On5TZtvcUoPJy38BP8MucebJMDIfoYN5F/RLyPxs22g523VGXHKjAi8pe6hHZZEB9l0KuyvG3FEZcvYVziCg/EdB4OjXkjlD9a71IXkMiTNlGemdqA+/G2gl/zd6vIgGba+UI78RBHDOsbR8E9jicR2PyoFocm0OZ4rwxmDqjyvaxXTl8s70VPeDLRonHsj2VfGMgD71EwMK6vFDdxLCM2uR3cy7/GSbdRLuHHeqEl9ekRNW4n7x98fTmCfz03qQvZ+WRGhFPM6LfI8mqNIG3gDSdpYntLp5hls/1hXquB0iS9DIgk7jHPSVx8SgPrPAJ4oJ0afw1HWYhD+L5cTvFiirV1r0InHPGTJgc6Chp3WNPgKBqFh1cRJ85J3 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM5PR11MB2026.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc36e353-0d65-4238-a7ad-08d8295fe7ae X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jul 2020 08:11:55.7890 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: W3FJzw6cwwZreS3LVNgES0yNsKllLuq2EzRdWDMhaQl6p1K2HbMpVU3i6PLku0cucM6Mk8Gv578MpjhujWYxvA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1644 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Qi Per the conversation between Bret Barkelew and I, we should install the TCG= _PPI *before* any measurement. Please move it earlier. Thank you Yao Jiewen > -----Original Message----- > From: Zhang, Qi1 > Sent: Thursday, July 16, 2020 3:44 PM > To: devel@edk2.groups.io > Cc: Yao, Jiewen ; Wang, Jian J ; > Chao Zhang ; Zhang, Qi1 ; > Kumar, Rahul1 > Subject: [PATCH v2 4/7] SecurityPkg/Tcg2: Add TcgPpi >=20 > From: Jiewen Yao >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2841 >=20 > Cc: Jiewen Yao > Cc: Jian J Wang > Cc: Chao Zhang > Cc: Qi Zhang > Cc: Rahul Kumar > Signed-off-by: Jiewen Yao > --- > SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c | 100 +++++++++++++++++++++------- > SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf | 3 +- > 2 files changed, 78 insertions(+), 25 deletions(-) >=20 > diff --git a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c > b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c > index 19b8e4b318..8114de45c7 100644 > --- a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c > +++ b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c > @@ -1,7 +1,7 @@ > /** @file >=20 > Initialize TPM2 device and measure FVs before handing off control to D= XE. >=20 >=20 >=20 > -Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
>=20 > +Copyright (c) 2015 - 2020, Intel Corporation. All rights reserved.
>=20 > Copyright (c) 2017, Microsoft Corporation. All rights reserved.
>=20 > SPDX-License-Identifier: BSD-2-Clause-Patent >=20 >=20 >=20 > @@ -17,6 +17,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #include >=20 > #include >=20 > #include >=20 > +#include >=20 >=20 >=20 > #include >=20 > #include >=20 > @@ -66,6 +67,45 @@ EFI_PEI_PPI_DESCRIPTOR mTpmInitializationDonePpiList > =3D { > NULL >=20 > }; >=20 >=20 >=20 > +/** >=20 > + Do a hash operation on a data buffer, extend a specific TPM PCR with t= he > hash result, >=20 > + and build a GUIDed HOB recording the event which will be passed to the= DXE > phase and >=20 > + added into the Event Log. >=20 > + >=20 > + @param[in] This Indicates the calling context >=20 > + @param[in] Flags Bitmap providing additional information. >=20 > + @param[in] HashData Physical address of the start of the dat= a buffer >=20 > + to be hashed, extended, and logged. >=20 > + @param[in] HashDataLen The length, in bytes, of the buffer refe= renced by > HashData. >=20 > + @param[in] NewEventHdr Pointer to a TCG_PCR_EVENT_HDR data > structure. >=20 > + @param[in] NewEventData Pointer to the new event data. >=20 > + >=20 > + @retval EFI_SUCCESS Operation completed successfully. >=20 > + @retval EFI_OUT_OF_RESOURCES No enough memory to log the new event. >=20 > + @retval EFI_DEVICE_ERROR The command was unsuccessful. >=20 > + >=20 > +**/ >=20 > +EFI_STATUS >=20 > +EFIAPI >=20 > +HashLogExtendEvent ( >=20 > + IN EDKII_TCG_PPI *This, >=20 > + IN UINT64 Flags, >=20 > + IN UINT8 *HashData, >=20 > + IN UINTN HashDataLen, >=20 > + IN TCG_PCR_EVENT_HDR *NewEventHdr, >=20 > + IN UINT8 *NewEventData >=20 > + ); >=20 > + >=20 > +EDKII_TCG_PPI mEdkiiTcgPpi =3D { >=20 > + HashLogExtendEvent >=20 > +}; >=20 > + >=20 > +EFI_PEI_PPI_DESCRIPTOR mTcgPpiList =3D { >=20 > + EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST, >=20 > + &gEdkiiTcgPpiGuid, >=20 > + &mEdkiiTcgPpi >=20 > +}; >=20 > + >=20 > // >=20 > // Number of firmware blobs to grow by each time we run out of room >=20 > // >=20 > @@ -375,6 +415,7 @@ LogHashEvent ( > and build a GUIDed HOB recording the event which will be passed to the= DXE > phase and >=20 > added into the Event Log. >=20 >=20 >=20 > + @param[in] This Indicates the calling context >=20 > @param[in] Flags Bitmap providing additional information. >=20 > @param[in] HashData Physical address of the start of the dat= a buffer >=20 > to be hashed, extended, and logged. >=20 > @@ -388,7 +429,9 @@ LogHashEvent ( >=20 >=20 > **/ >=20 > EFI_STATUS >=20 > +EFIAPI >=20 > HashLogExtendEvent ( >=20 > + IN EDKII_TCG_PPI *This, >=20 > IN UINT64 Flags, >=20 > IN UINT8 *HashData, >=20 > IN UINTN HashDataLen, >=20 > @@ -403,16 +446,23 @@ HashLogExtendEvent ( > return EFI_DEVICE_ERROR; >=20 > } >=20 >=20 >=20 > - Status =3D HashAndExtend ( >=20 > - NewEventHdr->PCRIndex, >=20 > - HashData, >=20 > - HashDataLen, >=20 > + if(Flags & EFI_TCG2_PRE_HASH) { >=20 > + ZeroMem (&DigestList, sizeof(DigestList)); >=20 > + CopyMem(&DigestList, HashData, sizeof(DigestList)); >=20 > + Status =3D Tpm2PcrExtend( >=20 > + 0, >=20 > &DigestList >=20 > ); >=20 > + } else { >=20 > + Status =3D HashAndExtend ( >=20 > + NewEventHdr->PCRIndex, >=20 > + HashData, >=20 > + HashDataLen, >=20 > + &DigestList >=20 > + ); >=20 > + } >=20 > if (!EFI_ERROR (Status)) { >=20 > - if ((Flags & EFI_TCG2_EXTEND_ONLY) =3D=3D 0) { >=20 > - Status =3D LogHashEvent (&DigestList, NewEventHdr, NewEventData); >=20 > - } >=20 > + Status =3D LogHashEvent (&DigestList, NewEventHdr, NewEventData); >=20 > } >=20 >=20 >=20 > if (Status =3D=3D EFI_DEVICE_ERROR) { >=20 > @@ -452,6 +502,7 @@ MeasureCRTMVersion ( > TcgEventHdr.EventSize =3D (UINT32) StrSize((CHAR16*)PcdGetPtr > (PcdFirmwareVersionString)); >=20 >=20 >=20 > return HashLogExtendEvent ( >=20 > + &mEdkiiTcgPpi, >=20 > 0, >=20 > (UINT8*)PcdGetPtr (PcdFirmwareVersionString), >=20 > TcgEventHdr.EventSize, >=20 > @@ -651,27 +702,22 @@ MeasureFvImage ( > // FV pre-hash algos comply with current TPM hash requirement >=20 > // Skip hashing step in measure, only extend DigestList to PCR and l= og event >=20 > // >=20 > - Status =3D Tpm2PcrExtend( >=20 > - 0, >=20 > - &DigestList >=20 > + Status =3D HashLogExtendEvent ( >=20 > + &mEdkiiTcgPpi, >=20 > + EFI_TCG2_PRE_HASH, >=20 > + (UINT8*) &DigestList, // HashData >=20 > + (UINTN) sizeof(DigestList), // HashDataLen >=20 > + &TcgEventHdr, // EventHdr >=20 > + EventData // EventData >=20 > ); >=20 > - >=20 > - if (!EFI_ERROR(Status)) { >=20 > - Status =3D LogHashEvent (&DigestList, &TcgEventHdr, EventData); >=20 > - DEBUG ((DEBUG_INFO, "The pre-hashed FV which is extended & logged= by > Tcg2Pei starts at: 0x%x\n", FvBase)); >=20 > - DEBUG ((DEBUG_INFO, "The pre-hashed FV which is extended & logged= by > Tcg2Pei has the size: 0x%x\n", FvLength)); >=20 > - } else if (Status =3D=3D EFI_DEVICE_ERROR) { >=20 > - BuildGuidHob (&gTpmErrorHobGuid,0); >=20 > - REPORT_STATUS_CODE ( >=20 > - EFI_ERROR_CODE | EFI_ERROR_MINOR, >=20 > - (PcdGet32 (PcdStatusCodeSubClassTpmDevice) | > EFI_P_EC_INTERFACE_ERROR) >=20 > - ); >=20 > - } >=20 > + DEBUG ((DEBUG_INFO, "The pre-hashed FV which is extended & logged by > Tcg2Pei starts at: 0x%x\n", FvBase)); >=20 > + DEBUG ((DEBUG_INFO, "The pre-hashed FV which is extended & logged by > Tcg2Pei has the size: 0x%x\n", FvLength)); >=20 > } else { >=20 > // >=20 > // Hash the FV, extend digest to the TPM and log TCG event >=20 > // >=20 > Status =3D HashLogExtendEvent ( >=20 > + &mEdkiiTcgPpi, >=20 > 0, >=20 > (UINT8*) (UINTN) FvBase, // HashData >=20 > (UINTN) FvLength, // HashDataLen >=20 > @@ -866,6 +912,12 @@ PeimEntryMP ( > Status =3D PeiServicesNotifyPpi (&mNotifyList[0]); >=20 > ASSERT_EFI_ERROR (Status); >=20 >=20 >=20 > + // >=20 > + // install Tcg Services >=20 > + // >=20 > + Status =3D PeiServicesInstallPpi (&mTcgPpiList); >=20 > + ASSERT_EFI_ERROR (Status); >=20 > + >=20 > return Status; >=20 > } >=20 >=20 >=20 > @@ -893,7 +945,7 @@ MeasureSeparatorEventWithError ( > TcgEvent.PCRIndex =3D PCRIndex; >=20 > TcgEvent.EventType =3D EV_SEPARATOR; >=20 > TcgEvent.EventSize =3D (UINT32)sizeof (EventData); >=20 > - return HashLogExtendEvent(0,(UINT8 *)&EventData, TcgEvent.EventSize, > &TcgEvent,(UINT8 *)&EventData); >=20 > + return HashLogExtendEvent(&mEdkiiTcgPpi, 0, (UINT8 *)&EventData, > TcgEvent.EventSize, &TcgEvent,(UINT8 *)&EventData); >=20 > } >=20 >=20 >=20 > /** >=20 > diff --git a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf > b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf > index 3d361e8859..f64b29f1ae 100644 > --- a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf > +++ b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf > @@ -8,7 +8,7 @@ > # >=20 > # This module will initialize TPM device, measure reported FVs and BIOS= version. >=20 > # >=20 > -# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
>=20 > +# Copyright (c) 2015 - 2020, Intel Corporation. All rights reserved.
>=20 > # Copyright (c) 2017, Microsoft Corporation. All rights reserved.
>=20 > # SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > # >=20 > @@ -72,6 +72,7 @@ > gPeiTpmInitializationDonePpiGuid #= # PRODUCES >=20 > gEfiEndOfPeiSignalPpiGuid #= # SOMETIMES_CONSUMES > ## NOTIFY >=20 > gEdkiiPeiFirmwareVolumeInfoPrehashedFvPpiGuid #= # > SOMETIMES_CONSUMES >=20 > + gEdkiiTcgPpiGuid #= # PRODUCES >=20 >=20 >=20 > [Pcd] >=20 > gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString #= # > SOMETIMES_CONSUMES >=20 > -- > 2.26.2.windows.1