4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Platform Key, Key Exchange Key, and Image signature database are defined
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for the signed image validation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @par Revision Reference:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync GUIDs defined in UEFI 2.3.1 spec.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __IMAGE_AUTHTICATION_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __IMAGE_AUTHTICATION_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Guid/GlobalVariable.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_IMAGE_SECURITY_DATABASE_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0xd719b2cb, 0x3d3a, 0x4596, { 0xa3, 0xbc, 0xda, 0xd0, 0xe, 0x67, 0x65, 0x6f } \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Varialbe name with guid EFI_IMAGE_SECURITY_DATABASE_GUID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// for the authorized signature database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_IMAGE_SECURITY_DATABASE L"db"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Varialbe name with guid EFI_IMAGE_SECURITY_DATABASE_GUID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// for the forbidden signature database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_IMAGE_SECURITY_DATABASE1 L"dbx"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SECURE_BOOT_MODE_ENABLE 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SECURE_BOOT_MODE_DISABLE 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SETUP_MODE 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define USER_MODE 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Globally "SetupMode" variable to specify whether the system is currently operating
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// in setup mode (1) or not (0). All other values are reserved.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SETUP_MODE_NAME L"SetupMode"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Globally "PK" variable for the Platform Key Signature Database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_PLATFORM_KEY_NAME L"PK"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Globally "KEK" variable for the Key Exchange Key Signature Database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_KEY_EXCHANGE_KEY_NAME L"KEK"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Globally "SignatureSupport" variable returns an array of GUIDs,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// with each GUID representing a type of signature which the platform
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// firmware supports for images and other data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SIGNATURE_SUPPORT_NAME L"SignatureSupport"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Globally "SecureBoot" variable to specify whether the platform firmware
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// is operating in Secure boot mode (1) or not (0). All other values are reserved.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SECURE_BOOT_MODE_NAME L"SecureBoot"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//***********************************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Signature Database
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//***********************************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// The format of a signature database.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#pragma pack(1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// An identifier which identifies the agent which added the signature to the list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_GUID SignatureOwner;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The format of the signature is defined by the SignatureType.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 SignatureData[1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_SIGNATURE_DATA;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Type of the signature. GUID signature types are defined in below.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_GUID SignatureType;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Total size of the signature list, including this header.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 SignatureListSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Size of the signature header which precedes the array of signatures.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 SignatureHeaderSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Size of each signature.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 SignatureSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Header before the array of signatures. The format of this header is specified
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// by the SignatureType.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// UINT8 SignatureHeader[SignatureHeaderSize];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// An array of signatures. Each signature is SignatureSize bytes in length.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_SIGNATURE_DATA Signatures[][SignatureSize];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_SIGNATURE_LIST;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#pragma pack()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This identifies a signature containing a SHA-256 hash. The SignatureHeader size shall
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// always be 0. The SignatureSize shall always be 16 (size of SignatureOwner component) +
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// 32 bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_CERT_SHA256_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0xc1c41626, 0x504c, 0x4092, {0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28} \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This identifies a signature containing an RSA-2048 key. The key (only the modulus
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// since the public key exponent is known to be 0x10001) shall be stored in big-endian
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// order.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// The SignatureHeader size shall always be 0. The SignatureSize shall always be 16 (size
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// of SignatureOwner component) + 256 bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_CERT_RSA2048_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x3c5766e8, 0x269c, 0x4e34, {0xaa, 0x14, 0xed, 0x77, 0x6e, 0x85, 0xb3, 0xb6} \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This identifies a signature containing a RSA-2048 signature of a SHA-256 hash. The
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SignatureHeader size shall always be 0. The SignatureSize shall always be 16 (size of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SignatureOwner component) + 256 bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_CERT_RSA2048_SHA256_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0xe2b36190, 0x879b, 0x4a3d, {0xad, 0x8d, 0xf2, 0xe7, 0xbb, 0xa3, 0x27, 0x84} \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This identifies a signature containing a SHA-1 hash. The SignatureSize shall always
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// be 16 (size of SignatureOwner component) + 20 bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_CERT_SHA1_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x826ca512, 0xcf10, 0x4ac9, {0xb1, 0x87, 0xbe, 0x1, 0x49, 0x66, 0x31, 0xbd} \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// TThis identifies a signature containing a RSA-2048 signature of a SHA-1 hash. The
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SignatureHeader size shall always be 0. The SignatureSize shall always be 16 (size of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SignatureOwner component) + 256 bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_CERT_RSA2048_SHA1_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x67f8444f, 0x8743, 0x48f1, {0xa3, 0x28, 0x1e, 0xaa, 0xb8, 0x73, 0x60, 0x80} \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This identifies a signature based on an X.509 certificate. If the signature is an X.509
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// certificate then verification of the signature of an image should validate the public
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// key certificate in the image using certificate path verification, up to this X.509
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// certificate as a trusted root. The SignatureHeader size shall always be 0. The
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SignatureSize may vary but shall always be 16 (size of the SignatureOwner component) +
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// the size of the certificate itself.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Note: This means that each certificate will normally be in a separate EFI_SIGNATURE_LIST.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_CERT_X509_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0xa5c059a1, 0x94e4, 0x4aa7, {0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72} \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This identifies a signature containing a SHA-224 hash. The SignatureHeader size shall
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// always be 0. The SignatureSize shall always be 16 (size of SignatureOwner component) +
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// 28 bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_CERT_SHA224_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0xb6e5233, 0xa65c, 0x44c9, {0x94, 0x7, 0xd9, 0xab, 0x83, 0xbf, 0xc8, 0xbd} \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This identifies a signature containing a SHA-384 hash. The SignatureHeader size shall
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// always be 0. The SignatureSize shall always be 16 (size of SignatureOwner component) +
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// 48 bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_CERT_SHA384_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0xff3e5307, 0x9fd0, 0x48c9, {0x85, 0xf1, 0x8a, 0xd5, 0x6c, 0x70, 0x1e, 0x1} \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This identifies a signature containing a SHA-512 hash. The SignatureHeader size shall
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// always be 0. The SignatureSize shall always be 16 (size of SignatureOwner component) +
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// 64 bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_CERT_SHA512_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x93e0fae, 0xa6c4, 0x4f50, {0x9f, 0x1b, 0xd4, 0x1e, 0x2b, 0x89, 0xc1, 0x9a} \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This identifies a signature containing a DER-encoded PKCS #7 version 1.5 [RFC2315]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// SignedData value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_CERT_TYPE_PKCS7_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x4aafd29d, 0x68df, 0x49ee, {0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7} \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//***********************************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Image Execution Information Table Definition
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//***********************************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef UINT32 EFI_IMAGE_EXECUTION_ACTION;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_IMAGE_EXECUTION_AUTHENTICATION 0x00000007
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_IMAGE_EXECUTION_AUTH_UNTESTED 0x00000000
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_IMAGE_EXECUTION_AUTH_SIG_FAILED 0x00000001
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_IMAGE_EXECUTION_AUTH_SIG_PASSED 0x00000002
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_IMAGE_EXECUTION_AUTH_SIG_NOT_FOUND 0x00000003
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_IMAGE_EXECUTION_AUTH_SIG_FOUND 0x00000004
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_IMAGE_EXECUTION_POLICY_FAILED 0x00000005
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_IMAGE_EXECUTION_INITIALIZED 0x00000008
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_IMAGE_EXECUTION_INFO is added to EFI System Configuration Table
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// and assigned the GUID EFI_IMAGE_SECURITY_DATABASE_GUID.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Describes the action taken by the firmware regarding this image.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IMAGE_EXECUTION_ACTION Action;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Size of all of the entire structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 InfoSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// If this image was a UEFI device driver (for option ROM, for example) this is the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// null-terminated, user-friendly name for the device. If the image was for an application,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// then this is the name of the application. If this cannot be determined, then a simple
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// NULL character should be put in this position.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// CHAR16 Name[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// For device drivers, this is the device path of the device for which this device driver
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// was intended. In some cases, the driver itself may be stored as part of the system
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// firmware, but this field should record the device's path, not the firmware path. For
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// applications, this is the device path of the application. If this cannot be determined,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// a simple end-of-path device node should be put in this position.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_DEVICE_PATH_PROTOCOL DevicePath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Zero or more image signatures. If the image contained no signatures,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// then this field is empty.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_SIGNATURE_LIST Signature;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_IMAGE_EXECUTION_INFO;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Number of EFI_IMAGE_EXECUTION_INFO structures.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN NumberOfImages;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Number of image instances of EFI_IMAGE_EXECUTION_INFO structures.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // EFI_IMAGE_EXECUTION_INFO InformationInfo[]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_IMAGE_EXECUTION_INFO_TABLE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiImageSecurityDatabaseGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiCertSha256Guid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiCertRsa2048Guid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiCertRsa2048Sha256Guid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiCertSha1Guid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiCertRsa2048Sha1Guid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiCertX509Guid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiCertSha224Guid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiCertSha384Guid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiCertSha512Guid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiCertPkcs7Guid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif