X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BaseTools%2FSource%2FC%2FInclude%2FCommon%2FUefiMultiPhase.h;h=0753dd2e9da59fb9c20e69018ea132c9c054b228;hp=7c487471a8a277447d4fb300baa8c314f1dd2a89;hb=fb0b35e05f772bd415fe264267bbbcde2e0accda;hpb=4afd3d042215afe68d00b9ab8c32f063a3a1c03f
diff --git a/BaseTools/Source/C/Include/Common/UefiMultiPhase.h b/BaseTools/Source/C/Include/Common/UefiMultiPhase.h
index 7c487471a8..0753dd2e9d 100644
--- a/BaseTools/Source/C/Include/Common/UefiMultiPhase.h
+++ b/BaseTools/Source/C/Include/Common/UefiMultiPhase.h
@@ -1,18 +1,18 @@
/** @file
- This includes some definitions introduced in UEFI that will be used in both PEI and DXE phases.
+ This includes some definitions introduced in UEFI that will be used in both PEI
+ and DXE phases.
- Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.
+ (C) Copyright 2015 Hewlett-Packard Development Company, L.P.
+ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
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:
+ 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.
- File Name: UefiMultiPhase.h
-
**/
#ifndef __UEFI_MULTIPHASE_H__
@@ -20,7 +20,7 @@
//
// Enumeration of memory types introduced in UEFI.
-//
+//
typedef enum {
EfiReservedMemoryType,
EfiLoaderCode,
@@ -36,13 +36,14 @@ typedef enum {
EfiMemoryMappedIO,
EfiMemoryMappedIOPortSpace,
EfiPalCode,
+ EfiPersistentMemory,
EfiMaxMemoryType
} EFI_MEMORY_TYPE;
//
// Data structure that precedes all of the standard EFI table types.
-//
+//
typedef struct {
UINT64 Signature;
UINT32 Revision;
@@ -53,28 +54,28 @@ typedef struct {
//
// Attributes of variable.
-//
+//
#define EFI_VARIABLE_NON_VOLATILE 0x00000001
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008
//
-// This attribute is identified by the mnemonic 'HR'
+// This attribute is identified by the mnemonic 'HR'
// elsewhere in this specification.
-//
+//
#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010
//
// _WIN_CERTIFICATE.wCertificateType
-//
+//
#define WIN_CERT_TYPE_EFI_PKCS115 0x0EF0
#define WIN_CERT_TYPE_EFI_GUID 0x0EF1
/**
-
+
The WIN_CERTIFICATE structure is part of the PE/COFF
specification and has the following definition:
@@ -109,13 +110,13 @@ typedef struct _WIN_CERTIFICATE {
//
// WIN_CERTIFICATE_UEFI_GUID.CertType
-//
+//
#define EFI_CERT_TYPE_RSA2048_SHA256_GUID \
{0xa7717414, 0xc616, 0x4977, {0x94, 0x20, 0x84, 0x47, 0x12, 0xa7, 0x35, 0xbf } }
//
// WIN_CERTIFICATE_UEFI_GUID.CertData
-//
+//
typedef struct _EFI_CERT_BLOCK_RSA_2048_SHA256 {
EFI_GUID HashType;
UINT8 PublicKey[256];
@@ -124,7 +125,7 @@ typedef struct _EFI_CERT_BLOCK_RSA_2048_SHA256 {
/**
-
+
@param Hdr This is the standard WIN_CERTIFICATE header, where
wCertificateType is set to
WIN_CERT_TYPE_EFI_GUID.
@@ -152,31 +153,31 @@ typedef struct _EFI_CERT_BLOCK_RSA_2048_SHA256 {
typedef struct _WIN_CERTIFICATE_UEFI_GUID {
WIN_CERTIFICATE Hdr;
EFI_GUID CertType;
- // UINT8 CertData[ANYSIZE_ARRAY];
+ UINT8 CertData[1];
} WIN_CERTIFICATE_UEFI_GUID;
/**
-
+
Certificate which encapsulates the RSASSA_PKCS1-v1_5 digital
signature.
-
+
The WIN_CERTIFICATE_UEFI_PKCS1_15 structure is derived from
- WIN_CERTIFICATE and encapsulate the information needed to
- implement the RSASSA-PKCS1-v1_5 digital signature algorithm as
- specified in RFC2437.
-
+ WIN_CERTIFICATE and encapsulate the information needed to
+ implement the RSASSA-PKCS1-v1_5 digital signature algorithm as
+ specified in RFC2437.
+
@param Hdr This is the standard WIN_CERTIFICATE header, where
wCertificateType is set to
WIN_CERT_TYPE_UEFI_PKCS1_15.
-
+
@param HashAlgorithm This is the hashing algorithm which was
performed on the UEFI executable when
creating the digital signature. It is
one of the enumerated values pre-defined
in Section 26.4.1. See
EFI_HASH_ALGORITHM_x.
-
+
@param Signature This is the actual digital signature. The
size of the signature is the same size as
the key (1024-bit key is 128 bytes) and can
@@ -194,13 +195,13 @@ typedef struct _WIN_CERTIFICATE_EFI_PKCS1_15 {
/**
-
+
AuthInfo is a WIN_CERTIFICATE using the wCertificateType
WIN_CERTIFICATE_UEFI_GUID and the CertType
EFI_CERT_TYPE_RSA2048_SHA256. If the attribute specifies
authenticated access, then the Data buffer should begin with an
authentication descriptor prior to the data payload and DataSize
- should reflect the the data.and descriptor size. The caller
+ should reflect the data.and descriptor size. The caller
shall digest the Monotonic Count value and the associated data
for the variable update using the SHA-256 1-way hash algorithm.
The ensuing the 32-byte digest will be signed using the private
@@ -208,12 +209,12 @@ typedef struct _WIN_CERTIFICATE_EFI_PKCS1_15 {
WIN_CERTIFICATE shall be used to describe the signature of the
Variable data *Data. In addition, the signature will also
include the MonotonicCount value to guard against replay attacks
-
+
@param MonotonicCount Included in the signature of
AuthInfo.Used to ensure freshness/no
replay. Incremented during each
"Write" access.
-
+
@param AuthInfo Provides the authorization for the variable
access. It is a signature across the
variable data and the Monotonic Count