/** @file\r
This includes some definitions introduced in UEFI that will be used in both PEI and DXE phases.\r
\r
- Copyright (c) 2006 - 2008, 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
+Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution. \r
+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
**/\r
\r
#ifndef __UEFI_MULTIPHASE_H__\r
#define __UEFI_MULTIPHASE_H__\r
\r
-#include <ProcessorBind.h>\r
-\r
+#include <Guid/WinCertificate.h>\r
///\r
/// Enumeration of memory types introduced in UEFI.\r
/// \r
///\r
EfiLoaderData,\r
///\r
- /// The code portions of a loaded Boot Services Driver\r
+ /// The code portions of a loaded Boot Services Driver.\r
///\r
EfiBootServicesCode,\r
///\r
/// \r
#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010\r
\r
-//\r
-// _WIN_CERTIFICATE.wCertificateType\r
-// \r
-#define WIN_CERT_TYPE_EFI_PKCS115 0x0EF0\r
-#define WIN_CERT_TYPE_EFI_GUID 0x0EF1\r
-\r
-///\r
-/// The WIN_CERTIFICATE structure is part of the PE/COFF specification.\r
-///\r
-typedef struct _WIN_CERTIFICATE {\r
- ///\r
- /// The length of the entire certificate, \r
- /// including the length of the header, in bytes. \r
- ///\r
- UINT32 dwLength;\r
- ///\r
- /// The revision level of the WIN_CERTIFICATE \r
- /// structure. The current revision level is 0x0200. \r
- ///\r
- UINT16 wRevision;\r
- ///\r
- /// The certificate type. See WIN_CERT_TYPE_xxx for the UEFI \r
- /// certificate types. The UEFI specification reserves the range of \r
- /// certificate type values from 0x0EF0 to 0x0EFF. \r
- ///\r
- UINT16 wCertificateType;\r
- ///\r
- /// The following is the actual certificate. The format of \r
- /// the certificate depends on wCertificateType.\r
- ///\r
- /// UINT8 bCertificate[ANYSIZE_ARRAY];\r
- ///\r
-} WIN_CERTIFICATE;\r
-\r
-///\r
-/// WIN_CERTIFICATE_UEFI_GUID.CertType\r
-/// \r
-#define EFI_CERT_TYPE_RSA2048_SHA256_GUID \\r
- {0xa7717414, 0xc616, 0x4977, {0x94, 0x20, 0x84, 0x47, 0x12, 0xa7, 0x35, 0xbf } }\r
-\r
-///\r
-/// WIN_CERTIFICATE_UEFI_GUID.CertData\r
-/// \r
-typedef struct _EFI_CERT_BLOCK_RSA_2048_SHA256 {\r
- UINT32 HashType;\r
- UINT8 PublicKey[256];\r
- UINT8 Signature[256];\r
-} EFI_CERT_BLOCK_RSA_2048_SHA256;\r
-\r
-\r
-///\r
-/// Certificate which encapsulates a GUID-specific digital signature\r
-///\r
-typedef struct _WIN_CERTIFICATE_UEFI_GUID {\r
- ///\r
- /// This is the standard WIN_CERTIFICATE header, where\r
- /// wCertificateType is set to WIN_CERT_TYPE_UEFI_GUID. \r
- /// \r
- WIN_CERTIFICATE Hdr;\r
- ///\r
- /// This is the unique id which determines the \r
- /// format of the CertData. In this case, the \r
- /// value is EFI_CERT_TYPE_RSA2048_SHA256_GUID.\r
- ///\r
- EFI_GUID CertType;\r
- /// \r
- /// The following is the certificate data. The format of\r
- /// the data is determined by the CertType. In this case the value is \r
- /// EFI_CERT_BLOCK_RSA_2048_SHA256. \r
- ///\r
- /// UINT8 CertData[ANYSIZE_ARRAY];\r
- ///\r
-} WIN_CERTIFICATE_UEFI_GUID;\r
-\r
-\r
-/// \r
-/// Certificate which encapsulates the RSASSA_PKCS1-v1_5 digital signature.\r
-/// \r
-/// The WIN_CERTIFICATE_UEFI_PKCS1_15 structure is derived from\r
-/// WIN_CERTIFICATE and encapsulate the information needed to \r
-/// implement the RSASSA-PKCS1-v1_5 digital signature algorithm as \r
-/// specified in RFC2437. \r
-/// \r
-typedef struct _WIN_CERTIFICATE_EFI_PKCS1_15 { \r
- ///\r
- /// This is the standard WIN_CERTIFICATE header, where \r
- /// wCertificateType is set to WIN_CERT_TYPE_UEFI_PKCS1_15. \r
- ///\r
- WIN_CERTIFICATE Hdr;\r
- ///\r
- /// This is the hashing algorithm which was performed on the\r
- /// UEFI executable when creating the digital signature. \r
- ///\r
- EFI_GUID HashAlgorithm;\r
- ///\r
- /// The following is the actual digital signature. The \r
- /// size of the signature is the same size as the key \r
- /// (1024-bit key is 128 bytes) and can be determined by \r
- /// subtracting the length of the other parts of this header\r
- /// from the total length of the certificate as found in \r
- /// Hdr.dwLength. \r
- ///\r
- /// UINT8 Signature[ANYSIZE_ARRAY];\r
- ///\r
-} WIN_CERTIFICATE_EFI_PKCS1_15;\r
-\r
-\r
-\r
/// \r
/// AuthInfo is a WIN_CERTIFICATE using the wCertificateType\r
/// WIN_CERTIFICATE_UEFI_GUID and the CertType\r
/// key associated w/ the public/private 2048-bit RSA key-pair. The\r
/// WIN_CERTIFICATE shall be used to describe the signature of the\r
/// Variable data *Data. In addition, the signature will also\r
-/// include the MonotonicCount value to guard against replay attacks\r
+/// include the MonotonicCount value to guard against replay attacks.\r
/// \r
typedef struct {\r
///\r