From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web10.6793.1597198372989639257 for ; Tue, 11 Aug 2020 19:12:53 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=tT2CANQi; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: jian.j.wang@intel.com) IronPort-SDR: gyysuto1H0M6PgXnPzenbt6LY4qD1auWfeSuYJ4eSr9flz7Xk4zwtnYGcPnti8fIndO4HPneiF dzlxppgmNqkA== X-IronPort-AV: E=McAfee;i="6000,8403,9710"; a="151297900" X-IronPort-AV: E=Sophos;i="5.76,302,1592895600"; d="scan'208";a="151297900" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2020 19:12:51 -0700 IronPort-SDR: 3E8ShC9MeNHyVh7saW3O8O/bDNu5mYl6TTHMtnwyPk5cGnE3dH374PN76oLwSJMXGiOtwkN1+Q j+VvaNAV6mLg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,302,1592895600"; d="scan'208";a="290883369" Received: from fmsmsx603-2.cps.intel.com (HELO fmsmsx603.amr.corp.intel.com) ([10.18.84.213]) by orsmga003.jf.intel.com with ESMTP; 11 Aug 2020 19:12:50 -0700 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 11 Aug 2020 19:12:50 -0700 Received: from FMSEDG002.ED.cps.intel.com (10.1.192.134) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 11 Aug 2020 19:12:50 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.170) by edgegateway.intel.com (192.55.55.69) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 11 Aug 2020 19:12:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NMBbcUNHUN0R4+S2Ketl36M3Ry89wKVop2Jx/NnDA/PWfQ9fWYZJyMFQ3vQCT5E8bhvbe+NN+fIX2t7xLa6J7O9RcbI106f0K44GNU9QvRoTlAYN3xGxxNBQnkwW1THwbh4XKkOdLrCdOiFbCgJOiNYOTmaSj/mLYaev7gkeUFVDdP+8jwVueMmokXIklAnLzIuXxBSft3q6l6OtpDCU515AFMud33FDhTHHqgiEc6EoK22aVy6KooeIygDJld7xuMWjeHnMindfg0xne/+ZFdip15gR2UfKd5lPDLH+jL1MaxnNTE1IDmHFwyd3mQ4K887eb5u7nqUmpRLNLzap8Q== 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=FBT6272U8b++FT5UIMu2LxSiiNUw6XgPYC0dTp84quM=; b=askPI5OQXPwW9F/UpWZTizWAFXJ5VAvZJ8t33IkbQDfliDNJiYpqD336Yjw+mAEnMjPF2zBbnlctdbNwTwKZDNmpOZqM7WPe8Cjpk/oOCeZu6MEMR5syKyfY4odtFs0TKj4HmWtBPzm2qDC8gLm741+0votV1CrQefAQB2QFQS4gk/nF9layfNHu8IbtNcZXpl3i+MRJo7cKzHKYFtTew15yBUn6vJkP0aN8/+LP4X+xBZac37i4QfuWtNqRMQ0e2aPlGAefGfdlLbcOb0UO7mJWSZwkGFvHEj+9mNhC+GXNWUfSeZvH7eMuyLwY88i0/S/jvJADF4kr6dna37F/5Q== 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=FBT6272U8b++FT5UIMu2LxSiiNUw6XgPYC0dTp84quM=; b=tT2CANQikYFagVGw96zhyVYO3rN8SSnQ9+mRsO15nrudny+agOt3obTuTuAXHQAOj6NwCf6O60COScXjN0BK3iPOJ37AoYZB5JzM+xk45J04xFY3T6ZWAN3SfsxyANXFITGfdTruxOXXLtjHQdAhr4jH+1GiZoY4dVabptmNE1o= Received: from SN6PR11MB3312.namprd11.prod.outlook.com (2603:10b6:805:c8::14) by SA0PR11MB4671.namprd11.prod.outlook.com (2603:10b6:806:9f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.16; Wed, 12 Aug 2020 02:12:47 +0000 Received: from SN6PR11MB3312.namprd11.prod.outlook.com ([fe80::bc48:4db0:9666:124e]) by SN6PR11MB3312.namprd11.prod.outlook.com ([fe80::bc48:4db0:9666:124e%7]) with mapi id 15.20.3261.024; Wed, 12 Aug 2020 02:12:46 +0000 From: "Wang, Jian J" To: "devel@edk2.groups.io" , "Zhang, Qi1" CC: "Yao, Jiewen" Subject: Re: [edk2-devel] [PATCH v2 3/9] SecurityPkg/DxeTpmMeasurementLib: Add new API. Thread-Topic: [edk2-devel] [PATCH v2 3/9] SecurityPkg/DxeTpmMeasurementLib: Add new API. Thread-Index: AQHWa4lNqwE6ppeWmkKWoRUYFykxKKkzwEFw Date: Wed, 12 Aug 2020 02:12:46 +0000 Message-ID: References: <20200806003342.17866-1-qi1.zhang@intel.com> <20200806003342.17866-4-qi1.zhang@intel.com> In-Reply-To: <20200806003342.17866-4-qi1.zhang@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNWMxZWQzMGItY2IzNy00ZGQwLWJiMTctZmUyNzAzNzljODc4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiMFNiRFd4WVhjR3Q1MmZEeUU4Qm5YSjNnWHNJSHZCQU4yeVwvdk9uZk80THVcLzRjTW0rTmc5MG1jUGhBa3pTT3laIn0= dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows x-ctpclassification: CTP_NT authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.203] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7557b0b9-0d3d-465d-7d0c-08d83e6534b6 x-ms-traffictypediagnostic: SA0PR11MB4671: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:669; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Tu8oUaFu2fbpBwG+npuvlOJap8dpmU7GCpEP6O2/gXCvYyPi72m1ZYS35DuUMlzF01HVLR/NZwbcmPLQaV2qRJo53MOxS0OEUrZafPnyaE3fTfN38leh9ETHe0ak8hHSyDMUV5nYyTCqav+JXdGFDeDeunym+fJ0W1MkbD66nTpUdmRVa/gyF3FOKfeVc2cAHesTQKOxIzOYWeE76iQrLG4udIeCmwSoFt7n11+MIeFLyht9QAoOJlEUMLD7a1guGKBjP0EuHUs0O8pqhNcmIjQs8mF998z3Nt6DX5BTCLjNqTsjThyiBVKFK+Hn3wyYSuEybHU+CZ1WaDFdqqPVhcGAAQ1vBgBXl5/ZggHUfI6f+VGZ/R44mYPEntuuqBxVY8e1X/M1jWdutCBh37qa7g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR11MB3312.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(39860400002)(376002)(366004)(136003)(396003)(346002)(2906002)(33656002)(9686003)(478600001)(71200400001)(316002)(966005)(8936002)(55016002)(7696005)(8676002)(6506007)(19627235002)(186003)(53546011)(26005)(66476007)(6636002)(110136005)(64756008)(66946007)(83380400001)(66446008)(76116006)(4326008)(86362001)(52536014)(15650500001)(5660300002)(66556008)(107886003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: kICR86RkiEad/xHqcbK79+T72fYXs2gspdDKhu7jCNaxb5RzieoCftwLJ7Jw+AGkRKaDAKUB79oBbIGRU/Bvjvdh3k74/VXK0NkE6qcpKnGIsIc9ytjxUXLal6Wpxdpw6Vmc0ReEHH5CmQjDU+sarHTjIR+gM5vuX8Vykc6DOm4I/BmRxcp4dNaQ9BEMoYC5d1K9FKiFtbPs1wvUirjh+ywgsjva+616a5ohzpVZk8jWLSYEcjJ5L9E6CnfYiTdwSlLNhpp7i5gHWLwAIJc04oXEMWkqon3XRo+qOprTSac9F4wTZovf0q6ETUneKH/PmlcpRMahBJcODn+hWOnUB0iB78Xmh2ulE2ilA2AiWT00e/gd/4kOA+cL+VsNRhvJH6fdhi9rzVBIMLA8HH61eqbPwxGQpIMAtu5hsduf9KgJgwNvF6XEZdMVksFCWLZwDdPFJmLP5WygMjib6PKZMEtkwMwYwGmiTvCRcASlSDg5Y4DarJtG992YZuHIensZKZPawZCv0Xv/BUcAYfTdFnjhQaerrpx3VYHr6xTKdeoKmzXsXvjfLAvny29qns/4wjAvvAcX6Q3md5d/NQtj4qGwIPQV7KfmUwMny/eiJJlxdT3aKU9SNgp3RbAE2fKI6fYx8lPWxN9mIyoOIQLzpA== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB3312.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7557b0b9-0d3d-465d-7d0c-08d83e6534b6 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Aug 2020 02:12:46.8329 (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: JSapz7+kbwgXhJg3ggtS2rHgZMTwPZtIBd7vXMVy8BKyg7ZsCLNw3mZclf1vxoMPjU+MejBrVmTaG70Qb9075A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4671 Return-Path: jian.j.wang@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Qi, Comments below. > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Qi Zhang > Sent: Thursday, August 06, 2020 8:34 AM > To: devel@edk2.groups.io > Cc: Yao, Jiewen ; Wang, Jian J ; > Zhang, Qi1 > Subject: [edk2-devel] [PATCH v2 3/9] SecurityPkg/DxeTpmMeasurementLib: Ad= d > new API. >=20 > From: Jiewen Yao >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2376 >=20 > Cc: Jiewen Yao > Cc: Jian J Wang > Cc: Qi Zhang > Signed-off-by: Jiewen Yao > --- > .../DxeTpmMeasurementLib.inf | 6 +- > .../DxeTpmMeasurementLib/EventLogRecord.c | 218 ++++++++++++++++++ > 2 files changed, 223 insertions(+), 1 deletion(-) > create mode 100644 > SecurityPkg/Library/DxeTpmMeasurementLib/EventLogRecord.c >=20 > diff --git > a/SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf > b/SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf > index 7d41bc41f9..39448f8ee8 100644 > --- a/SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf > +++ > b/SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf > @@ -4,7 +4,7 @@ > # This library provides TpmMeasureAndLogData() to measure and log data,= and >=20 > # extend the measurement result into a specific PCR. >=20 > # >=20 > -# Copyright (c) 2012 - 2018, Intel Corporation. All rights reserved.
>=20 > +# Copyright (c) 2012 - 2020, Intel Corporation. All rights reserved.
>=20 > # SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > # >=20 > ## >=20 > @@ -26,6 +26,7 @@ >=20 >=20 > [Sources] >=20 > DxeTpmMeasurementLib.c >=20 > + EventLogRecord.c >=20 >=20 >=20 > [Packages] >=20 > MdePkg/MdePkg.dec >=20 > @@ -42,3 +43,6 @@ > [Protocols] >=20 > gEfiTcgProtocolGuid ## SOMETIMES_CONSUMES >=20 > gEfiTcg2ProtocolGuid ## SOMETIMES_CONSUMES >=20 > + >=20 > +[Pcd] >=20 > + gEfiMdeModulePkgTokenSpaceGuid.PcdTcgPfpMeasurementRevision #= # > CONSUMES >=20 > diff --git a/SecurityPkg/Library/DxeTpmMeasurementLib/EventLogRecord.c > b/SecurityPkg/Library/DxeTpmMeasurementLib/EventLogRecord.c > new file mode 100644 > index 0000000000..7b3726e44b > --- /dev/null > +++ b/SecurityPkg/Library/DxeTpmMeasurementLib/EventLogRecord.c > @@ -0,0 +1,218 @@ > +/** @file >=20 > + This library is used by other modules to measure data to TPM. >=20 > + >=20 > +Copyright (c) 2020, Intel Corporation. All rights reserved.
>=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#include >=20 > + >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include >=20 > + >=20 > +#include >=20 > + >=20 > +#pragma pack (1) >=20 > + >=20 > +#define PLATFORM_FIRMWARE_BLOB_DESC "Fv(XXXXXXXX-XXXX-XXXX-XXXX- > XXXXXXXXXXXX)" >=20 > +typedef struct { >=20 > + UINT8 BlobDescriptionSize; >=20 > + UINT8 > BlobDescription[sizeof(PLATFORM_FIRMWARE_BLOB_DESC)]; >=20 > + EFI_PHYSICAL_ADDRESS BlobBase; >=20 > + UINT64 BlobLength; >=20 > +} PLATFORM_FIRMWARE_BLOB2_STRUCT; >=20 > + >=20 > +#define HANDOFF_TABLE_POINTER_DESC "1234567890ABCDEF" >=20 > +typedef struct { >=20 > + UINT8 TableDescriptionSize; >=20 > + UINT8 > TableDescription[sizeof(HANDOFF_TABLE_POINTER_DESC)]; >=20 > + UINT64 NumberOfTables; >=20 > + EFI_CONFIGURATION_TABLE TableEntry[1]; >=20 > +} HANDOFF_TABLE_POINTERS2_STRUCT; >=20 > + >=20 > +#pragma pack () >=20 > + >=20 > +/** >=20 > + Get the FvName from the FV header. >=20 > + >=20 > + Causion: The FV is untrusted input. >=20 > + >=20 > + @param[in] FvBase Base address of FV image. >=20 > + @param[in] FvLength Length of FV image. >=20 > + >=20 > + @return FvName pointer >=20 > + @retval NULL FvName is NOT found >=20 > +**/ >=20 > +VOID * >=20 > +TpmMeasurementGetFvName ( >=20 > + IN EFI_PHYSICAL_ADDRESS FvBase, >=20 > + IN UINT64 FvLength >=20 > + ) >=20 > +{ >=20 > + EFI_FIRMWARE_VOLUME_HEADER *FvHeader; >=20 > + EFI_FIRMWARE_VOLUME_EXT_HEADER *FvExtHeader; >=20 > + >=20 > + if (FvBase >=3D MAX_ADDRESS) { >=20 > + return NULL; >=20 > + } >=20 > + if (FvLength >=3D MAX_ADDRESS - FvBase) { >=20 > + return NULL; >=20 > + } >=20 > + if (FvLength < sizeof(EFI_FIRMWARE_VOLUME_HEADER)) { >=20 > + return NULL; >=20 > + } >=20 > + >=20 > + FvHeader =3D (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FvBase; >=20 > + if (FvHeader->Signature !=3D EFI_FVH_SIGNATURE) { >=20 > + return NULL; >=20 > + } >=20 > + if (FvHeader->ExtHeaderOffset < sizeof(EFI_FIRMWARE_VOLUME_HEADER)) { >=20 > + return NULL; >=20 > + } >=20 > + if (FvHeader->ExtHeaderOffset + > sizeof(EFI_FIRMWARE_VOLUME_EXT_HEADER) > FvLength) { >=20 > + return NULL; >=20 > + } >=20 > + FvExtHeader =3D (EFI_FIRMWARE_VOLUME_EXT_HEADER *)(UINTN)(FvBase + > FvHeader->ExtHeaderOffset); >=20 > + >=20 > + return &FvExtHeader->FvName; >=20 > +} >=20 > + >=20 > +/** >=20 > + Mesure a FirmwareBlob. 'Mesure' -> 'Measure' >=20 > + >=20 > + @param[in] PcrIndex PcrIndex of the measurment. 'measurment' -> 'measurement' >=20 > + @param[in] Descrption Description for this FirmwareBlob. 'Descrption' -> 'Description' >=20 > + @param[in] FirmwareBlobBase Base address of this FirmwareBlob. >=20 > + @param[in] FirmwareBlobLength Size in bytes of this FirmwareBlob= . >=20 > + >=20 > + @retval EFI_SUCCESS Operation completed successfully. >=20 > + @retval EFI_UNSUPPORTED TPM device not available. >=20 > + @retval EFI_OUT_OF_RESOURCES Out of memory. >=20 > + @retval EFI_DEVICE_ERROR The operation was unsuccessful. >=20 > +*/ >=20 > +EFI_STATUS >=20 > +EFIAPI >=20 > +MeasureFirmwareBlob ( >=20 > + IN UINT32 PcrIndex, >=20 > + IN CHAR8 *Description OPTIONAL, >=20 > + IN EFI_PHYSICAL_ADDRESS FirmwareBlobBase, >=20 > + IN UINT64 FirmwareBlobLength >=20 > + ) >=20 > +{ >=20 > + EFI_PLATFORM_FIRMWARE_BLOB FvBlob; >=20 > + PLATFORM_FIRMWARE_BLOB2_STRUCT FvBlob2; >=20 > + VOID *FvName; >=20 > + UINT32 EventType; >=20 > + VOID *EventLog; >=20 > + UINT32 EventLogSize; >=20 > + EFI_STATUS Status; >=20 > + >=20 > + FvName =3D TpmMeasurementGetFvName (FirmwareBlobBase, > FirmwareBlobLength); >=20 > + >=20 > + if (((Description !=3D NULL) || (FvName !=3D NULL)) && >=20 > + (PcdGet32(PcdTcgPfpMeasurementRevision) >=3D > TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105)) { >=20 > + ZeroMem (&FvBlob2, sizeof(FvBlob2)); It looks that clear the data structure is not necessary. Code below will fill all fields in it. According to description of AsciiSPrint(), it a= lso produces NULL-terminated string. I see no reason to clear it in advance. >=20 > + if (Description !=3D NULL) { >=20 > + AsciiSPrint((CHAR8*)FvBlob2.BlobDescription, > sizeof(FvBlob2.BlobDescription), "%a", Description); >=20 > + } else { >=20 > + AsciiSPrint((CHAR8*)FvBlob2.BlobDescription, > sizeof(FvBlob2.BlobDescription), "Fv(%g)", FvName); >=20 > + } >=20 > + >=20 > + FvBlob2.BlobDescriptionSize =3D sizeof(FvBlob2.BlobDescription); >=20 > + FvBlob2.BlobBase =3D FirmwareBlobBase; >=20 > + FvBlob2.BlobLength =3D FirmwareBlobLength; >=20 > + >=20 > + EventType =3D EV_EFI_PLATFORM_FIRMWARE_BLOB2; >=20 > + EventLog =3D &FvBlob2; >=20 > + EventLogSize =3D sizeof(FvBlob2); >=20 > + } else { >=20 > + FvBlob.BlobBase =3D FirmwareBlobBase; >=20 > + FvBlob.BlobLength =3D FirmwareBlobLength; >=20 > + >=20 > + EventType =3D EV_EFI_PLATFORM_FIRMWARE_BLOB; >=20 > + EventLog =3D &FvBlob; >=20 > + EventLogSize =3D sizeof(FvBlob); >=20 > + } >=20 > + >=20 > + Status =3D TpmMeasureAndLogData ( >=20 > + PcrIndex, >=20 > + EventType, >=20 > + EventLog, >=20 > + EventLogSize, >=20 > + (VOID*)(UINTN)FirmwareBlobBase, >=20 > + FirmwareBlobLength >=20 > + ); >=20 > + >=20 > + return Status; >=20 > +} >=20 > + >=20 > +/** >=20 > + Mesure a HandoffTable. 'Mesure' -> 'Measure' >=20 > + >=20 > + @param[in] PcrIndex PcrIndex of the measurment. 'measurment' -> 'measurement' >=20 > + @param[in] Descrption Description for this HandoffTable. 'Descrption' -> 'Description' >=20 > + @param[in] TableGuid GUID of this HandoffTable. >=20 > + @param[in] TableAddress Base address of this HandoffTable. >=20 > + @param[in] TableLength Size in bytes of this HandoffTable= . >=20 > + >=20 > + @retval EFI_SUCCESS Operation completed successfully. >=20 > + @retval EFI_UNSUPPORTED TPM device not available. >=20 > + @retval EFI_OUT_OF_RESOURCES Out of memory. >=20 > + @retval EFI_DEVICE_ERROR The operation was unsuccessful. >=20 > +*/ >=20 > +EFI_STATUS >=20 > +EFIAPI >=20 > +MeasureHandoffTable ( >=20 > + IN UINT32 PcrIndex, >=20 > + IN CHAR8 *Description OPTIONAL, >=20 > + IN EFI_GUID *TableGuid, >=20 > + IN VOID *TableAddress, >=20 > + IN UINTN TableLength >=20 > + ) >=20 > +{ >=20 > + EFI_HANDOFF_TABLE_POINTERS HandoffTables; >=20 > + HANDOFF_TABLE_POINTERS2_STRUCT HandoffTables2; >=20 > + UINT32 EventType; >=20 > + VOID *EventLog; >=20 > + UINT32 EventLogSize; >=20 > + EFI_STATUS Status; >=20 > + >=20 > + if ((Description !=3D NULL) && >=20 > + (PcdGet32(PcdTcgPfpMeasurementRevision) >=3D > TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105)) { >=20 > + ZeroMem (&HandoffTables2, sizeof(HandoffTables2)); The same as before. I see no reason to clear the data in advance. >=20 > + AsciiSPrint((CHAR8*)HandoffTables2.TableDescription, > sizeof(HandoffTables2.TableDescription), "%a", Description); >=20 > + >=20 > + HandoffTables2.TableDescriptionSize =3D > sizeof(HandoffTables2.TableDescription); >=20 > + HandoffTables2.NumberOfTables =3D 1; >=20 > + CopyGuid (&(HandoffTables2.TableEntry[0].VendorGuid), TableGuid); >=20 > + HandoffTables2.TableEntry[0].VendorTable =3D TableAddress; >=20 > + >=20 > + EventType =3D EV_EFI_HANDOFF_TABLES2; >=20 > + EventLog =3D &HandoffTables2; >=20 > + EventLogSize =3D sizeof(HandoffTables2); >=20 > + } else { >=20 > + HandoffTables.NumberOfTables =3D 1; >=20 > + CopyGuid (&(HandoffTables.TableEntry[0].VendorGuid), TableGuid); >=20 > + HandoffTables.TableEntry[0].VendorTable =3D TableAddress; >=20 > + >=20 > + EventType =3D EV_EFI_HANDOFF_TABLES; >=20 > + EventLog =3D &HandoffTables; >=20 > + EventLogSize =3D sizeof(HandoffTables); >=20 > + } >=20 > + >=20 > + Status =3D TpmMeasureAndLogData ( >=20 > + PcrIndex, >=20 > + EventType, >=20 > + EventLog, >=20 > + EventLogSize, >=20 > + TableAddress, >=20 > + TableLength >=20 > + ); >=20 > + return Status; >=20 > +} >=20 > -- > 2.26.2.windows.1 >=20 >=20 > -=3D-=3D-=3D-=3D-=3D-=3D > Groups.io Links: You receive all messages sent to this group. >=20 > View/Reply Online (#63754): https://edk2.groups.io/g/devel/message/63754 > Mute This Topic: https://groups.io/mt/76019584/1768734 > Group Owner: devel+owner@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [jian.j.wang@intel.com= ] > -=3D-=3D-=3D-=3D-=3D-=3D