summaryrefslogtreecommitdiff
path: root/Core/EM/SLP20/SlpSupport.h
blob: fd44e5de1557de43c76f5b1ff6c2676d95e2ef67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
//****************************************************************************
//****************************************************************************
//**                                                                        **
//**             (C)Copyright 1985-2011, American Megatrends, Inc.          **
//**                                                                        **
//**                          All Rights Reserved.                          **
//**                                                                        **
//**             5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093          **
//**                                                                        **
//**                          Phone (770)-246-8600                          **
//**                                                                        **
//****************************************************************************
//****************************************************************************

//****************************************************************************
// $Header: /Alaska/BIN/Modules/SLP/SlpSupport.h 4     8/01/11 3:26p Vyacheslava $
//
// $Revision: 4 $
//
// $Date: 8/01/11 3:26p $
//****************************************************************************
// Revision History
// ----------------
// $Log: /Alaska/BIN/Modules/SLP/SlpSupport.h $
// 
// 4     8/01/11 3:26p Vyacheslava
// [TAG]  		EIP64110
// [Category]  	Spec Update
// [Severity]  	Normal
// [Description]  	This file has been updated to be compliant with PI 1.2,
// and UEFI 2.3.1 specifications. 
// 
// 3     7/01/11 12:00p Vyacheslava
// [TAG]  		EIP63678
// [Category]  	New Feature
// [Description]  	Preserve the OEM Activation SLIC during the BIOS
// recovery path.
// [Files]  		SlpSupport.sdl
// SlpSupport.mak
// SlpSupport.c
// SlpSupport.dxs
// SlpSupport.h
// SlpSupport.cif
// 
// 2     8/25/10 11:45a Vyacheslava
// Changed comments for better representation in the CHM file.
// 
// 1     5/18/10 4:11p Vyacheslava
// 
// 
//****************************************************************************
//<AMI_FHDR_START>
//
// Name:  SlpSupport.h
//
// Description: SlpSupport Header file.
//
//<AMI_FHDR_END>
//****************************************************************************

#ifndef __SLP_SUPPORT__H__
#define __SLP_SUPPORT__H__
#ifdef __cplusplus
extern "C" {
#endif

//------------------------------------------------------------------------

#include <EFI.h>
#include <Token.h>
#include <Acpi.h>

//------------------------------------------------------------------------

#define SLIC_SIG 0x43494c53  //"SLIC" Microsoft System Locked Preinstallation Table

#define OEM_SLP_PUBLIC_KEY_GUID \
  { 0x996aa1e0, 0x1e8c, 0x4f36, 0xb5, 0x19, 0xa1, 0x70, 0xa2, 0x06, 0xfc, 0x14 }
  
#define OEM_SLP_MARKER_GUID \
  { 0x69009842, 0x63f2, 0x43db, 0x96, 0x4b, 0xef, 0xad, 0x1c, 0x39, 0xec, 0x85 }

#define FLASH_UPPER_ADDRESS             0xFFFFFFFF
#define FLASH_DEVICE_BASE_ADDRESS       (FLASH_UPPER_ADDRESS-FLASH_SIZE+1)

//------------------------------------------------------------------------

#pragma pack (1)

//<AMI_SHDR_START>
//----------------------------------------------------------------------------
//
// Name: OEM_PUBLIC_KEY_STRUCTURE
//
// Description: This structure comes out of the document:
// OEM Activation version 2.0 for M$ Windows Vista (tm) Operating System.
//
// Fields:   
//  Name           Type    Description
//  ------------------------------------------------------------------
//  StructType     UINT32  0x00000000 = PubKey Structure.
//  LicensingData  UINT32  Length, in bytes, of OEM pub key struct (156).
//  bType          UINT8   Public Key Type [PUBLICKEYBLOB (6)].
//  bVersion       UINT8   Version, currently 2 (7/27/2006).
//  Reserved       UINT16  Zero.
//  aiKeyAlg       UINT32  Key Algorithm. [CALG_RSA_SIGN (0x00002400)].
//  Magic          UINT32  bytes: 'RSA1'.
//  BitLen         UINT32  1024 converted to hex.
//  Pubexp         UINT32  Exponent of Public Key, usually 257 converted to hex.
//  Modulus        UINT8   Array. Modulus, modulues of the public key 128 bytes.
//
//----------------------------------------------------------------------------
//<AMI_SHDR_END>

typedef struct {
    UINT32  StructType;
    UINT32  LicensingData;
    UINT8   bType;
    UINT8   bVersion;
    UINT16  Reserved;
    UINT32  aiKeyAlg;
    UINT32  Magic;
    UINT32  Bitlen;
    UINT32  Pubexp;
    UINT8   Modulus[128];
} OEM_PUBLIC_KEY_STRUCTURE;

//<AMI_SHDR_START>
//----------------------------------------------------------------------------
//
// Name: WINDOWS_MARKER_STRUCTURE
//
// Description: This structure comes out of the document:
// OEM Activation version 2.0 for M$ Windows Vista (tm) Operating System.
//
// Fields:   
//  Name            Type    Description
//  ------------------------------------------------------------------
//  StructType      UINT32  0x00000001 = Windows marker structure
//  LicensingData   UINT32  Length, in bytes of Windows Marker (182)
//  dwVersion       UINT32  Version of the Windows Marker (0x0002000)
//  sOEMID          UINT8   The OEMID value from XSDT and RSDT (must match). (6 bytes)
//  sOEMTABLEID     UINT8   the OEMTABLEID from XSDT and RSDT (must match). (8 bytes)
//  sWindowsFlag    UINT8   'WINDOWS ' (notice trailing space, not null terminated). (8 bytes)
//  Reserved        UINT8   Reserved for future use. (20 bytes)
//  Signature       UINT8   SHA256 Signature from the Windows Marker. (128 bytes)
//
//----------------------------------------------------------------------------
//<AMI_SHDR_END>

typedef struct {
    UINT32  StructType;
    UINT32  LicensingData;
    UINT32  dwVersion;
    UINT8   sOEMID[6];
    UINT8   sOEMTABLEID[8];
    UINT8   sWindowsFlag[8];
    UINT8   Reserved[20];
    UINT8   Signature[128];
} WINDOWS_MARKER_STRUCTURE;

//<AMI_SHDR_START>
//----------------------------------------------------------------------------
//
// Name: EFI_ACPI_SLP
//
// Description: This structure comes out of the document:
// OEM Activation version 2.0 for M$ Windows Vista (tm) Operating System.
//
// Fields:      
//  Name       Type                         Description
//  ------------------------------------------------------------------
//  Header      EFI_ACPI_DESCRIPTION_HEADER Common ACPI table header
//  PubKey      OEM_PUBLIC_KEY_STRUCTURE    See above for description
//  WinMarker   WINDOWS_MARKER_STRUCTURE    See above for description
//
//----------------------------------------------------------------------------
//<AMI_SHDR_END>

typedef struct {
    ACPI_HDR Header;
    OEM_PUBLIC_KEY_STRUCTURE PubKey;
    WINDOWS_MARKER_STRUCTURE WinMarker;
} EFI_ACPI_SLP;

#pragma pack()


/****** DO NOT WRITE BELOW THIS LINE *******/
#ifdef __cplusplus
}
#endif
#endif

//****************************************************************************
//****************************************************************************
//**                                                                        **
//**             (C)Copyright 1985-2011, American Megatrends, Inc.          **
//**                                                                        **
//**                          All Rights Reserved.                          **
//**                                                                        **
//**             5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093          **
//**                                                                        **
//**                          Phone (770)-246-8600                          **
//**                                                                        **
//****************************************************************************
//****************************************************************************