/** @file
Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
VOID *
TestPointGetAcpi (
IN UINT32 Signature
);
EFI_STATUS
EFIAPI
TestPointCheckTcgTrustedBoot (
VOID
)
{
EFI_STATUS Status;
EFI_TCG2_PROTOCOL *Tcg2;
EFI_TCG2_BOOT_SERVICE_CAPABILITY ProtocolCapability;
VOID *Acpi;
DEBUG ((DEBUG_INFO, "==== TestPointCheckTcgTrustedBoot - Enter\n"));
Status = gBS->LocateProtocol (&gEfiTcg2ProtocolGuid, NULL, (VOID **)&Tcg2);
if (EFI_ERROR(Status)) {
DEBUG ((DEBUG_ERROR, "Tcg2 Protocol - %r\n", Status));
goto Done;
}
ZeroMem ((VOID *) &ProtocolCapability, sizeof (ProtocolCapability));
ProtocolCapability.Size = (UINT8) sizeof (ProtocolCapability);
Status = Tcg2->GetCapability (Tcg2, &ProtocolCapability);
if (EFI_ERROR(Status)) {
DEBUG ((DEBUG_ERROR, "Tcg2->GetCapability - %r\n", Status));
goto Done;
}
DEBUG ((DEBUG_INFO, "Capability.Size - 0x%x\n", ProtocolCapability.Size));
DEBUG ((DEBUG_INFO, "StructureVersion - %x.%x\n", ProtocolCapability.StructureVersion.Major, ProtocolCapability.StructureVersion.Minor));
DEBUG ((DEBUG_INFO, "ProtocolVersion - %x.%x\n", ProtocolCapability.ProtocolVersion.Major, ProtocolCapability.ProtocolVersion.Minor));
DEBUG ((DEBUG_INFO, "HashAlgorithmBitmap - 0x%08x\n", ProtocolCapability.HashAlgorithmBitmap));
DEBUG ((DEBUG_INFO, "SupportedEventLogs - 0x%08x\n", ProtocolCapability.SupportedEventLogs));
DEBUG ((DEBUG_INFO, "TPMPresentFlag - %x\n", ProtocolCapability.TPMPresentFlag));
DEBUG ((DEBUG_INFO, "MaxCommandSize - 0x%04x\n", ProtocolCapability.MaxCommandSize));
DEBUG ((DEBUG_INFO, "MaxResponseSize - 0x%04x\n", ProtocolCapability.MaxResponseSize));
DEBUG ((DEBUG_INFO, "ManufacturerID - 0x%08x\n", ProtocolCapability.ManufacturerID));
if ((ProtocolCapability.StructureVersion.Major > 1) ||
(ProtocolCapability.StructureVersion.Minor > 0)) {
DEBUG ((DEBUG_INFO, "NumberOfPCRBanks - 0x%08x\n", ProtocolCapability.NumberOfPCRBanks));
DEBUG ((DEBUG_INFO, "ActivePcrBanks - 0x%08x\n", ProtocolCapability.ActivePcrBanks));
}
if (!ProtocolCapability.TPMPresentFlag) {
DEBUG ((DEBUG_ERROR, "Tcg2 TPMPresentFlag FALSE\n"));
Status = EFI_NOT_FOUND;
}
Acpi = TestPointGetAcpi (EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE);
if (Acpi == NULL) {
DEBUG ((DEBUG_ERROR, "Tcg2 TPM2 table not found\n"));
Status = EFI_NOT_FOUND;
}
Done:
if (EFI_ERROR(Status)) {
TestPointLibAppendErrorString (
PLATFORM_TEST_POINT_ROLE_PLATFORM_IBV,
NULL,
TEST_POINT_BYTE5_READY_TO_BOOT_TCG_TRUSTED_BOOT_ENABLED_ERROR_CODE \
TEST_POINT_READY_TO_BOOT \
TEST_POINT_BYTE5_READY_TO_BOOT_TCG_TRUSTED_BOOT_ENABLED_ERROR_STRING
);
}
DEBUG ((DEBUG_INFO, "==== TestPointCheckTcgTrustedBoot - Exit\n"));
return Status;
}