| /** @file | |
| This file declares Pei Security2 PPI. | |
| This PPI is installed by some platform PEIM that abstracts the security | |
| policy to the PEI Foundation, namely the case of a PEIM's authentication | |
| state being returned during the PEI section extraction process. | |
| Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR> | |
| This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD 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 IMPLIED. | |
| @par Revision Reference: | |
| This PPI is introduced in PI Version 1.0. | |
| **/ | |
| #ifndef __SECURITY2_PPI_H__ | |
| #define __SECURITY2_PPI_H__ | |
| #define EFI_PEI_SECURITY2_PPI_GUID \ | |
| { 0xdcd0be23, 0x9586, 0x40f4, { 0xb6, 0x43, 0x6, 0x52, 0x2c, 0xed, 0x4e, 0xde } } | |
| typedef struct _EFI_PEI_SECURITY2_PPI EFI_PEI_SECURITY2_PPI; | |
| /** | |
| Allows the platform builder to implement a security policy | |
| in response to varying file authentication states. | |
| This service is published by some platform PEIM. The purpose of | |
| this service is to expose a given platform's policy-based | |
| response to the PEI Foundation. For example, if there is a PEIM | |
| in a GUIDed encapsulation section and the extraction of the PEI | |
| file section yields an authentication failure, there is no a | |
| priori policy in the PEI Foundation. Specifically, this | |
| situation leads to the question whether PEIMs that are either | |
| not in GUIDed sections or are in sections whose authentication | |
| fails should still be executed. | |
| @param PeiServices An indirect pointer to the PEI Services | |
| Table published by the PEI Foundation. | |
| @param This Interface pointer that implements the | |
| particular EFI_PEI_SECURITY2_PPI instance. | |
| @param AuthenticationStatus Authentication status of the file. | |
| xx00 Image was not signed. | |
| xxx1 Platform security policy override. | |
| Assumes same meaning as 0010 (the image was signed, the | |
| signature was tested, and the signature passed authentication test). | |
| 0010 Image was signed, the signature was tested, | |
| and the signature passed authentication test. | |
| 0110 Image was signed and the signature was not tested. | |
| 1010 Image was signed, the signature was tested, | |
| and the signature failed the authentication test. | |
| @param FvHandle Handle of the volume in which the file | |
| resides. This allows different policies | |
| depending on different firmware volumes. | |
| @param FileHandle Handle of the file under review. | |
| @param DeferExecution Pointer to a variable that alerts the | |
| PEI Foundation to defer execution of a | |
| PEIM. | |
| @retval EFI_SUCCESS The service performed its action successfully. | |
| @retval EFI_SECURITY_VIOLATION The object cannot be trusted. | |
| **/ | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_PEI_SECURITY_AUTHENTICATION_STATE)( | |
| IN CONST EFI_PEI_SERVICES **PeiServices, | |
| IN CONST EFI_PEI_SECURITY2_PPI *This, | |
| IN UINT32 AuthenticationStatus, | |
| IN EFI_PEI_FV_HANDLE FvHandle, | |
| IN EFI_PEI_FILE_HANDLE FileHandle, | |
| IN OUT BOOLEAN *DeferExecution | |
| ); | |
| /// | |
| /// This PPI is a means by which the platform builder can indicate | |
| /// a response to a PEIM's authentication state. This can be in | |
| /// the form of a requirement for the PEI Foundation to skip a | |
| /// module using the DeferExecution Boolean output in the | |
| /// AuthenticationState() member function. Alternately, the | |
| /// Security PPI can invoke something like a cryptographic PPI | |
| /// that hashes the PEIM contents to log attestations, for which | |
| /// the FileHandle parameter in AuthenticationState() will be | |
| /// useful. If this PPI does not exist, PEIMs will be considered | |
| /// trusted. | |
| /// | |
| struct _EFI_PEI_SECURITY2_PPI { | |
| EFI_PEI_SECURITY_AUTHENTICATION_STATE AuthenticationState; | |
| }; | |
| extern EFI_GUID gEfiPeiSecurity2PpiGuid; | |
| #endif |