From nobody Sun May 5 16:50:33 2024 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+82423+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+82423+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1634737425; cv=none; d=zohomail.com; s=zohoarc; b=U3jDWvnY7x3R7csC9vi6L10tYfIzYWeJg/OnQF4uuvANOVCh4TaEZGvZTQEOcq2i86Bfh8Yv3Iz3MpqOowcfdawy9KwI7wzIwVYqFJAK9XQTxqTez7om3ioEc2AoH9Jx6RJYKZ4G/1SS5wppqZJlia7SNrKBYUr+zlM3w3HME+E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1634737425; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=XDjXTuVJj8AQBTpYZuLmHL+1CWf+sr17OzVk3X00b2Q=; b=I/JZi+QWbJ/X4oVeNIFHcVvy4cHR2BdZ5uNewyPSCQdgX2t7JqKj7IqkkdgHAYFDc4Rq84YnXStenr0wGTWRzvOh6cCuyXoXBRrGjNmkIpImfhFsl2Du9p/bi8KcvkSJgso4eAlNyIuUYNSFC4oa5YOFRGlJiGM6S2rB/AySmDk= 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+82423+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1634737425803180.86032906209073; Wed, 20 Oct 2021 06:43:45 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id jPoWYY1788612xHaIl6dJQnO; Wed, 20 Oct 2021 06:43:45 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web09.8089.1634737423729939450 for ; Wed, 20 Oct 2021 06:43:44 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 591791063; Wed, 20 Oct 2021 06:43:43 -0700 (PDT) X-Received: from u203013-lin.austin.arm.com (u203013-lin.austin.arm.com [10.118.29.243]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4F29F3F73D; Wed, 20 Oct 2021 06:43:43 -0700 (PDT) From: "Joseph Hemann" To: devel@edk2.groups.io Cc: nd@arm.com, Joseph Hemann , G Edhaya Chandran , Barton Gao , Carolyn Gjertsen , Samer El-Haj-Mahmoud , Eric Jin , Arvin Chen , Supreeth Venkatesh Subject: [edk2-devel] [PATCH 1/6] uefi-sct/SctPkg: TCG2 Protocol: add header with TCG2 protocol definitions Date: Wed, 20 Oct 2021 08:43:30 -0500 Message-Id: <20211020134335.55257-2-joseph.hemann@arm.com> In-Reply-To: <20211020134335.55257-1-joseph.hemann@arm.com> References: <20211020134335.55257-1-joseph.hemann@arm.com> 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,joseph.hemann@arm.com X-Gm-Message-State: qnSAvAtcf22fXz9zOuEpVPOax1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1634737425; bh=FnN6YeeDIjMmuxUkLxHw8mHJlL8dw9LyCXQ99KiloR0=; h=Cc:Date:From:Reply-To:Subject:To; b=jcz3v476Na4tAnf8PPK+Wnnf2JyvbG7alKwtv6U9Xrqr+VRmQ18spXkv5j1ajWztcGx U9z1KJi4XKurSkb3SwkvcTQMlLCGTW+WqgkuuMTxBKprmcQPBbTc6u3BFMCGHfQmMnwVz 5B4j9ilUN30DwOo/EjGUi8zU+fRHg2ufBYs= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1634737426287100003 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Joseph Hemann Cc: G Edhaya Chandran Cc: Barton Gao Cc: Carolyn Gjertsen Cc: Samer El-Haj-Mahmoud Cc: Eric Jin Cc: Arvin Chen Cc: Supreeth Venkatesh Signed-off-by: Joseph Hemann --- uefi-sct/SctPkg/UEFI/Protocol/TCG2.h | 174 +++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 uefi-sct/SctPkg/UEFI/Protocol/TCG2.h diff --git a/uefi-sct/SctPkg/UEFI/Protocol/TCG2.h b/uefi-sct/SctPkg/UEFI/Pr= otocol/TCG2.h new file mode 100644 index 000000000000..9ece78e0deaf --- /dev/null +++ b/uefi-sct/SctPkg/UEFI/Protocol/TCG2.h @@ -0,0 +1,174 @@ +/** @file + + Copyright 2006 - 2016 Unified EFI, Inc.
+ Copyright (c) 2013 - 2016, Intel Corporation. All rights reserved.
+ Copyright (c) 2021, Arm Inc. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ +/*++ + +Module Name: + + TCG2.h + +Abstract: + + EFI TCG Protocol + +--*/ + + +#ifndef __TCG2_PROTOCOL_H__ +#define __TCG2_PROTOCOL_H__ + +// +// Global ID for the TCG2 Protocol +// +#define EFI_TCG2_PROTOCOL_GUID \ + {0x607f766c, 0x7455, 0x42be, {0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72,= 0x0f}} + +// Following defintions come from TCG2 Efi Protocol Spec +#define EFI_TCG2_BOOT_HASH_ALG_SHA1 0x00000001 + +#define EFI_TCG2_BOOT_HASH_ALG_SHA256 0x00000002 + +#define EFI_TCG2_BOOT_HASH_ALG_SHA384 0x00000004 + +#define EFI_TCG2_BOOT_HASH_ALG_SHA512 0x00000008 + +#define EFI_TCG2_BOOT_HASH_ALG_SM3_256 0x00000010 + +#define EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 0x00000001 + +#define EFI_TCG2_EVENT_LOG_FORMAT_TCG_2 0x00000002 + +typedef struct _EFI_TCG2_PROTOCOL EFI_TCG2_PROTOCOL; + +typedef UINT64 EFI_PHYSICAL_ADDRESS; + +typedef UINT32 EFI_TCG2_EVENT_LOG_BITMAP; + +typedef UINT32 EFI_TCG2_EVENT_LOG_FORMAT; + +typedef UINT32 EFI_TCG2_EVENT_ALGORITHM_BITMAP; + +typedef UINT32 TCG_PCRINDEX; + +typedef UINT32 TCG_EVENTTYPE; + +// Following struct defintions come from TCG2 Efi Protocol Spec +typedef struct { + UINT8 Major; + UINT8 Minor; +} EFI_TCG2_VERSION; + +typedef struct { + UINT8 Size; + EFI_TCG2_VERSION StructureVersion; + EFI_TCG2_VERSION ProtocolVersion; + EFI_TCG2_EVENT_ALGORITHM_BITMAP HashAlgorithmBitmap; + EFI_TCG2_EVENT_LOG_BITMAP SupportedEventLogs; + BOOLEAN TPMPresentFlag; + UINT16 MaxCommandSize; + UINT16 MaxResponseSize; + UINT32 ManufacturerID; + UINT32 NumberOfPcrBanks; + EFI_TCG2_EVENT_ALGORITHM_BITMAP ActivePcrBanks; +} EFI_TCG2_BOOT_SERVICE_CAPABILITY; + +typedef +EFI_STATUS +(EFIAPI *EFI_TCG2_GET_CAPABILITY) ( + IN EFI_TCG2_PROTOCOL *This, + IN OUT EFI_TCG2_BOOT_SERVICE_CAPABILITY *ProtocolCapability +); + +typedef +EFI_STATUS +(EFIAPI *EFI_TCG2_GET_EVENT_LOG) ( + IN EFI_TCG2_PROTOCOL *This, + IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat, + OUT EFI_PHYSICAL_ADDRESS *EventLogLocation, + OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry, + OUT BOOLEAN *EventLogTruncated +); + +typedef struct tdEFI_TCG2_EVENT_HEADER { + UINT32 HeaderSize; + UINT16 HeaderVersion; + TCG_PCRINDEX PCRIndex; + TCG_EVENTTYPE EventType; +} EFI_TCG2_EVENT_HEADER; + +typedef struct tdEFI_TCG2_EVENT { + UINT32 Size; + EFI_TCG2_EVENT_HEADER Header; + UINT8 Event[]; +} EFI_TCG2_EVENT; + +typedef +EFI_STATUS +(EFIAPI * EFI_TCG2_HASH_LOG_EXTEND_EVENT) ( + IN EFI_TCG2_PROTOCOL *This, + IN UINT64 Flags, + IN EFI_PHYSICAL_ADDRESS DataToHash, + IN UINT64 DataToHashLen, + IN EFI_TCG2_EVENT *EfiTcgEvent +); + +typedef +EFI_STATUS +(EFIAPI *EFI_TCG2_SUBMIT_COMMAND) ( + IN EFI_TCG2_PROTOCOL *This, + IN UINT32 InputParameterBlockSize, + IN UINT8 *InputParameterBlock, + IN UINT32 OutputParameterBlockSize, + IN UINT8 *OutputParameterBlock +); + +typedef +EFI_STATUS +(EFIAPI *EFI_TCG2_GET_ACTIVE_PCR_BANKS) ( + IN EFI_TCG2_PROTOCOL *This, + OUT UINT32 *ActivePcrBanks +); + +typedef +EFI_STATUS +(EFIAPI *EFI_TCG2_SET_ACTIVE_PCR_BANKS) ( + IN EFI_TCG2_PROTOCOL *This, + IN UINT32 ActivePcrBanks +); + +typedef +EFI_STATUS +(EFIAPI * EFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS) ( + IN EFI_TCG2_PROTOCOL *This, + OUT UINT32 *OperationPresent, + OUT UINT32 *Response +); + +// +// Interface structure for the TCG2 Protocol +// +struct _EFI_TCG2_PROTOCOL { + EFI_TCG2_GET_CAPABILITY GetCapability; + EFI_TCG2_GET_EVENT_LOG GetEventLog; + EFI_TCG2_HASH_LOG_EXTEND_EVENT HashLogExtendEvent; + EFI_TCG2_SUBMIT_COMMAND SubmitCommand; + EFI_TCG2_GET_ACTIVE_PCR_BANKS GetActivePcrBanks; + EFI_TCG2_SET_ACTIVE_PCR_BANKS SetActivePcrBanks; + EFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS GetResultOfSetActivePcrBanks; +}; + +extern EFI_GUID gEfiTcg2ProtocolGuid; + +#endif --=20 2.17.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 (#82423): https://edk2.groups.io/g/devel/message/82423 Mute This Topic: https://groups.io/mt/86464900/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- From nobody Sun May 5 16:50:33 2024 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+82424+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+82424+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1634737435; cv=none; d=zohomail.com; s=zohoarc; b=UWdaQ1zC7wjPMnRcZLZJ6TKe9RYVqUYtFDN0TKO8lTLXGMWHy+PjPyIUIvBA30I817nrcz/NMYkbTStX4u/mx2ZBbXJIsikdlX6k0FGvIR3Pmu94Rmc/BOpKVwxvVzd2P6wrJx/AnjD9ixbx0EpIgNd0nl6KNDjJNBo/40G9qCk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1634737435; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=Eej0qTdZdwBX/e/1n8QGBQrAscvd7N8aNdbVQp0Mjw0=; b=USL3PyNWXz9z4pzIOOSO4MYuIyAYxnZlzQHk/WIJS8iGxXWOOv0Saa6o4UjvkAbV52SV5QyAQzSAYlf2nfkScSSql0Nk/VVRsKZlmJnf+R4L8EWAby/YQHjZ1kBMTj1AtD9Ek54hiwRUS8l1NhC3P1WIeLI7vzpqc77WX+7CyeQ= 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+82424+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1634737435173336.9474574728414; Wed, 20 Oct 2021 06:43:55 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id N9JsYY1788612xJ6hrqM3aFn; Wed, 20 Oct 2021 06:43:54 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web09.8092.1634737428914518639 for ; Wed, 20 Oct 2021 06:43:49 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 842FE106F; Wed, 20 Oct 2021 06:43:48 -0700 (PDT) X-Received: from u203013-lin.austin.arm.com (u203013-lin.austin.arm.com [10.118.29.243]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 75A0A3F73D; Wed, 20 Oct 2021 06:43:48 -0700 (PDT) From: "Joseph Hemann" To: devel@edk2.groups.io Cc: nd@arm.com, Joseph Hemann , G Edhaya Chandran , Barton Gao , Carolyn Gjertsen , Samer El-Haj-Mahmoud , Eric Jin , Arvin Chen , Supreeth Venkatesh Subject: [edk2-devel] [PATCH 2/6] uefi-sct/SctPkg: TCG2 Protocol: add GetCapability Test Date: Wed, 20 Oct 2021 08:43:31 -0500 Message-Id: <20211020134335.55257-3-joseph.hemann@arm.com> In-Reply-To: <20211020134335.55257-1-joseph.hemann@arm.com> References: <20211020134335.55257-1-joseph.hemann@arm.com> 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,joseph.hemann@arm.com X-Gm-Message-State: l9d97g8xLguLpi2v94lgfDlgx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1634737434; bh=GRHakzCJqYKshFePg8BG4v5L3oIMqmc08B0ZBFW2Ol8=; h=Cc:Date:From:Reply-To:Subject:To; b=q4JY4oG0dCSlHSxorX5g6TvYbnIRpkiAI+Mo5ZNMaJs6m1Q0uFQaN4oXiKPhqnEGKuh EPNJSlEknDllpLFeOUtz39WLqD/t2FdcZGl2mN6N+1O0T0zsHFd8I0aw4PtZukNPmpZ5H C7NcTiQdEynpB5Np1leMR8aWfG9WHcmFJ/0= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1634737436885100001 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Joseph Hemann -implement initial infrastructure for the TCG2 protocol test including updates to .dsc file, inf file, GUID source files, update to Category.ini. -add initial TCG2 protocol test for GetCapability(), as defined in the TCG EFI Protocol Spec 6.4.4. -checkpoint for NULL pointer passed for buffer -checkpoint for validating fields of the struct returned by GetCapabilty() Cc: G Edhaya Chandran Cc: Barton Gao Cc: Carolyn Gjertsen Cc: Samer El-Haj-Mahmoud Cc: Eric Jin Cc: Arvin Chen Cc: Supreeth Venkatesh Signed-off-by: Joseph Hemann --- uefi-sct/SctPkg/CommonGenFramework.sh | 1 + uefi-sct/SctPkg/Config/Data/Category.ini | 7 + .../EFI/Protocol/TCG2/BlackBoxTest/Guid.c | 35 +++ .../EFI/Protocol/TCG2/BlackBoxTest/Guid.h | 43 ++++ .../TCG2/BlackBoxTest/TCG2ProtocolBBTest.h | 65 ++++++ .../TCG2/BlackBoxTest/TCG2ProtocolBBTest.inf | 51 ++++ .../TCG2ProtocolBBTestConformance.c | 221 ++++++++++++++++++ .../BlackBoxTest/TCG2ProtocolBBTestMain.c | 102 ++++++++ uefi-sct/SctPkg/UEFI/UEFI_SCT.dsc | 1 + 9 files changed, 526 insertions(+) create mode 100644 uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBo= xTest/Guid.c create mode 100644 uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBo= xTest/Guid.h create mode 100644 uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBo= xTest/TCG2ProtocolBBTest.h create mode 100644 uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBo= xTest/TCG2ProtocolBBTest.inf create mode 100644 uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBo= xTest/TCG2ProtocolBBTestConformance.c create mode 100644 uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBo= xTest/TCG2ProtocolBBTestMain.c diff --git a/uefi-sct/SctPkg/CommonGenFramework.sh b/uefi-sct/SctPkg/Common= GenFramework.sh index 779a6a4492b3..997d8ba1638b 100755 --- a/uefi-sct/SctPkg/CommonGenFramework.sh +++ b/uefi-sct/SctPkg/CommonGenFramework.sh @@ -210,6 +210,7 @@ then cp $ProcessorType/DiskIo2BBTest.efi $Framework/= Test/ > NUL cp $ProcessorType/TimeStampBBTest.efi $Framework/= Test/ > NUL cp $ProcessorType/RandomNumberBBTest.efi $Framework/= Test/ > NUL + cp $ProcessorType/TCG2ProtocolBBTest.efi $Framework/= Test/ > NUL cp $ProcessorType/Hash2BBTest.efi $Framework/= Test/ > NUL cp $ProcessorType/Pkcs7BBTest.efi $Framework/= Test/ > NUL cp $ProcessorType/ConfigKeywordHandlerBBTest.efi $Framework/= Test/ > NUL diff --git a/uefi-sct/SctPkg/Config/Data/Category.ini b/uefi-sct/SctPkg/Con= fig/Data/Category.ini index af27e362ec8a..c239fe4ba98c 100644 --- a/uefi-sct/SctPkg/Config/Data/Category.ini +++ b/uefi-sct/SctPkg/Config/Data/Category.ini @@ -1026,3 +1026,10 @@ InterfaceGuid =3D 8D59D32B-C655-4AE9-9B15-F25904992A= 43 Name =3D IHV\ConsoleSupportTest\AbsolutePointerProtocolTest Description =3D Absolute Pointer Protocol Test on IHV Drivers =20 +[Category Data] +Revision =3D 0x00010000 +CategoryGuid =3D 607f766c-7455-42be-930b-e4d76db2720f +InterfaceGuid =3D 607f766c-7455-42be-930b-e4d76db2720f +Name =3D TCG2ProtocolTest +Description =3D + diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/G= uid.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c new file mode 100644 index 000000000000..206662ee7933 --- /dev/null +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c @@ -0,0 +1,35 @@ +/** @file + + Copyright 2006 - 2013 Unified EFI, Inc.
+ Copyright (c) 2013, Intel Corporation. All rights reserved.
+ Copyright (c) 2021, Arm Inc. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ +/*++ + +Module Name: + + guid.c + +Abstract: + + GUIDs auto-generated for EFI test assertion. + +--*/ + +#include "Efi.h" +#include "Guid.h" + +EFI_GUID gTcg2ConformanceTestAssertionGuid001 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_001_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid002 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_002_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid003 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_003_GUID; diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/G= uid.h b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h new file mode 100644 index 000000000000..b675756b9fb7 --- /dev/null +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h @@ -0,0 +1,43 @@ +/** @file + + Copyright 2006 - 2016 Unified EFI, Inc.
+ Copyright (c) 2013, Intel Corporation. All rights reserved.
+ Copyright (c) 2021, Arm Inc. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ +/*++ + +Module Name: + + guid.h + +Abstract: + + GUIDs auto-generated for EFI test assertion. + +--*/ + + +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_001_GUID \ +{ 0xca93b02a, 0xe897, 0x4400, {0x81, 0x38, 0xc8, 0xa8, 0xcb, 0x2f, 0xc1, 0= xed }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid001; + +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_002_GUID \ +{ 0xda8821d9, 0x3d2c, 0x4698, {0x8c, 0xd5, 0x0f, 0x0c, 0x82, 0x94, 0x1d, 0= x0c }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid002; + +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_003_GUID \ +{ 0xfdee7001, 0x7e28, 0x4e35, {0x99, 0x66, 0x98, 0x0b, 0xeb, 0xba, 0xf1, 0= x57 }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid003; + diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTest.h b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/Black= BoxTest/TCG2ProtocolBBTest.h new file mode 100644 index 000000000000..674540182d2d --- /dev/null +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTest.h @@ -0,0 +1,65 @@ +/** @file + + Copyright 2006 - 2017 Unified EFI, Inc.
+ Copyright (c) 2013, Intel Corporation. All rights reserved.
+ Copyright (c) 2021, Arm Inc. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ +/*++ + +Module Name: + TCG2ProtocolBBTest.h + +Abstract: + head file of test driver of EFI TCG2 Protocol Test + +--*/ + +#include "SctLib.h" +#include +#include +#include "Guid.h" + +#define EFI_TCG2_TEST_REVISION 0x00010000 + +//////////////////////////////////////////////////////////////////////////= //// +// +// Entry GUIDs for Function Test +// +#define EFI_TCG2_PROTOCOL_TEST_ENTRY_GUID0101 \ + {0x39ff9c71, 0x4b41, 0x4e5b, {0xae, 0xd7, 0x87, 0xc7, 0x94, 0x18, 0x7d, 0= x67} } + +EFI_STATUS +EFIAPI +BBTestTCG2ProtocolUnload ( + IN EFI_HANDLE ImageHandle + ); + +EFI_STATUS +BBTestGetCapabilityConformanceTestCheckpoint1 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ); + +EFI_STATUS +BBTestGetCapabilityConformanceTestCheckpoint2 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ); + +EFI_STATUS +BBTestGetCapabilityConformanceTest ( + IN EFI_BB_TEST_PROTOCOL *This, + IN VOID *ClientInterface, + IN EFI_TEST_LEVEL TestLevel, + IN EFI_HANDLE SupportHandle + ); + diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTest.inf b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/Bla= ckBoxTest/TCG2ProtocolBBTest.inf new file mode 100644 index 000000000000..f41d84b32a5c --- /dev/null +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTest.inf @@ -0,0 +1,51 @@ +## @file +# +# Copyright 2006 - 2015 Unified EFI, Inc.
+# Copyright (c) 2013, Intel Corporation. All rights reserved.
+# Copyright (c) 2021, Arm Inc. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the B= SD License +# which accompanies this distribution. The full text of the license may = be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IM= PLIED. +# +## +#/*++ +# +# Module Name: +# +# TCG2ProtocolBBTest.inf +# +# Abstract: +# +# Component description file for TCG2 Protocol Black-Box Test. +# +#--*/ + +[defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D TCG2ProtocolBBTest + FILE_GUID =3D BD8CB762-3935-434C-AC3F-462244910A2D + MODULE_TYPE =3D UEFI_DRIVER + VERSION_STRING =3D 1.0 + ENTRY_POINT =3D InitializeBBTestTCG2Protocol + +[sources.common] + Guid.c + TCG2ProtocolBBTestMain.c + TCG2ProtocolBBTestConformance.c + +[Packages] + MdePkg/MdePkg.dec + SctPkg/SctPkg.dec + SctPkg/UEFI/UEFI.dec + +[LibraryClasses] + UefiDriverEntryPoint + SctLib + EfiTestLib + +[Protocols] diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTestConformance.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol= /TCG2/BlackBoxTest/TCG2ProtocolBBTestConformance.c new file mode 100644 index 000000000000..fec542167171 --- /dev/null +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestConformance.c @@ -0,0 +1,221 @@ +/** @file + + Copyright 2006 - 2016 Unified EFI, Inc.
+ Copyright (c) 2021, Arm Inc. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ +/*++ + +Module Name: + + TCG2BBTestConformance.c + +Abstract: + + for EFI Driver TCG2 Protocol's Basic Test + +--*/ + +#include "TCG2ProtocolBBTest.h" + +/** + * @brief Entrypoint for GetCapability() Function Test. + * 2 checkpoints will be tested. + * @param This a pointer of EFI_BB_TEST_PROTOCOL + * @param ClientInterface A pointer to the interface array under test + * @param TestLevel Test "thoroughness" control + * @param SupportHandle A handle containing protocols required + * @return EFI_SUCCESS + * @return EFI_NOT_FOUND + */ + +EFI_STATUS +BBTestGetCapabilityConformanceTest ( + IN EFI_BB_TEST_PROTOCOL *This, + IN VOID *ClientInterface, + IN EFI_TEST_LEVEL TestLevel, + IN EFI_HANDLE SupportHandle + ) +{ + EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib; + EFI_STATUS Status; + EFI_TCG2_PROTOCOL *TCG2; +=20 + // + // init + // + TCG2 =3D (EFI_TCG2_PROTOCOL*)ClientInterface; + + // + // Get the Standard Library Interface + // + Status =3D gtBS->HandleProtocol ( + SupportHandle, + &gEfiStandardTestLibraryGuid, + (VOID **) &StandardLib + ); + if (EFI_ERROR(Status)) { + return Status; + } + + // Test Using NULL BootCapablity Pointer + BBTestGetCapabilityConformanceTestCheckpoint1 (StandardLib, TCG2); + + // Test for validating fields of struct returned by GetCapability() + BBTestGetCapabilityConformanceTestCheckpoint2 (StandardLib, TCG2); + + return EFI_SUCCESS; +} + + +EFI_STATUS +BBTestGetCapabilityConformanceTestCheckpoint1 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ) +{ + EFI_TEST_ASSERTION AssertionType; + EFI_STATUS Status; + EFI_TCG2_BOOT_SERVICE_CAPABILITY *BootServiceCapPtr =3D NULL; + + Status =3D TCG2->GetCapability ( + TCG2, + BootServiceCapPtr); + + // Ensure GetCapablity returns Invalid Parameter when passing in NULL po= inter + if (EFI_INVALID_PARAMETER =3D=3D Status) { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid001, + L"TCG2_PROTOCOL.GetCapability - GetCapability() returns E= FI_INVALID_PARAMETER with NULL pointer Capability Struct Passed in", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + return EFI_SUCCESS; +} + +EFI_STATUS +BBTestGetCapabilityConformanceTestCheckpoint2 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ) +{ + EFI_TEST_ASSERTION AssertionType; + EFI_STATUS Status; + char StructureVersionMajor; + char StructureVersionMinor; + char ProtocolVersionMajor; + char ProtocolVersionMinor; + EFI_TCG2_BOOT_SERVICE_CAPABILITY BootServiceCap; + + BootServiceCap.Size =3D sizeof(EFI_TCG2_BOOT_SERVICE_CAPABILITY); + + Status =3D TCG2->GetCapability ( + TCG2, + &BootServiceCap); + + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + + StructureVersionMajor =3D BootServiceCap.StructureVersion.Major; + StructureVersionMinor =3D BootServiceCap.StructureVersion.Minor; + + // TCG EFI Protocol spec 6.4.4 #4 + if ((StructureVersionMajor !=3D 1) | (StructureVersionMinor !=3D 1)) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetCapablity Test: GetCapabilty s= hould have StructureVersion 1.1" + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + ProtocolVersionMajor =3D BootServiceCap.ProtocolVersion.Major; + ProtocolVersionMinor =3D BootServiceCap.ProtocolVersion.Minor; + + // TCG EFI Protocol spec 6.4.4 #4 + if ((ProtocolVersionMajor !=3D 1) | (ProtocolVersionMinor !=3D 1)) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetCapablity Test: protocol versi= on must be 1.1" + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + if (!(BootServiceCap.SupportedEventLogs & EFI_TCG2_EVENT_LOG_FORMAT_TCG= _2)) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetCapablity Test: GetCapabilty m= ust support TCG2 event log format" + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + if (BootServiceCap.NumberOfPcrBanks < 1 ) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetCapablity Test: expect at leas= t 1 PCR bank" + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + EFI_TCG2_EVENT_ALGORITHM_BITMAP HashBitMapAlgos =3D EFI_TCG2_BOOT_HASH_= ALG_SHA256 | EFI_TCG2_BOOT_HASH_ALG_SHA384 | EFI_TCG2_BOOT_HASH_ALG_SHA512; + + if (!(BootServiceCap.HashAlgorithmBitmap & HashBitMapAlgos)) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetCapablity Test: unexpected has= h algorithms reported =3D %x", + BootServiceCap.HashAlgorithmBitmap + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + if (!(BootServiceCap.ActivePcrBanks & HashBitMapAlgos)) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetCapablity Test: unexpected act= ive PCR banks reported =3D %x", + BootServiceCap.ActivePcrBanks + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid003, + L"TCG2_PROTOCOL.GetCapability - GetCapability checks fail= ed", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + return EFI_SUCCESS; +} + diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTestMain.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/B= lackBoxTest/TCG2ProtocolBBTestMain.c new file mode 100644 index 000000000000..97da8f58e35f --- /dev/null +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestMain.c @@ -0,0 +1,102 @@ +/** @file + + Copyright 2006 - 2017 Unified EFI, Inc.
+ Copyright (c) 2013, Intel Corporation. All rights reserved.
+ Copyright (c) 2021, Arm Inc. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ +/*++ + +Module Name: + TCG2ProtocolBBTestMain.c + +Abstract: + for EFI TCG2 Protocol Test + +--*/ + +#include "TCG2ProtocolBBTest.h" + +EFI_BB_TEST_PROTOCOL_FIELD gBBTestProtocolField =3D { + EFI_TCG2_TEST_REVISION, + EFI_TCG2_PROTOCOL_GUID, + L"Testing For EFI TCG2 Protocol", + L"Total # test cases for the EFI TCG2 Protocol" +}; + +EFI_GUID gSupportProtocolGuid1[2] =3D { + EFI_STANDARD_TEST_LIBRARY_GUID, + EFI_NULL_GUID +}; + +EFI_BB_TEST_ENTRY_FIELD gBBTestEntryField[] =3D { + { + EFI_TCG2_PROTOCOL_TEST_ENTRY_GUID0101, + L"GetCapability_Conf", + L"Test the GetCapablity API", + EFI_TEST_LEVEL_DEFAULT, + gSupportProtocolGuid1, + EFI_TEST_CASE_AUTO, + BBTestGetCapabilityConformanceTest + }, + 0 +}; + +EFI_BB_TEST_PROTOCOL *gBBTestProtocolInterface; + +/** + * Creates/installs the BlackBox Interface and eminating Entry Point + * node list. + * @param ImageHandle The test driver image handle + * @param SystemTable Pointer to System Table + * @return EFI_SUCCESS Indicates the interface was installed + * @return EFI_OUT_OF_RESOURCES Indicates space for the new handle could = not be allocated + * @return EFI_INVALID_PARAMETER: One of the parameters has an invalid va= lue. + */ +EFI_STATUS +EFIAPI +InitializeBBTestTCG2Protocol ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EfiInitializeTestLib (ImageHandle, SystemTable); + + // + // initialize test utility lib + // + SctInitializeLib (ImageHandle, SystemTable); + + return EfiInitAndInstallBBTestInterface ( + &ImageHandle, + &gBBTestProtocolField, + gBBTestEntryField, + BBTestTCG2ProtocolUnload, + &gBBTestProtocolInterface + ); +} + +/** + * The driver's Unload function + * @param ImageHandle The test driver image handle + * @return EFI_SUCCESS Indicates the interface was Uninstalled +*/ +EFI_STATUS +EFIAPI +BBTestTCG2ProtocolUnload ( + IN EFI_HANDLE ImageHandle + ) +{ + return EfiUninstallAndFreeBBTestInterface ( + ImageHandle, + gBBTestProtocolInterface + ); +} diff --git a/uefi-sct/SctPkg/UEFI/UEFI_SCT.dsc b/uefi-sct/SctPkg/UEFI/UEFI_= SCT.dsc index 5b3e5307e8f1..3d3e9704e8db 100644 --- a/uefi-sct/SctPkg/UEFI/UEFI_SCT.dsc +++ b/uefi-sct/SctPkg/UEFI/UEFI_SCT.dsc @@ -288,6 +288,7 @@ SctPkg/TestCase/UEFI/EFI/Protocol/StorageSecurityComman= d/BlackBoxTest/StorageSec SctPkg/TestCase/UEFI/EFI/Protocol/AdapterInfo/BlackBoxTest/AdapterInfoProt= ocolBBTest.inf SctPkg/TestCase/UEFI/EFI/Protocol/TimeStamp/BlackBoxTest/TimeStampProtocol= BBTest.inf SctPkg/TestCase/UEFI/EFI/Protocol/RandomNumber/BlackBoxTest/RandomNumberBB= Test.inf +SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2ProtocolBBTest.inf =20 SctPkg/TestCase/UEFI/EFI/Protocol/Hash2/BlackBoxTest/Hash2BBTest.inf SctPkg/TestCase/UEFI/EFI/Protocol/PKCS7Verify/BlackBoxTest/Pkcs7BBTest.inf --=20 2.17.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 (#82424): https://edk2.groups.io/g/devel/message/82424 Mute This Topic: https://groups.io/mt/86464908/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- From nobody Sun May 5 16:50:33 2024 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+82425+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+82425+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1634737430; cv=none; d=zohomail.com; s=zohoarc; b=kZkBddShgpUmuH4EGGjF90LUQtxhC6Wr/SurXBdGD6YYhc5QFn6kmMtzbd/YLLHeAZoatkkwkTDKP1rWs/xKRqIbwWKCKcneW29t2CUhIuAA+Swa4pwNBY0358mgXUWr6q3YB/OR26nImLHIav819XXABbPqXkCW4jpWsuLvg08= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1634737430; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=8rC3DvD/HZ/i2cZEPU3sqOuXVtP4abDV9k7RbhwsN7o=; b=j9ns78RO0T3ZCX6YSBriW3wRay91d+BUjDsRJZjPDmNSw58FWqz8g1emTFML2iPdY0R6b7yL+d+4RiYIEBrHVZtBLEcIZfV8Xa1kKnHC+nSMWM3q5Vt1ov4L362uVIlTOVLc27eEFNpeFZsDWZyDCklsVU76iUd5hMmStjXVHTA= 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+82425+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1634737430941801.6724818568183; Wed, 20 Oct 2021 06:43:50 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id LrHtYY1788612xrBvEF3XxJF; Wed, 20 Oct 2021 06:43:50 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web09.8093.1634737429739754630 for ; Wed, 20 Oct 2021 06:43:49 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 661F2113E; Wed, 20 Oct 2021 06:43:49 -0700 (PDT) X-Received: from u203013-lin.austin.arm.com (u203013-lin.austin.arm.com [10.118.29.243]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5B2B13F73D; Wed, 20 Oct 2021 06:43:49 -0700 (PDT) From: "Joseph Hemann" To: devel@edk2.groups.io Cc: nd@arm.com, Joseph Hemann , G Edhaya Chandran , Barton Gao , Carolyn Gjertsen , Samer El-Haj-Mahmoud , Eric Jin , Arvin Chen , Supreeth Venkatesh Subject: [edk2-devel] [PATCH 3/6] uefi-sct/SctPkg: TCG2 Protocol: add GetActivePcrBanks test Date: Wed, 20 Oct 2021 08:43:32 -0500 Message-Id: <20211020134335.55257-4-joseph.hemann@arm.com> In-Reply-To: <20211020134335.55257-1-joseph.hemann@arm.com> References: <20211020134335.55257-1-joseph.hemann@arm.com> 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,joseph.hemann@arm.com X-Gm-Message-State: o9h0bl1LvkbdWwO6PD8J44owx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1634737430; bh=O3NPX4oWk1H1DvwW8C5reJNR0WSJVinPd6qdmJQhTJw=; h=Cc:Date:From:Reply-To:Subject:To; b=bNaXbFRrqFOsXsJ0bpo92yeuLGwfCT4Q8WVTglqS4vBlCdTHTa5PEjdhOiDB1tNa3LQ 4RrvhTVY4erFdFkPDvCeyjik4t8DEDokLJyIjJGGm1EhlzQ5eFUzosAin6BrRJYQx/8nW Wb2cpULxu26LAaVQVmZ5d2CLV4frhQ901Qc= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1634737431938100002 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Joseph Hemann -add initial TCG2 protocol test for GetActivePcrBanks() -checkpoint for NULL pointer passed for buffer -checkpoint for test of function with proper input Cc: G Edhaya Chandran Cc: Barton Gao Cc: Carolyn Gjertsen Cc: Samer El-Haj-Mahmoud Cc: Eric Jin Cc: Arvin Chen Cc: Supreeth Venkatesh Signed-off-by: Joseph Hemann --- .../EFI/Protocol/TCG2/BlackBoxTest/Guid.c | 4 + .../EFI/Protocol/TCG2/BlackBoxTest/Guid.h | 10 ++ .../TCG2/BlackBoxTest/TCG2ProtocolBBTest.h | 23 +++ .../TCG2ProtocolBBTestConformance.c | 140 +++++++++++++++++- .../BlackBoxTest/TCG2ProtocolBBTestMain.c | 9 ++ 5 files changed, 185 insertions(+), 1 deletion(-) diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/G= uid.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c index 206662ee7933..0497f08f74f2 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c @@ -33,3 +33,7 @@ EFI_GUID gTcg2ConformanceTestAssertionGuid001 =3D EFI_TES= T_TCG2CONFORMANCE_ASSERTI EFI_GUID gTcg2ConformanceTestAssertionGuid002 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_002_GUID; =20 EFI_GUID gTcg2ConformanceTestAssertionGuid003 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_003_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid004 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_004_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid005 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_005_GUID; diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/G= uid.h b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h index b675756b9fb7..f470255ccdcf 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h @@ -41,3 +41,13 @@ extern EFI_GUID gTcg2ConformanceTestAssertionGuid002; =20 extern EFI_GUID gTcg2ConformanceTestAssertionGuid003; =20 +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_004_GUID \ +{ 0x7a1e79a3, 0x4064, 0x4372, {0xbb, 0x64, 0x55, 0xb8, 0xf2, 0xa5, 0xa3, 0= x26 }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid004; + +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_005_GUID \ +{ 0xb0e717c4, 0xb1e2, 0x49f7, {0xb2, 0xd7, 0x60, 0x58, 0x97, 0x7d, 0x09, 0= x2c }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid005; + diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTest.h b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/Black= BoxTest/TCG2ProtocolBBTest.h index 674540182d2d..a6773010b64f 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTest.h +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTest.h @@ -37,6 +37,9 @@ Abstract: #define EFI_TCG2_PROTOCOL_TEST_ENTRY_GUID0101 \ {0x39ff9c71, 0x4b41, 0x4e5b, {0xae, 0xd7, 0x87, 0xc7, 0x94, 0x18, 0x7d, 0= x67} } =20 +#define EFI_TCG2_PROTOCOL_TEST_ENTRY_GUID0102 \ + {0x847f1ae0, 0xb429, 0x49f1, {0x9e, 0x0c, 0x8f, 0x43, 0xfb, 0x55, 0x34, 0= x54} } + EFI_STATUS EFIAPI BBTestTCG2ProtocolUnload ( @@ -55,6 +58,18 @@ BBTestGetCapabilityConformanceTestCheckpoint2 ( IN EFI_TCG2_PROTOCOL *TCG2 ); =20 +EFI_STATUS +BBTestGetActivePcrBanksConformanceTestCheckpoint1 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ); + +EFI_STATUS +BBTestGetActivePcrBanksConformanceTestCheckpoint2 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ); + EFI_STATUS BBTestGetCapabilityConformanceTest ( IN EFI_BB_TEST_PROTOCOL *This, @@ -63,3 +78,11 @@ BBTestGetCapabilityConformanceTest ( IN EFI_HANDLE SupportHandle ); =20 +EFI_STATUS +BBTestGetActivePcrBanksConformanceTest ( + IN EFI_BB_TEST_PROTOCOL *This, + IN VOID *ClientInterface, + IN EFI_TEST_LEVEL TestLevel, + IN EFI_HANDLE SupportHandle + ); + diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTestConformance.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol= /TCG2/BlackBoxTest/TCG2ProtocolBBTestConformance.c index fec542167171..5277f9433f7e 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestConformance.c +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestConformance.c @@ -75,6 +75,54 @@ BBTestGetCapabilityConformanceTest ( return EFI_SUCCESS; } =20 +/** + * @brief Entrypoint for GetActivePcrBanks() Function Test. + * 2 checkpoints will be tested. + * @param This a pointer of EFI_BB_TEST_PROTOCOL + * @param ClientInterface A pointer to the interface array under test + * @param TestLevel Test "thoroughness" control + * @param SupportHandle A handle containing protocols required + * @return EFI_SUCCESS + * @return EFI_NOT_FOUND + */ + +EFI_STATUS +BBTestGetActivePcrBanksConformanceTest ( + IN EFI_BB_TEST_PROTOCOL *This, + IN VOID *ClientInterface, + IN EFI_TEST_LEVEL TestLevel, + IN EFI_HANDLE SupportHandle + ) +{ + EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib; + EFI_STATUS Status; + EFI_TCG2_PROTOCOL *TCG2; + + // + // init + // + TCG2 =3D (EFI_TCG2_PROTOCOL*)ClientInterface; + + // + // Get the Standard Library Interface + // + Status =3D gtBS->HandleProtocol ( + SupportHandle, + &gEfiStandardTestLibraryGuid, + (VOID **) &StandardLib + ); + if (EFI_ERROR(Status)) { + return Status; + } + + // Test Using NULL Pointer + BBTestGetActivePcrBanksConformanceTestCheckpoint1 (StandardLib, TCG2); + + // Test with correct size field + BBTestGetActivePcrBanksConformanceTestCheckpoint2 (StandardLib, TCG2); + + return EFI_SUCCESS; +} =20 EFI_STATUS BBTestGetCapabilityConformanceTestCheckpoint1 ( @@ -181,7 +229,7 @@ BBTestGetCapabilityConformanceTestCheckpoint2 ( AssertionType =3D EFI_TEST_ASSERTION_FAILED; } =20 - EFI_TCG2_EVENT_ALGORITHM_BITMAP HashBitMapAlgos =3D EFI_TCG2_BOOT_HASH_= ALG_SHA256 | EFI_TCG2_BOOT_HASH_ALG_SHA384 | EFI_TCG2_BOOT_HASH_ALG_SHA512; + EFI_TCG2_EVENT_ALGORITHM_BITMAP HashBitMapAlgos =3D EFI_TCG2_BOOT_HASH_= ALG_SHA1 | EFI_TCG2_BOOT_HASH_ALG_SHA256 | EFI_TCG2_BOOT_HASH_ALG_SHA384 | = EFI_TCG2_BOOT_HASH_ALG_SHA512; =20 if (!(BootServiceCap.HashAlgorithmBitmap & HashBitMapAlgos)) { StandardLib->RecordMessage ( @@ -219,3 +267,93 @@ BBTestGetCapabilityConformanceTestCheckpoint2 ( return EFI_SUCCESS; } =20 +EFI_STATUS +BBTestGetActivePcrBanksConformanceTestCheckpoint1 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ) +{ + EFI_TEST_ASSERTION AssertionType; + EFI_STATUS Status; + + EFI_TCG2_EVENT_ALGORITHM_BITMAP *ActivePcrBanks =3D NULL; + Status =3D TCG2->GetActivePcrBanks ( + TCG2, + ActivePcrBanks); + + // Ensure GetCapablity returns Invalid Parameter when passing in NULL po= inter + if (EFI_INVALID_PARAMETER =3D=3D Status) { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid004, + L"TCG2_PROTOCOL.GetActivePcrBanks - GetActivePcrBanks() r= eturns EFI_INVALID_PARAMETER with NULL pointer Passed in", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + return EFI_SUCCESS; +} + +EFI_STATUS +BBTestGetActivePcrBanksConformanceTestCheckpoint2 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ) +{ + EFI_TEST_ASSERTION AssertionType; + EFI_STATUS Status; + + EFI_TCG2_EVENT_ALGORITHM_BITMAP ActivePcrBanks; + Status =3D TCG2->GetActivePcrBanks ( + TCG2, + &ActivePcrBanks); + + // Ensure GetActivePcrBanks returns EFI_SUCCESS + if (Status =3D=3D EFI_SUCCESS) { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } else { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetActivePcrBanks Test: GetActive= PcrBanks should return EFI_SUCCESS", + ActivePcrBanks + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + EFI_TCG2_EVENT_ALGORITHM_BITMAP BitMapAlgos =3D EFI_TCG2_BOOT_HASH_ALG_= SHA256 | EFI_TCG2_BOOT_HASH_ALG_SHA384 | EFI_TCG2_BOOT_HASH_ALG_SHA512; + + // Ensure ActivePcrBanks has SHA256/384/512 in its Bitmap + if (!(ActivePcrBanks & BitMapAlgos)) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetActivePcrBanks Test: GetActiVe= PcrBanks should have SHA256/384/512 Algorithm in its Bitmap. ActivePcrBanks= =3D %x", + ActivePcrBanks + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid005, + L"TCG2_PROTOCOL.GetActivePcrBanks - GetActivePcrBanks sho= uld return with EFI_SUCCESS and have SHA256/384/512 Algoritms in its Bitmap= ", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + return EFI_SUCCESS; +} diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTestMain.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/B= lackBoxTest/TCG2ProtocolBBTestMain.c index 97da8f58e35f..4e7b15937ebb 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestMain.c +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestMain.c @@ -47,6 +47,15 @@ EFI_BB_TEST_ENTRY_FIELD gBBTestEntryField[] =3D { EFI_TEST_CASE_AUTO, BBTestGetCapabilityConformanceTest }, + { + EFI_TCG2_PROTOCOL_TEST_ENTRY_GUID0102, + L"GetActivePcrBanks_Conf", + L"Test the GetActivePcrBanks API", + EFI_TEST_LEVEL_DEFAULT, + gSupportProtocolGuid1, + EFI_TEST_CASE_AUTO, + BBTestGetActivePcrBanksConformanceTest + }, 0 }; =20 --=20 2.17.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 (#82425): https://edk2.groups.io/g/devel/message/82425 Mute This Topic: https://groups.io/mt/86464910/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- From nobody Sun May 5 16:50:33 2024 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+82426+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+82426+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1634737431; cv=none; d=zohomail.com; s=zohoarc; b=QRsFuCummqAloHxpZ5P4sZT35WUqhoex0uDNZjRWu50L8aNiwQiD81c7oMPG3l7GykLRz4Xvs0YMS5nA0iEPptIAo2nlgOL644GjlLErq2guH02CDjj4ISMvvglCTi7limRKH95bZHjjwpvmuLxBirRoAsrWkqAIGp8GPEAIp6U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1634737431; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=mLLtDmfSMHCb9V56AuIYvS2a9Ol+q9el/xxeZP1Y/Lw=; b=cviu8iXiqav8mejwKtkHWQOf0vT5gGBDZizIzie/LeMYKCFS20KQc6v66rO56cXLVD8bxo5LWsuRLI3VbUB3t9yD21h6oONeIos8I7rKP/+nxzZJjgv82RD6piuUAUGMpvreDTaRa65HYqb5dZlJPNSQYl/u/IhaTYMEC3yO8hk= 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+82426+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 16347374317231009.7879745714575; Wed, 20 Oct 2021 06:43:51 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id x9loYY1788612xKCzWkCpKDW; Wed, 20 Oct 2021 06:43:51 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web12.8192.1634737430532480973 for ; Wed, 20 Oct 2021 06:43:50 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 21BA9D6E; Wed, 20 Oct 2021 06:43:50 -0700 (PDT) X-Received: from u203013-lin.austin.arm.com (u203013-lin.austin.arm.com [10.118.29.243]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 155563F73D; Wed, 20 Oct 2021 06:43:50 -0700 (PDT) From: "Joseph Hemann" To: devel@edk2.groups.io Cc: nd@arm.com, Joseph Hemann , G Edhaya Chandran , Barton Gao , Carolyn Gjertsen , Samer El-Haj-Mahmoud , Eric Jin , Arvin Chen , Supreeth Venkatesh Subject: [edk2-devel] [PATCH 4/6] uefi-sct/SctPkg: TCG2 Protocol: add HashLogExtendEvent test Date: Wed, 20 Oct 2021 08:43:33 -0500 Message-Id: <20211020134335.55257-5-joseph.hemann@arm.com> In-Reply-To: <20211020134335.55257-1-joseph.hemann@arm.com> References: <20211020134335.55257-1-joseph.hemann@arm.com> 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,joseph.hemann@arm.com X-Gm-Message-State: a73zETreMviutCqrY5179tEEx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1634737431; bh=AQoMKDzjChewRhY7urqtk+E6DVxUCAqvSEtI2qX1hgg=; h=Cc:Date:From:Reply-To:Subject:To; b=StcQ5hpmuNTvjjMRaioXOk4gDDyd/MKtbkP0DnfYve3IYzmnDvlO0MDYkL9wWneca7r ggEZGK+qAjeDSM79CXRHtU1Ae2E52/aA7PDkaHN2sF5fmS69MzhcuGQL3DgK44upDcSJZ Lmk3eDZCm9IZ1unWYIvTrLnkXDz7ODST9RU= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1634737432435100006 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Joseph Hemann -add initial TCG2 protocol test for HashLogExtendEvent() -checkpoint for test of function with invalid parameters -checkpoint for test of function with valid parameters Cc: G Edhaya Chandran Cc: Barton Gao Cc: Carolyn Gjertsen Cc: Samer El-Haj-Mahmoud Cc: Eric Jin Cc: Arvin Chen Cc: Supreeth Venkatesh Signed-off-by: Joseph Hemann --- .../EFI/Protocol/TCG2/BlackBoxTest/Guid.c | 8 + .../EFI/Protocol/TCG2/BlackBoxTest/Guid.h | 20 ++ .../TCG2/BlackBoxTest/TCG2ProtocolBBTest.h | 29 ++ .../TCG2ProtocolBBTestConformance.c | 278 ++++++++++++++++++ .../BlackBoxTest/TCG2ProtocolBBTestMain.c | 9 + 5 files changed, 344 insertions(+) diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/G= uid.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c index 0497f08f74f2..32438f967d41 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c @@ -37,3 +37,11 @@ EFI_GUID gTcg2ConformanceTestAssertionGuid003 =3D EFI_TE= ST_TCG2CONFORMANCE_ASSERTI EFI_GUID gTcg2ConformanceTestAssertionGuid004 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_004_GUID; =20 EFI_GUID gTcg2ConformanceTestAssertionGuid005 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_005_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid006 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_006_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid007 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_007_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid008 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_008_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid009 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_009_GUID; diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/G= uid.h b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h index f470255ccdcf..27908816bb81 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h @@ -51,3 +51,23 @@ extern EFI_GUID gTcg2ConformanceTestAssertionGuid004; =20 extern EFI_GUID gTcg2ConformanceTestAssertionGuid005; =20 +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_006_GUID \ +{ 0xa8e1b5e6, 0xfc09, 0x461c, {0xb0, 0xe9, 0x2a, 0x49, 0xcd, 0x25, 0xc1, 0= x24 }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid006; + +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_007_GUID \ +{ 0x26f04a9b, 0x7b7a, 0x4f47, {0xbe, 0xa8, 0xb1, 0xa6, 0x02, 0x65, 0x19, 0= x8a }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid007; + +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_008_GUID \ +{ 0x4d1d9985, 0x91e2, 0x4948, {0x89, 0x16, 0xbb, 0x98, 0x13, 0x62, 0x39, 0= x1d }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid008; + +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_009_GUID \ +{ 0xfb59cab7, 0x4f8c, 0x4ded, {0xa4, 0x1c, 0xc8, 0x41, 0x20, 0x1c, 0x37, 0= x22 }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid009; + diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTest.h b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/Black= BoxTest/TCG2ProtocolBBTest.h index a6773010b64f..f552e833b42b 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTest.h +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTest.h @@ -40,6 +40,15 @@ Abstract: #define EFI_TCG2_PROTOCOL_TEST_ENTRY_GUID0102 \ {0x847f1ae0, 0xb429, 0x49f1, {0x9e, 0x0c, 0x8f, 0x43, 0xfb, 0x55, 0x34, 0= x54} } =20 +#define EFI_TCG2_PROTOCOL_TEST_ENTRY_GUID0103 \ + {0x907a7878, 0xb294, 0xf147, {0xe9, 0x0a, 0x65, 0x43, 0xab, 0x55, 0x76, 0= x46} } + +#define EV_POST_CODE 0x01 + +#define EFI_TCG2_EXTEND_ONLY 0x0000000000000001 + +#define PE_COFF_IMAGE 0x0000000000000010 + EFI_STATUS EFIAPI BBTestTCG2ProtocolUnload ( @@ -70,6 +79,18 @@ BBTestGetActivePcrBanksConformanceTestCheckpoint2 ( IN EFI_TCG2_PROTOCOL *TCG2 ); =20 +EFI_STATUS +BBTestHashLogExtendEventConformanceTestCheckpoint1 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ); + +EFI_STATUS +BBTestHashLogExtendEventConformanceTestCheckpoint2 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ); + EFI_STATUS BBTestGetCapabilityConformanceTest ( IN EFI_BB_TEST_PROTOCOL *This, @@ -86,3 +107,11 @@ BBTestGetActivePcrBanksConformanceTest ( IN EFI_HANDLE SupportHandle ); =20 +EFI_STATUS +BBTestHashLogExtendEventConformanceTest ( + IN EFI_BB_TEST_PROTOCOL *This, + IN VOID *ClientInterface, + IN EFI_TEST_LEVEL TestLevel, + IN EFI_HANDLE SupportHandle + ); + diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTestConformance.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol= /TCG2/BlackBoxTest/TCG2ProtocolBBTestConformance.c index 5277f9433f7e..a3992c4709a6 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestConformance.c +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestConformance.c @@ -124,6 +124,53 @@ BBTestGetActivePcrBanksConformanceTest ( return EFI_SUCCESS; } =20 +/** + * @brief Entrypoint for HashLogExtendEvent() Function Test. + * 2 checkpoints will be tested. + * @param This a pointer of EFI_BB_TEST_PROTOCOL + * @param ClientInterface A pointer to the interface array under test + * @param TestLevel Test "thoroughness" control + * @param SupportHandle A handle containing protocols required + * @return EFI_SUCCESS + * @return EFI_NOT_FOUND + */ + +EFI_STATUS +BBTestHashLogExtendEventConformanceTest ( + IN EFI_BB_TEST_PROTOCOL *This, + IN VOID *ClientInterface, + IN EFI_TEST_LEVEL TestLevel, + IN EFI_HANDLE SupportHandle + ) +{ + EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib; + EFI_STATUS Status; + EFI_TCG2_PROTOCOL *TCG2; + // + // init + // + TCG2 =3D (EFI_TCG2_PROTOCOL*)ClientInterface; + + // Get the Standard Library Interface + // + Status =3D gtBS->HandleProtocol ( + SupportHandle, + &gEfiStandardTestLibraryGuid, + (VOID **) &StandardLib + ); + if (EFI_ERROR(Status)) { + return Status; + } + + //Test Using NULL Pointer + BBTestHashLogExtendEventConformanceTestCheckpoint1 (StandardLib, TCG2); + + //Test with correct size field + BBTestHashLogExtendEventConformanceTestCheckpoint2 (StandardLib, TCG2); + + return EFI_SUCCESS; +} + EFI_STATUS BBTestGetCapabilityConformanceTestCheckpoint1 ( IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, @@ -357,3 +404,234 @@ BBTestGetActivePcrBanksConformanceTestCheckpoint2 ( =20 return EFI_SUCCESS; } + +EFI_STATUS +BBTestHashLogExtendEventConformanceTestCheckpoint1 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ) +{ + EFI_TEST_ASSERTION AssertionType; + EFI_STATUS Status; + UINT64 Flags =3D 0; + EFI_PHYSICAL_ADDRESS DataToHash; + UINT64 DataToHashLen; + EFI_TCG2_EVENT *EfiTcgEvent; + const CHAR16 *EventData =3D L"TCG2 Protocol Tes= t"; + const CHAR16 *Str =3D L"The quick brown fox jum= ps over the lazy dog"; + UINT32 EfiTcgEventSize =3D sizeof(EFI_TCG= 2_EVENT) + SctStrSize(EventData); + =20 + DataToHash =3D Str; + DataToHashLen =3D SctStrLen(Str); + + Status =3D gtBS->AllocatePool ( + EfiBootServicesData, + EfiTcgEventSize, + (VOID **)&EfiTcgEvent + ); + + EfiTcgEvent->Header.HeaderSize =3D sizeof(EFI_TCG2_EVENT_HEADER); + EfiTcgEvent->Header.EventType =3D EV_POST_CODE; + EfiTcgEvent->Header.PCRIndex =3D 16; + EfiTcgEvent->Size =3D EfiTcgEvent->Header.HeaderSize + SctStrSize(EventD= ata); + + // Ensure HashLogExtendEvent returns Invalid Parameter when passing in N= ULL DataToHash pointer + // EFI Protocol Spec Section 6.6.5 #1 + Status =3D TCG2->HashLogExtendEvent ( + TCG2, + Flags, + NULL, + 0, + EfiTcgEvent); + + if (EFI_INVALID_PARAMETER !=3D Status) { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid004, + L"TCG2_PROTOCOL.HashLogExtendEvent - Test with NULL DataT= oHash Pointer should return EFI_INVALID_PARAMETER", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); +=20 + // Ensure HashLogExtendEvent returns Invalid Parameter when passing in N= ULL EfiTcgEvent pointer + // EFI Protocol Spec Section 6.6.5 #1 + Status =3D TCG2->HashLogExtendEvent ( + TCG2, + Flags, + DataToHash, + DataToHashLen, + NULL); + + if (EFI_INVALID_PARAMETER !=3D Status) { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid005, + L"TCG2_PROTOCOL.HashLogExtendEvent - Test with NULL EfiTc= gEvent Pointer should return EFI_INVALID_PARAMETER", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + =20 + // Ensure HashLogExtendEvent returns Invalid Parameter when passed in Ev= entSize < HeaderSize + sizeof(UINT32) + // EFI Protocol Spec Section 6.6.5 #2 + EfiTcgEvent->Size =3D EfiTcgEvent->Header.HeaderSize + sizeof(UINT32) - = 1; + =20 + Status =3D TCG2->HashLogExtendEvent ( + TCG2, + Flags, + DataToHash, + DataToHashLen, + EfiTcgEvent); + + if (EFI_INVALID_PARAMETER !=3D Status) { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid006, + L"TCG2_PROTOCOL.HashLogExtendEvent - Test with Event.Size= < Event.Header.HeaderSize + sizeof(UINT32) should return EFI_INVALID_PARAM= ETER", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); +=20 + // Ensure HashLogExtendEvent returns Invalid Parameter when passing in P= CR Index > 23 + // EFI Protocol Spec Section 6.6.5 #3 + EfiTcgEvent->Header.PCRIndex =3D 24; + EfiTcgEvent->Size =3D EfiTcgEvent->Header.HeaderSize + SctStrSize(EventD= ata); + =20 + Status =3D TCG2->HashLogExtendEvent ( + TCG2, + Flags, + DataToHash, + DataToHashLen, + EfiTcgEvent); + + if (EFI_INVALID_PARAMETER !=3D Status) { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } +=20 + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid007, + L"TCG2_PROTOCOL.HashLogExtendEvent - Test with PCRIndex >= 23 should return EFI_INVALID_PARAMETER", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + return EFI_SUCCESS; +} + +EFI_STATUS +BBTestHashLogExtendEventConformanceTestCheckpoint2 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ) +{ + + EFI_TCG2_EVENT *EfiTcgEvent; + EFI_TEST_ASSERTION AssertionType; + EFI_STATUS Status; + UINT64 Flags =3D 0; + EFI_PHYSICAL_ADDRESS DataToHash; + UINT64 DataToHashLen; + const CHAR16 *Str =3D L"The quick brown fox jumps over the lazy dog"; + const CHAR16 *EventData =3D L"TCG2 Protocol Test"; + UINT32 EfiTcgEventSize =3D sizeof(EFI_TCG2_EVENT) + SctStrSize(EventData= ); + + DataToHash =3D Str; + DataToHashLen =3D SctStrLen(Str); + + Status =3D gtBS->AllocatePool ( + EfiBootServicesData, + EfiTcgEventSize, + (VOID **)&EfiTcgEvent + ); + + EfiTcgEvent->Header.HeaderSize =3D sizeof(EFI_TCG2_EVENT_HEADER); + EfiTcgEvent->Header.EventType =3D EV_POST_CODE; + EfiTcgEvent->Header.PCRIndex =3D 16; + EfiTcgEvent->Size =3D EfiTcgEvent->Header.HeaderSize + SctStrSize(EventD= ata); + + // Perform HashLogExtendEvent over test buffer to PCR 16 + Status =3D TCG2->HashLogExtendEvent ( + TCG2, + Flags, + DataToHash, + DataToHashLen, + EfiTcgEvent); + + if (Status !=3D EFI_SUCCESS) { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid008, + L"TCG2_PROTOCOL.HashLogExtendEvent - HashLogExtendEvent()= Test: HashLogExtendEvent should return EFI_SUCCESS", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + // Test with valid Parameters but with Flags =3D PE_COFF_IMAGE + // EFI Protocol Spec Section 6.6.5 #4 + Flags =3D PE_COFF_IMAGE; + + Status =3D TCG2->HashLogExtendEvent ( + TCG2, + Flags, + DataToHash, + DataToHashLen, + EfiTcgEvent); + + if (Status !=3D EFI_UNSUPPORTED) { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid009, + L"TCG2_PROTOCOL.HashLogExtendEvent - HashLogExtendEvent()= Test Handling of PE_COFF_IMAGE flag", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + gtBS->FreePool (EfiTcgEvent); + =20 + return EFI_SUCCESS; +} diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTestMain.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/B= lackBoxTest/TCG2ProtocolBBTestMain.c index 4e7b15937ebb..892fce2691c1 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestMain.c +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestMain.c @@ -56,6 +56,15 @@ EFI_BB_TEST_ENTRY_FIELD gBBTestEntryField[] =3D { EFI_TEST_CASE_AUTO, BBTestGetActivePcrBanksConformanceTest }, + { + EFI_TCG2_PROTOCOL_TEST_ENTRY_GUID0103, + L"HashLogExtendEvent_Conf", + L"Test the HashLogExtendEvent API", + EFI_TEST_LEVEL_DEFAULT, + gSupportProtocolGuid1, + EFI_TEST_CASE_AUTO, + BBTestHashLogExtendEventConformanceTest + }, 0 }; =20 --=20 2.17.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 (#82426): https://edk2.groups.io/g/devel/message/82426 Mute This Topic: https://groups.io/mt/86464911/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- From nobody Sun May 5 16:50:33 2024 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+82427+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+82427+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1634737432; cv=none; d=zohomail.com; s=zohoarc; b=kL/tcWKWrW81C+Y5I7X2Ec01fLE5W7SBguHdo0ra5t943zEgoP44vZ7hPpISTvIhFzdRlvZjjYe+jDwhFbn4Q4/TKrsxCjly8+uoMdUhiPaWZCmyGuhj2XsXJ9fl7dQFOAfWR1nXsKEYzv6kfI4adE+haNJkHaH35d/Hs+Gh0/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1634737432; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=qOSnkRrK4m4SG1NXKicLGbuOcqFDMqLlb890xSilqjM=; b=YNJ1KOljwsr4TGYmDKR9B4k+tYO8Xhzwl35v7RIq9W4iYPUBlDI4UQL7xhMtwM2OWULzx6pd3+ghlafzeYlP3Q08e1g6q7Xi1kBpwMsD1fOaMx3CX0fTAcPH3mxIp0SouLbH1JaWDyvoW4fw74ibIjeULYQQmJHywJ2Kay5coHQ= 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+82427+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 163473743278545.85583078477907; Wed, 20 Oct 2021 06:43:52 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id oNojYY1788612xmCq1IBYvZM; Wed, 20 Oct 2021 06:43:52 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web09.8094.1634737431272297023 for ; Wed, 20 Oct 2021 06:43:51 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id EDE0711FB; Wed, 20 Oct 2021 06:43:50 -0700 (PDT) X-Received: from u203013-lin.austin.arm.com (u203013-lin.austin.arm.com [10.118.29.243]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E1D203F73D; Wed, 20 Oct 2021 06:43:50 -0700 (PDT) From: "Joseph Hemann" To: devel@edk2.groups.io Cc: nd@arm.com, Joseph Hemann , G Edhaya Chandran , Barton Gao , Carolyn Gjertsen , Samer El-Haj-Mahmoud , Eric Jin , Arvin Chen , Supreeth Venkatesh Subject: [edk2-devel] [PATCH 5/6] uefi-sct/SctPkg: TCG2 Protocol: add GetEventLog test Date: Wed, 20 Oct 2021 08:43:34 -0500 Message-Id: <20211020134335.55257-6-joseph.hemann@arm.com> In-Reply-To: <20211020134335.55257-1-joseph.hemann@arm.com> References: <20211020134335.55257-1-joseph.hemann@arm.com> 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,joseph.hemann@arm.com X-Gm-Message-State: rphl8Gd6flyGyKoC3y3CMrVjx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1634737432; bh=/O/GAhem/114AjvPWXht0awx4YBWN8hbbW7QkrxZ9+g=; h=Cc:Date:From:Reply-To:Subject:To; b=oq1eo478m/ERunLuMeA8+DY2ToK+mDPwDqUF173kx/BshJ4RWqV7XvRPBlOeISKP3Pf Y4A3rLVMK6b3BdvX0Z0n3ATmKjRNSYazSjWY0gLWYooC9dTkqlOo26l1/UUlnk6Gtfzfx IZZ+s8oU0erIiQLZljrT+/DuPEtM00F5HNk= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1634737434644100004 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Joseph Hemann -add initial TCG2 protocol test for GetEventLog() -checkpoint for test function with invalid eventlog format -checkpoint for test function with valid eventlog format Cc: G Edhaya Chandran Cc: Barton Gao Cc: Carolyn Gjertsen Cc: Samer El-Haj-Mahmoud Cc: Eric Jin Cc: Arvin Chen Cc: Supreeth Venkatesh Signed-off-by: Joseph Hemann --- .../EFI/Protocol/TCG2/BlackBoxTest/Guid.c | 8 + .../EFI/Protocol/TCG2/BlackBoxTest/Guid.h | 19 ++ .../TCG2/BlackBoxTest/TCG2ProtocolBBTest.h | 14 ++ .../TCG2ProtocolBBTestConformance.c | 204 +++++++++++++++++- uefi-sct/SctPkg/UEFI/Protocol/TCG2.h | 45 ++++ 5 files changed, 289 insertions(+), 1 deletion(-) diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/G= uid.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c index 32438f967d41..89c4151752cd 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c @@ -45,3 +45,11 @@ EFI_GUID gTcg2ConformanceTestAssertionGuid007 =3D EFI_TE= ST_TCG2CONFORMANCE_ASSERTI EFI_GUID gTcg2ConformanceTestAssertionGuid008 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_008_GUID; =20 EFI_GUID gTcg2ConformanceTestAssertionGuid009 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_009_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid010 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_010_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid011 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_011_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid012 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_012_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid013 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_013_GUID; diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/G= uid.h b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h index 27908816bb81..2cb715105529 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h @@ -71,3 +71,22 @@ extern EFI_GUID gTcg2ConformanceTestAssertionGuid008; =20 extern EFI_GUID gTcg2ConformanceTestAssertionGuid009; =20 +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_010_GUID \ +{ 0x0363d22f, 0xc66a, 0x4872, {0xa5, 0x46, 0x06, 0x7f, 0x6a, 0x0d, 0xdb, 0= xcd }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid010; + +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_011_GUID \ +{ 0x9cd6d636, 0x603a, 0x4b78, {0x80, 0xa3, 0xa3, 0xb9, 0xcc, 0x6a, 0x0b, 0= x08 }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid011; + +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_012_GUID \ +{ 0xfc80408e, 0x9a3c, 0x4054, {0x96, 0xf9, 0x31, 0x23, 0x35, 0xc2, 0x31, 0= x35 }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid012; + +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_013_GUID \ +{ 0x45fa1a42, 0x912a, 0x5124, {0x84, 0xf4, 0x41, 0x67, 0xab, 0xb5, 0x89, 0= x90 }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid013; diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTest.h b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/Black= BoxTest/TCG2ProtocolBBTest.h index f552e833b42b..69fb358922df 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTest.h +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTest.h @@ -45,6 +45,8 @@ Abstract: =20 #define EV_POST_CODE 0x01 =20 +#define EV_NO_ACTION 0x03 + #define EFI_TCG2_EXTEND_ONLY 0x0000000000000001 =20 #define PE_COFF_IMAGE 0x0000000000000010 @@ -91,6 +93,18 @@ BBTestHashLogExtendEventConformanceTestCheckpoint2 ( IN EFI_TCG2_PROTOCOL *TCG2 ); =20 +EFI_STATUS +BBTestHashLogExtendEventConformanceTestCheckpoint3 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ); + +EFI_STATUS +BBTestHashLogExtendEventConformanceTestCheckpoint4 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ); + EFI_STATUS BBTestGetCapabilityConformanceTest ( IN EFI_BB_TEST_PROTOCOL *This, diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTestConformance.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol= /TCG2/BlackBoxTest/TCG2ProtocolBBTestConformance.c index a3992c4709a6..d3aaf979c087 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestConformance.c +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestConformance.c @@ -126,7 +126,7 @@ BBTestGetActivePcrBanksConformanceTest ( =20 /** * @brief Entrypoint for HashLogExtendEvent() Function Test. - * 2 checkpoints will be tested. + * 4 checkpoints will be tested. * @param This a pointer of EFI_BB_TEST_PROTOCOL * @param ClientInterface A pointer to the interface array under test * @param TestLevel Test "thoroughness" control @@ -168,6 +168,12 @@ BBTestHashLogExtendEventConformanceTest ( //Test with correct size field BBTestHashLogExtendEventConformanceTestCheckpoint2 (StandardLib, TCG2); =20 + // Test GetEventLog using invalid EventLog Format + BBTestHashLogExtendEventConformanceTestCheckpoint3 (StandardLib, TCG2); + + // Test GetEventLog using valid EventLog Format + BBTestHashLogExtendEventConformanceTestCheckpoint4 (StandardLib, TCG2); + return EFI_SUCCESS; } =20 @@ -635,3 +641,199 @@ BBTestHashLogExtendEventConformanceTestCheckpoint2 ( =20 return EFI_SUCCESS; } + +#define EFI_TCG2_INVALID_EVENT_LOG_FORMAT 0x20 + +EFI_STATUS +BBTestHashLogExtendEventConformanceTestCheckpoint3 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ) +{ + EFI_TEST_ASSERTION AssertionType; + EFI_STATUS Status; + EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat; + EFI_PHYSICAL_ADDRESS *EventLogLocation; + EFI_PHYSICAL_ADDRESS *EventLogLastEntry; + BOOLEAN *EventLogTruncated; + + // Ensure Get EventLog returns Invalid Parameter when passed invalid for= mat + EventLogFormat =3D EFI_TCG2_INVALID_EVENT_LOG_FORMAT; + + Status =3D TCG2->GetEventLog ( + TCG2, + EventLogFormat, + EventLogLocation, + EventLogLastEntry, + EventLogTruncated); + + if (EFI_INVALID_PARAMETER !=3D Status) { + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } else { + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid010, + L"TCG2_PROTOCOL.GetEventLog - GetEventLog() should return= EFI_INVALID_PARAMETER when passed in invalid EventLog Format", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + return EFI_SUCCESS; +} + +EFI_STATUS +BBTestHashLogExtendEventConformanceTestCheckpoint4 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ) +{ + EFI_TEST_ASSERTION AssertionType; + EFI_STATUS Status; + EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat; + EFI_PHYSICAL_ADDRESS EventLogLocation; + EFI_PHYSICAL_ADDRESS EventLogLastEntry; + BOOLEAN EventLogTruncated; + TCG_PCR_EVENT *EventLogHeader; + TCG_EfiSpecIDEventStruct *EventLogHeaderSpecEvent; + TCG_PCR_EVENT2 *LastEvent; + UINT8 *data =3D "Spec ID Event03\0\0"; + + EventLogFormat =3D EFI_TCG2_EVENT_LOG_FORMAT_TCG_2; + + // Call GetEventLog with valid EventLogFormat + Status =3D TCG2->GetEventLog ( + TCG2, + EventLogFormat, + &EventLogLocation, + &EventLogLastEntry, + &EventLogTruncated); + + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + + // Verify GetEventLog returns EFI_SUCCESS + if (Status !=3D EFI_SUCCESS) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetEventLog Test: GetEventLog sho= uld return EFI_SUCCESS with valid EventLogFormat, Status =3D %r", + Status + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid011, + L"TCG2_PROTOCOL.GetEventLog - GetEventLog() should return= EFI_SUCCESS", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + // If GetEventLog doesn't return EFI_SUCCESS abort test + if (Status !=3D EFI_SUCCESS) { + return Status; + } + + EventLogHeader =3D (TCG_PCR_EVENT *) EventLogLocation; + EventLogHeaderSpecEvent =3D (TCG_EfiSpecIDEventStruct *) EventLogHeader-= >Event; + + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + + + // Verify valid eventlog header is returned + // Verify EventLogHeader PCR index =3D=3D 0 + if (EventLogHeader->PCRIndex !=3D 0) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetEventLog Test: EventLogHeader = should have PCR index =3D=3D 0" + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + // Verify EventLogHeader event type =3D EV_NO_ACTION + if (EventLogHeader->EventType !=3D EV_NO_ACTION) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetEventLog Test: EventLogHeader = should be EventType =3D=3D EV_NO_ACTION" + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + // Verify EventLog Signature + Status =3D SctStrCmp(EventLogHeaderSpecEvent->signature, data); + =20 + if (Status !=3D EFI_SUCCESS) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetEventLog Test: EventLogHeader = Signature did not match \'Spec ID Event03\'" + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid012, + L"TCG2_PROTOCOL.GetEventLog - GetEventLog() should return= correct EventLogHeader", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + + // Verify Event recorded in checkpoint2 was recorded in Eventlog + LastEvent =3D (TCG_PCR_EVENT2 *) EventLogLastEntry; + + // Verify Last Event PCR =3D 16 + if (LastEvent->PCRIndex !=3D 16) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetEventLog Test: PCR Index of La= st event should be 16" + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + // Verify last event type =3D EV_POST_CODE + if (LastEvent->EventType !=3D EV_POST_CODE) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol GetEventLog Test: PCR Index of la= st event should be type EV_POST_CODE" + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid013, + L"TCG2_PROTOCOL.GetEventLog - GetEventLog() should record= Event from Checkpoint2 as last EventLogEntry", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + return EFI_SUCCESS; +} diff --git a/uefi-sct/SctPkg/UEFI/Protocol/TCG2.h b/uefi-sct/SctPkg/UEFI/Pr= otocol/TCG2.h index 9ece78e0deaf..5f095dffa7eb 100644 --- a/uefi-sct/SctPkg/UEFI/Protocol/TCG2.h +++ b/uefi-sct/SctPkg/UEFI/Protocol/TCG2.h @@ -49,6 +49,7 @@ Abstract: #define EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 0x00000001 =20 #define EFI_TCG2_EVENT_LOG_FORMAT_TCG_2 0x00000002 +#define HASH_NUMBER 0x04 =20 typedef struct _EFI_TCG2_PROTOCOL EFI_TCG2_PROTOCOL; =20 @@ -114,6 +115,50 @@ typedef struct tdEFI_TCG2_EVENT { UINT8 Event[]; } EFI_TCG2_EVENT; =20 +typedef struct { + UINT16 hashAlg; + UINT8 digest[]; +} TPMT_HA; + +typedef struct tdTPML_DIGEST_VALUES { + UINT32 Count; // number of digests + TPMT_HA Digests[HASH_NUMBER]; // Count digests +} TPML_DIGEST_VALUES; + +// This Declaration is for parsing the eventlog header which is defined to= be 20 bytes in TCG EFI Protocol Spec +typedef UINT8 TCG_DIGEST[20]; + +typedef struct tdTCG_PCR_EVENT2 { + TCG_PCRINDEX PCRIndex; // PCRIndex event extended to + TCG_EVENTTYPE EventType; // Type of event (see [2]) + TPML_DIGEST_VALUES Digests; // List of digests extended to //PCRIndex + UINT32 EventSize; // Size of the event data + UINT8 *Event; // The event data +} TCG_PCR_EVENT2; + +typedef struct tdTCG_PCR_EVENT { + UINT32 PCRIndex; // PCRIndex event extended to + UINT32 EventType; // Type of event (see EFI specs) + TCG_DIGEST Digest; // Value extended into PCRIndex + UINT32 EventSize; // Size of the event data + UINT8 Event[0]; // The event data +} TCG_PCR_EVENT; +// Structure to be added to the Event Log + +typedef struct tdTCG_EfiSpecIdEventAlgorithmSize { + UINT16 algorithmId; + UINT16 digestSize; +} TCG_EfiSpecIdEventAlgorithmSize; + +typedef struct tdTCG_EfiSpecIdEventStruct { + UINT8 signature[16]; + UINT32 platformClass; + UINT8 specVersionMinor; + UINT8 specVersionMajor; + UINT8 specErrata; + UINT8 uintnSize; +} TCG_EfiSpecIDEventStruct; + typedef EFI_STATUS (EFIAPI * EFI_TCG2_HASH_LOG_EXTEND_EVENT) ( --=20 2.17.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 (#82427): https://edk2.groups.io/g/devel/message/82427 Mute This Topic: https://groups.io/mt/86464912/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- From nobody Sun May 5 16:50:33 2024 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+82428+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+82428+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1634737433; cv=none; d=zohomail.com; s=zohoarc; b=PeLZ4vcJCZ1z7kR3QNHZn2vJMgTQWhvY55K9+x8VoYZ2jMG1+8jrbMmoVOD8BotlOHo7Q4whqShMcG8SIif7GnjK3noUb9Z5lQTmkPuQk7LAFk/TxHa2f7S14lobDgeeXb/hUWXLf9/HzkCg3GZqeHKkaAaG/XI7sVI5P0J2Dac= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1634737433; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=DbaQdx31qN+1wK1KbhXcUIYloUOcA9BG9ykmQEL3USE=; b=LkYGTcjnT6GSKMiC7f0PbjwiLjQ6dL8ADq/Q96LmC1J4ZT7meek38fv7gff4OpafLIQ5Pp5rAG6omcN1Ry3D6S0U/sSuwymg6b5BikI/2vVQo2yBRmSgnHDL2S2LLfbWLA8W18Z7U3fFUlfd6qumxjUqkWX1ndd049oSQeJNcnA= 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+82428+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1634737433042727.7209497839735; Wed, 20 Oct 2021 06:43:53 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id Vt59YY1788612xgih2I6ynsl; Wed, 20 Oct 2021 06:43:52 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.8168.1634737432070334329 for ; Wed, 20 Oct 2021 06:43:52 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C2D971063; Wed, 20 Oct 2021 06:43:51 -0700 (PDT) X-Received: from u203013-lin.austin.arm.com (u203013-lin.austin.arm.com [10.118.29.243]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B720F3F73D; Wed, 20 Oct 2021 06:43:51 -0700 (PDT) From: "Joseph Hemann" To: devel@edk2.groups.io Cc: nd@arm.com, Joseph Hemann , G Edhaya Chandran , Barton Gao , Carolyn Gjertsen , Samer El-Haj-Mahmoud , Eric Jin , Arvin Chen , Supreeth Venkatesh Subject: [edk2-devel] [PATCH 6/6] uefi-sct/SctPkg: TCG2 Protocol: add SubmitCommand test Date: Wed, 20 Oct 2021 08:43:35 -0500 Message-Id: <20211020134335.55257-7-joseph.hemann@arm.com> In-Reply-To: <20211020134335.55257-1-joseph.hemann@arm.com> References: <20211020134335.55257-1-joseph.hemann@arm.com> 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,joseph.hemann@arm.com X-Gm-Message-State: 55KwruygFSqToqUnPezn89wXx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1634737432; bh=plNl9GMMRL+x3h0E0u+vqCsVFV+YeMJVIfPBWkPcSj4=; h=Cc:Date:From:Reply-To:Subject:To; b=TGAGgNxd1Cp0XBo15NYTAmLCsMyQv3A+ddGckKD9SrOwgbxUMpnTKhkcsFhg607XGnJ kKLbifPsW/y7Fku/qkxuvykuptUNBglrBaqH/aR+THN0jUh6VPIDOl0XW5+VR4cTKeRc/ 5XPsqkMYoZEUz8unJ6bQj8to5vBNZC/mDRA= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1634737434597100002 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Joseph Hemann -add initial TCG2 protocol test for SubmitCommand() -checkpoint for test function with GET_RANDOM Command Cc: G Edhaya Chandran Cc: Barton Gao Cc: Carolyn Gjertsen Cc: Samer El-Haj-Mahmoud Cc: Eric Jin Cc: Arvin Chen Cc: Supreeth Venkatesh Signed-off-by: Joseph Hemann --- .../EFI/Protocol/TCG2/BlackBoxTest/Guid.c | 4 + .../EFI/Protocol/TCG2/BlackBoxTest/Guid.h | 10 + .../TCG2/BlackBoxTest/TCG2ProtocolBBTest.h | 49 +++++ .../TCG2ProtocolBBTestConformance.c | 178 ++++++++++++++++++ .../BlackBoxTest/TCG2ProtocolBBTestMain.c | 10 + 5 files changed, 251 insertions(+) diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/G= uid.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c index 89c4151752cd..b5a4e5c7218e 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.c @@ -53,3 +53,7 @@ EFI_GUID gTcg2ConformanceTestAssertionGuid011 =3D EFI_TES= T_TCG2CONFORMANCE_ASSERTI EFI_GUID gTcg2ConformanceTestAssertionGuid012 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_012_GUID; =20 EFI_GUID gTcg2ConformanceTestAssertionGuid013 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_013_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid014 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_014_GUID; + +EFI_GUID gTcg2ConformanceTestAssertionGuid015 =3D EFI_TEST_TCG2CONFORMANCE= _ASSERTION_015_GUID; diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/G= uid.h b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h index 2cb715105529..ccc5a4bef957 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/Guid.h @@ -90,3 +90,13 @@ extern EFI_GUID gTcg2ConformanceTestAssertionGuid012; { 0x45fa1a42, 0x912a, 0x5124, {0x84, 0xf4, 0x41, 0x67, 0xab, 0xb5, 0x89, 0= x90 }} =20 extern EFI_GUID gTcg2ConformanceTestAssertionGuid013; + +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_014_GUID \ +{ 0x1689bc3a, 0x2298, 0xa116, {0x28, 0x4c, 0xc1, 0xdd, 0xaa, 0xd8, 0xef, 0= x51 }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid014; + +#define EFI_TEST_TCG2CONFORMANCE_ASSERTION_015_GUID \ +{ 0x126a789a, 0x1932, 0x3234, {0x21, 0xab, 0x42, 0x64, 0x8a, 0x7b, 0x63, 0= x76 }} + +extern EFI_GUID gTcg2ConformanceTestAssertionGuid015; diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTest.h b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/Black= BoxTest/TCG2ProtocolBBTest.h index 69fb358922df..0fdf753f95fa 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTest.h +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTest.h @@ -43,6 +43,9 @@ Abstract: #define EFI_TCG2_PROTOCOL_TEST_ENTRY_GUID0103 \ {0x907a7878, 0xb294, 0xf147, {0xe9, 0x0a, 0x65, 0x43, 0xab, 0x55, 0x76, 0= x46} } =20 +#define EFI_TCG2_PROTOCOL_TEST_ENTRY_GUID0104 \ + {0x9087ad78, 0x9ad2, 0x4172, {0x9a, 0xbc, 0x98, 0x23, 0x08, 0xf5, 0x6d, 0= x26} } + #define EV_POST_CODE 0x01 =20 #define EV_NO_ACTION 0x03 @@ -51,6 +54,39 @@ Abstract: =20 #define PE_COFF_IMAGE 0x0000000000000010 =20 +// ST_NO_SESSION as definied in Table 19 of TPM Library Part 2: Structures +#define ST_NO_SESSIONS (UINT16) 0x8001 + +// TPM_RC_SUCCESS as definied in Table 16 of TPM Library Spec Part 2: Stru= ctures +#define TPM_RC_SUCCESS (UINT32) 0x0000000 + +// TPM_CC_GetRandom as definied in Table 12 of TPM Library Spec Part 2: St= ructures +#define TPM_CC_GetRandom (UINT32) 0x0000017B + +#pragma pack(1) +// TPM2B_DIGEST as definied in Table 73 of TPM Library Spec Part 2: Struct= ures +typedef struct { + UINT16 size; + UINT8 digest[8]; // Size of buffer in spec is defined to be variable l= ength but for this test will always be 8 +} TPM2B_DIGEST; + +// GetRandomCommand Structure as defined in Sectin 16.1 of TPM Spec Part 3= : Commands +typedef struct { + UINT16 Tag; + UINT32 CommandSize; + UINT32 CommandCode; + UINT16 BytesRequested; +} GET_RANDOM_COMMAND; + +// GetRandomResponse Structure as defined in Sectin 16.1 of TPM Spec Part = 3: Commands +typedef struct { + UINT16 Tag; + UINT32 ResponseSize; + UINT32 ResponseCode; + TPM2B_DIGEST randomBytes; +} GET_RANDOM_RESPONSE; +#pragma + EFI_STATUS EFIAPI BBTestTCG2ProtocolUnload ( @@ -105,6 +141,12 @@ BBTestHashLogExtendEventConformanceTestCheckpoint4 ( IN EFI_TCG2_PROTOCOL *TCG2 ); =20 +EFI_STATUS +BBTestSubmitCommandConformanceTestCheckpoint1 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ); + EFI_STATUS BBTestGetCapabilityConformanceTest ( IN EFI_BB_TEST_PROTOCOL *This, @@ -129,3 +171,10 @@ BBTestHashLogExtendEventConformanceTest ( IN EFI_HANDLE SupportHandle ); =20 +EFI_STATUS +BBTestSubmitCommandConformanceTest ( + IN EFI_BB_TEST_PROTOCOL *This, + IN VOID *ClientInterface, + IN EFI_TEST_LEVEL TestLevel, + IN EFI_HANDLE SupportHandle + ); diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTestConformance.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol= /TCG2/BlackBoxTest/TCG2ProtocolBBTestConformance.c index d3aaf979c087..b764e22116d0 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestConformance.c +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestConformance.c @@ -177,6 +177,52 @@ BBTestHashLogExtendEventConformanceTest ( return EFI_SUCCESS; } =20 +/** + * @brief Entrypoint for SubmitCommand() Function Test. + * 1 checkpoint will be tested. + * @param This a pointer of EFI_BB_TEST_PROTOCOL + * @param ClientInterface A pointer to the interface array under test + * @param TestLevel Test "thoroughness" control + * @param SupportHandle A handle containing protocols required + * @return EFI_SUCCESS + * @return EFI_NOT_FOUND + */ + +EFI_STATUS +BBTestSubmitCommandConformanceTest ( + IN EFI_BB_TEST_PROTOCOL *This, + IN VOID *ClientInterface, + IN EFI_TEST_LEVEL TestLevel, + IN EFI_HANDLE SupportHandle + ) +{ + EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib; + EFI_STATUS Status; + EFI_TCG2_PROTOCOL *TCG2; + + // + // init + // + TCG2 =3D (EFI_TCG2_PROTOCOL*)ClientInterface; + + // + // Get the Standard Library Interface + // + Status =3D gtBS->HandleProtocol ( + SupportHandle, + &gEfiStandardTestLibraryGuid, + (VOID **) &StandardLib + ); + if (EFI_ERROR(Status)) { + return Status; + } + + // Test GetRandom TPM Command + BBTestSubmitCommandConformanceTestCheckpoint1 (StandardLib, TCG2); + + return EFI_SUCCESS; +} + EFI_STATUS BBTestGetCapabilityConformanceTestCheckpoint1 ( IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, @@ -837,3 +883,135 @@ BBTestHashLogExtendEventConformanceTestCheckpoint4 ( =20 return EFI_SUCCESS; } + +EFI_STATUS +BBTestSubmitCommandConformanceTestCheckpoint1 ( + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, + IN EFI_TCG2_PROTOCOL *TCG2 + ) +{ + EFI_TEST_ASSERTION AssertionType; + EFI_STATUS Status; + GET_RANDOM_RESPONSE CommandResponse; + GET_RANDOM_COMMAND CommandInput; + int IsNonZero =3D 0; + + // Build TPM2 GetRandom command for 8 random bytes + CommandInput.Tag =3D SctSwapBytes16(ST_NO_SESSIONS); + CommandInput.CommandSize =3D SctSwapBytes32(sizeof(GET_RANDOM_COMMAND)); + CommandInput.CommandCode =3D SctSwapBytes32(TPM_CC_GetRandom); + CommandInput.BytesRequested =3D SctSwapBytes16(8); + + // zero out randomBytes to ensure SubmitCommand returns random bytes + SctZeroMem(&CommandResponse, sizeof(GET_RANDOM_RESPONSE)); + + Status =3D TCG2->SubmitCommand ( + TCG2, + sizeof(GET_RANDOM_COMMAND), + &CommandInput, + sizeof(GET_RANDOM_RESPONSE), + &CommandResponse); + + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + + // Verify SubmitCommand returns EFI_SUCCESS + if (Status !=3D EFI_SUCCESS) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol SubmitCommand Test: SubmitCommand= should return EFI_SUCCESS, Status =3D %r", + Status + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid014, + L"TCG2_PROTOCOL.SubmitCommand - SubmitCommand() should re= turn EFI_SUCCESS", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + AssertionType =3D EFI_TEST_ASSERTION_PASSED; + + // Verify SubmitCommand returns correct Response Tag + if (SctSwapBytes16(CommandResponse.Tag) !=3D ST_NO_SESSIONS) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol SubmitCommand Test: SubmitCommand= should return ST_NO_SESSIONS response Tag" + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + if (SctSwapBytes32(CommandResponse.ResponseCode) !=3D TPM_RC_SUCCESS) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol SubmitCommand Test: SubmitCommand= should return Correct ResponseCode, ResponseCode =3D %x", + SctSwapBytes32(CommandResponse.ResponseCode) + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + if (SctSwapBytes32(CommandResponse.ResponseSize) !=3D sizeof(GET_RANDOM_= RESPONSE)) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol SubmitCommand Test: SubmitCommand= should return Correct ResponseSize, Size =3D %x", + SctSwapBytes32(CommandResponse.ResponseSize) + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + // Check that number of random bytes returned equals amount requested + if (SctSwapBytes16(CommandResponse.randomBytes.size) !=3D 8) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol SubmitCommand Test: SubmitCommand= should return correct amount of random bytes, Size =3D %x", + SctSwapBytes16(CommandResponse.randomBytes.size) + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + // If random bytes are returned at least one should be non-zero + for (int i =3D 0; i < 8; i++) { + if (CommandResponse.randomBytes.digest[i] !=3D 0) { + IsNonZero =3D 1; + } + } + + if (!IsNonZero) { + StandardLib->RecordMessage ( + StandardLib, + EFI_VERBOSE_LEVEL_DEFAULT, + L"\r\nTCG2 Protocol SubmitCommand Test: SubmitCommand= should return RandomBytes", + Status + ); + + AssertionType =3D EFI_TEST_ASSERTION_FAILED; + } + + StandardLib->RecordAssertion ( + StandardLib, + AssertionType, + gTcg2ConformanceTestAssertionGuid015, + L"TCG2_PROTOCOL.SubmitCommand - SubmitCommand() should re= turn EFI_SUCCESS", + L"%a:%d: Status - %r", + __FILE__, + (UINTN)__LINE__, + Status + ); + + return EFI_SUCCESS; +} diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/T= CG2ProtocolBBTestMain.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/B= lackBoxTest/TCG2ProtocolBBTestMain.c index 892fce2691c1..419e2a3e5ad2 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestMain.c +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/TCG2/BlackBoxTest/TCG2Prot= ocolBBTestMain.c @@ -65,6 +65,16 @@ EFI_BB_TEST_ENTRY_FIELD gBBTestEntryField[] =3D { EFI_TEST_CASE_AUTO, BBTestHashLogExtendEventConformanceTest }, + { + EFI_TCG2_PROTOCOL_TEST_ENTRY_GUID0104, + L"SubmitCommand_Conf", + L"Test the SubmitCommmand API", + EFI_TEST_LEVEL_DEFAULT, + gSupportProtocolGuid1, + EFI_TEST_CASE_AUTO, + BBTestSubmitCommandConformanceTest + }, + 0 }; =20 --=20 2.17.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 (#82428): https://edk2.groups.io/g/devel/message/82428 Mute This Topic: https://groups.io/mt/86464914/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-