]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OldMdePkg/Include/Dxe/ArchProtocol/Security.h
Moved the MdePkg to OldMdePkg so that new code in MdePkg does not break existing...
[mirror_edk2.git] / OldMdePkg / Include / Dxe / ArchProtocol / Security.h
diff --git a/OldMdePkg/Include/Dxe/ArchProtocol/Security.h b/OldMdePkg/Include/Dxe/ArchProtocol/Security.h
new file mode 100644 (file)
index 0000000..ec981b4
--- /dev/null
@@ -0,0 +1,132 @@
+/** @file\r
+  Security Architectural Protocol as defined in the DXE CIS\r
+\r
+  Used to provide Security services.  Specifically, dependening upon the \r
+  authentication state of a discovered driver in a Firmware Volume, the \r
+  portable DXE Core Dispatcher will call into the Security Architectural \r
+  Protocol (SAP) with the authentication state of the driver.\r
+\r
+  This call-out allows for OEM-specific policy decisions to be made, such\r
+  as event logging for attested boots, locking flash in response to discovering\r
+  an unsigned driver or failed signature check, or other exception response.\r
+\r
+  The SAP can also change system behavior by having the DXE core put a driver\r
+  in the Schedule-On-Request (SOR) state.  This will allow for later disposition \r
+  of the driver by platform agent, such as Platform BDS.\r
+\r
+  Copyright (c) 2006, Intel Corporation                                                         \r
+  All rights reserved. This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+  Module Name:  Security.h\r
+\r
+  @par Revision Reference:\r
+  Version 0.91B.\r
+\r
+**/\r
+\r
+#ifndef __ARCH_PROTOCOL_SECURITY_H__\r
+#define __ARCH_PROTOCOL_SECURITY_H__\r
+\r
+//\r
+// Global ID for the Security Code Architectural Protocol\r
+//\r
+#define EFI_SECURITY_ARCH_PROTOCOL_GUID  \\r
+  { 0xA46423E3, 0x4617, 0x49f1, {0xB9, 0xFF, 0xD1, 0xBF, 0xA9, 0x11, 0x58, 0x39 } }\r
+\r
+typedef struct _EFI_SECURITY_ARCH_PROTOCOL    EFI_SECURITY_ARCH_PROTOCOL;\r
+\r
+/**\r
+  The EFI_SECURITY_ARCH_PROTOCOL (SAP) is used to abstract platform-specific \r
+  policy from the DXE core response to an attempt to use a file that returns a \r
+  given status for the authentication check from the section extraction protocol.  \r
+\r
+  The possible responses in a given SAP implementation may include locking \r
+  flash upon failure to authenticate, attestation logging for all signed drivers, \r
+  and other exception operations.  The File parameter allows for possible logging \r
+  within the SAP of the driver.\r
+\r
+  If File is NULL, then EFI_INVALID_PARAMETER is returned.\r
+\r
+  If the file specified by File with an authentication status specified by \r
+  AuthenticationStatus is safe for the DXE Core to use, then EFI_SUCCESS is returned.\r
+\r
+  If the file specified by File with an authentication status specified by \r
+  AuthenticationStatus is not safe for the DXE Core to use under any circumstances, \r
+  then EFI_ACCESS_DENIED is returned.\r
+\r
+  If the file specified by File with an authentication status specified by \r
+  AuthenticationStatus is not safe for the DXE Core to use right now, but it \r
+  might be possible to use it at a future time, then EFI_SECURITY_VIOLATION is \r
+  returned.\r
+\r
+  @param  This             The EFI_SECURITY_ARCH_PROTOCOL instance.\r
+  @param  AuthenticationStatus \r
+                           This is the authentication type returned from the Section\r
+                           Extraction protocol. See the Section Extraction Protocol\r
+                           Specification for details on this type.\r
+  @param  File             This is a pointer to the device path of the file that is\r
+                           being dispatched. This will optionally be used for logging.\r
+\r
+  @retval EFI_SUCCESS           The file specified by File did authenticate, and the\r
+                                platform policy dictates that the DXE Core may use File.\r
+  @retval EFI_INVALID_PARAMETER Driver is NULL.\r
+  @retval EFI_SECURITY_VIOLATION The file specified by File did not authenticate, and\r
+                                the platform policy dictates that File should be placed\r
+                                in the untrusted state. A file may be promoted from\r
+                                the untrusted to the trusted state at a future time\r
+                                with a call to the Trust() DXE Service.\r
+  @retval EFI_ACCESS_DENIED     The file specified by File did not authenticate, and\r
+                                the platform policy dictates that File should not be\r
+                                used for any purpose.\r
+\r
+**/\r
+typedef \r
+EFI_STATUS\r
+(EFIAPI *EFI_SECURITY_FILE_AUTHENTICATION_STATE) (\r
+  IN EFI_SECURITY_ARCH_PROTOCOL     *This,\r
+  IN  UINT32                        AuthenticationStatus,\r
+  IN  EFI_DEVICE_PATH_PROTOCOL      *File\r
+  )\r
+;\r
+\r
+//\r
+// Interface stucture for the Timer Architectural Protocol\r
+//\r
+/**\r
+  @par Protocol Description:\r
+\r
+  The EFI_SECURITY_ARCH_PROTOCOL is used to abstract platform-specific policy\r
+  from the DXE core.  This includes locking flash upon failure to authenticate, \r
+  attestation logging, and other exception operations.\r
+\r
+  The driver that produces the EFI_SECURITY_ARCH_PROTOCOL may also optionally \r
+  install the EFI_SECURITY_POLICY_PROTOCOL_GUID onto a new handle with a NULL \r
+  interface.  The existence of this GUID in the protocol database means that \r
+  the GUIDed Section Extraction Protocol should authenticate the contents of \r
+  an Authentication Section.  The expectation is that the GUIDed Section \r
+  Extraction protocol will look for the existence of the EFI_SECURITY_POLICY_ \r
+  PROTOCOL_GUID in the protocol database.  If it exists, then the publication \r
+  thereof is taken as an injunction to attempt an authentication of any section \r
+  wrapped in an Authentication Section.  See the Firmware File System \r
+  Specification for details on the GUIDed Section Extraction Protocol and \r
+  Authentication Sections.\r
+\r
+  @par Protocol Parameters:\r
+\r
+  FileAuthenticationState - This service is called upon fault with respect to \r
+  the authentication of a section of a file.\r
+\r
+**/\r
+struct _EFI_SECURITY_ARCH_PROTOCOL {\r
+  EFI_SECURITY_FILE_AUTHENTICATION_STATE  FileAuthenticationState;\r
+};\r
+\r
+extern EFI_GUID gEfiSecurityArchProtocolGuid;\r
+\r
+#endif\r