// /** @file
// Provides security service for TPM 1.2 measured boot
//
// This library instance hooks LoadImage() API to measure every image that
// is not measured in PEI phase. And, it will also measure GPT partition.
//
// Caution: This module requires additional review when modified.
// This library will have external input - PE/COFF image and GPT partition.
// This external input must be validated carefully to avoid security issues such
// as buffer overflow or integer overflow.
//
// Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/


#string STR_MODULE_ABSTRACT             #language en-US "Provides security service for TPM 1.2 measured boot"

#string STR_MODULE_DESCRIPTION          #language en-US "This library instance hooks LoadImage() API to measure every image that is not measured in PEI phase. And, it will also measure GPT partition. Caution: This module requires additional review when modified. This library will have external input - PE/COFF image and GPT partition. This external input must be validated carefully to avoid security issues such as buffer overflow or integer overflow."

