]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/IndustryStandard/TcgStorageOpal.h
MdePkg: TpmPtp: Add CapCRBIdleBypass definition
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / TcgStorageOpal.h
CommitLineData
79af8319
ED
1/** @file\r
2 Opal Specification defined values and structures.\r
3\r
4d9e5274 4 (TCG Storage Architecture Core Specification, Version 2.01, Revision 1.00,\r
bc623a11 5 https://trustedcomputinggroup.org/tcg-storage-architecture-core-specification/\r
4d9e5274
ED
6\r
7 Storage Work Group Storage Security Subsystem Class: Pyrite, Version 1.00 Final, Revision 1.00,\r
bc623a11 8 https://trustedcomputinggroup.org/tcg-storage-security-subsystem-class-pyrite/\r
4d9e5274
ED
9\r
10 Storage Work Group Storage Security Subsystem Class: Opal, Version 2.01 Final, Revision 1.00,\r
bc623a11 11 https://trustedcomputinggroup.org/storage-work-group-storage-security-subsystem-class-opal/\r
4d9e5274
ED
12\r
13 TCG Storage Security Subsystem Class: Opalite Version 1.00 Revision 1.00,\r
bc623a11 14 https://trustedcomputinggroup.org/tcg-storage-security-subsystem-class-opalite/)\r
4d9e5274
ED
15\r
16 Check http://trustedcomputinggroup.org for latest specification updates.\r
17\r
18Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>\r
79af8319
ED
19This program and the accompanying materials\r
20are licensed and made available under the terms and conditions of the BSD License\r
21which accompanies this distribution. The full text of the license may be found at\r
22http://opensource.org/licenses/bsd-license.php\r
23\r
24THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
25WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
26\r
27**/\r
28\r
29#ifndef _TCG_STORAGE_OPAL_H_\r
30#define _TCG_STORAGE_OPAL_H_\r
31\r
32#include <IndustryStandard/TcgStorageCore.h>\r
33\r
34#define OPAL_UID_ADMIN_SP TCG_TO_UID(0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x01)\r
35#define OPAL_UID_ADMIN_SP_C_PIN_MSID TCG_TO_UID(0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x84, 0x02)\r
36#define OPAL_UID_ADMIN_SP_C_PIN_SID TCG_TO_UID(0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01)\r
37#define OPAL_UID_LOCKING_SP TCG_TO_UID(0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x02)\r
38\r
39// ADMIN_SP\r
40// Authorities\r
41#define OPAL_ADMIN_SP_ANYBODY_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01)\r
42#define OPAL_ADMIN_SP_ADMINS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02)\r
43#define OPAL_ADMIN_SP_MAKERS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03)\r
44#define OPAL_ADMIN_SP_SID_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06)\r
45#define OPAL_ADMIN_SP_ADMIN1_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x02, 0x01)\r
46#define OPAL_ADMIN_SP_PSID_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFF, 0x01)\r
47\r
48#define OPAL_ADMIN_SP_ACTIVATE_METHOD TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x03)\r
49#define OPAL_ADMIN_SP_REVERT_METHOD TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x02)\r
50\r
45df1841
ED
51// ADMIN_SP\r
52// Data Removal mechanism\r
53#define OPAL_UID_ADMIN_SP_DATA_REMOVAL_MECHANISM TCG_TO_UID(0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00, 0x01)\r
79af8319
ED
54\r
55// LOCKING SP\r
56// Authorities\r
57#define OPAL_LOCKING_SP_ANYBODY_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01)\r
58#define OPAL_LOCKING_SP_ADMINS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02)\r
59#define OPAL_LOCKING_SP_ADMIN1_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x01)\r
60#define OPAL_LOCKING_SP_USERS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00, 0x00)\r
61#define OPAL_LOCKING_SP_USER1_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00, 0x01)\r
62\r
63#define OPAL_LOCKING_SP_REVERTSP_METHOD TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11)\r
64\r
65// C_PIN Table Rows\r
66#define OPAL_LOCKING_SP_C_PIN_ADMIN1 TCG_TO_UID( 0x00, 0x00, 0x00, 0x0B, 0x00, 0x01, 0x00, 0x01 )\r
67#define OPAL_LOCKING_SP_C_PIN_USER1 TCG_TO_UID( 0x00, 0x00, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x01 )\r
68\r
69// Locking Table\r
70#define OPAL_LOCKING_SP_LOCKING_GLOBALRANGE TCG_TO_UID( 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x01 )\r
71#define OPAL_LOCKING_SP_LOCKING_RANGE1 TCG_TO_UID( 0x00, 0x00, 0x08, 0x02, 0x00, 0x03, 0x00, 0x01 )\r
72\r
73\r
74// LOCKING SP ACE Table Preconfiguration\r
75#define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_GET_ALL TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xD0, 0x00 )\r
76#define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_SET_RDLOCKED TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xE0, 0x00 )\r
77#define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_SET_WRLOCKED TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xE8, 0x00 )\r
78\r
79#define OPAL_LOCKING_SP_ACE_K_AES_256_GLOBALRANGE_GENKEY TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xB8, 0x00 )\r
80#define OPAL_LOCKING_SP_ACE_K_AES_128_GLOBALRANGE_GENKEY TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xB0, 0x00 )\r
81\r
82\r
83// LOCKING SP LockingInfo Table Preconfiguration\r
84#define OPAL_LOCKING_SP_LOCKING_INFO TCG_TO_UID( 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x01 )\r
85\r
86#define OPAL_LOCKING_SP_LOCKINGINFO_ALIGNMENTREQUIRED_COL 0x7\r
87#define OPAL_LOCKING_SP_LOCKINGINFO_LOGICALBLOCKSIZE_COL 0x8\r
88#define OPAL_LOCKING_SP_LOCKINGINFO_ALIGNMENTGRANULARITY_COL 0x9\r
89#define OPAL_LOCKING_SP_LOCKINGINFO_LOWESTALIGNEDLBA_COL 0xA\r
90\r
91// K_AES_256 Table Preconfiguration\r
92#define OPAL_LOCKING_SP_K_AES_256_GLOBALRANGE_KEY TCG_TO_UID( 0x00, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x01 )\r
93\r
94// K_AES_128 Table Preconfiguration\r
95#define OPAL_LOCKING_SP_K_AES_128_GLOBALRANGE_KEY TCG_TO_UID( 0x00, 0x00, 0x08, 0x05, 0x00, 0x00, 0x00, 0x01 )\r
96\r
97// Minimum Properties that an Opal Compliant SD Shall support\r
98#define OPAL_MIN_MAX_COM_PACKET_SIZE 2048\r
99#define OPAL_MIN_MAX_REPONSE_COM_PACKET_SIZE 2048\r
100#define OPAL_MIN_MAX_PACKET_SIZE 2028\r
101#define OPAL_MIN_MAX_IND_TOKEN_SIZE 1992\r
102#define OPAL_MIN_MAX_PACKETS 1\r
103#define OPAL_MIN_MAX_SUBPACKETS 1\r
104#define OPAL_MIN_MAX_METHODS 1\r
105#define OPAL_MIN_MAX_SESSIONS 1\r
106#define OPAL_MIN_MAX_AUTHENTICATIONS 2\r
107#define OPAL_MIN_MAX_TRANSACTION_LIMIT 1\r
108\r
109#define OPAL_ADMIN_SP_PIN_COL 3\r
110#define OPAL_LOCKING_SP_C_PIN_TRYLIMIT_COL 5\r
111#define OPAL_RANDOM_METHOD_MAX_COUNT_SIZE 32\r
112\r
45df1841
ED
113// Data Removal Mechanism column.\r
114#define OPAL_ADMIN_SP_ACTIVE_DATA_REMOVAL_MECHANISM_COL 1\r
115\r
116//\r
117// Supported Data Removal Mechanism.\r
118// Detail see Pyrite SSC v2 spec.\r
119//\r
120typedef enum {\r
121 OverwriteDataErase = 0,\r
122 BlockErase,\r
123 CryptoErase,\r
124 Unmap,\r
125 ResetWritePointers,\r
126 VendorSpecificErase,\r
127 ResearvedMechanism\r
128} SUPPORTED_DATA_REMOVAL_MECHANISM;\r
129\r
79af8319
ED
130#pragma pack(1)\r
131\r
132typedef struct _OPAL_GEOMETRY_REPORTING_FEATURE {\r
133 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
134 UINT8 Reserved[8];\r
135 UINT32 LogicalBlockSizeBE;\r
136 UINT64 AlignmentGranularityBE;\r
137 UINT64 LowestAlignedLBABE;\r
138} OPAL_GEOMETRY_REPORTING_FEATURE;\r
139\r
140typedef struct _OPAL_SINGLE_USER_MODE_FEATURE {\r
141 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
142 UINT32 NumLockingObjectsSupportedBE;\r
143 UINT8 Any : 1;\r
144 UINT8 All : 1;\r
145 UINT8 Policy : 1;\r
146 UINT8 Reserved : 5;\r
147 UINT8 Reserved2[7];\r
148} OPAL_SINGLE_USER_MODE_FEATURE;\r
149\r
150typedef struct _OPAL_DATASTORE_TABLE_FEATURE {\r
151 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
152 UINT16 Reserved;\r
153 UINT16 MaxNumTablesBE;\r
154 UINT32 MaxTotalSizeBE;\r
155 UINT32 SizeAlignmentBE;\r
156} OPAL_DATASTORE_TABLE_FEATURE;\r
157\r
158typedef struct _OPAL_SSCV1_FEATURE_DESCRIPTOR {\r
159 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
160 UINT16 BaseComdIdBE;\r
161 UINT16 NumComIdsBE;\r
162 UINT8 RangeCrossing : 1;\r
163 UINT8 Reserved : 7;\r
164 UINT8 Future[11];\r
165} OPAL_SSCV1_FEATURE_DESCRIPTOR;\r
166\r
167typedef struct _OPAL_SSCV2_FEATURE_DESCRIPTOR {\r
168 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
169 UINT16 BaseComdIdBE;\r
170 UINT16 NumComIdsBE;\r
171 UINT8 Reserved;\r
172 UINT16 NumLockingSpAdminAuthoritiesSupportedBE;\r
173 UINT16 NumLockingSpUserAuthoritiesSupportedBE;\r
174 UINT8 InitialCPINSIDPIN;\r
175 UINT8 CPINSIDPINRevertBehavior;\r
176 UINT8 Future[5];\r
177} OPAL_SSCV2_FEATURE_DESCRIPTOR;\r
178\r
179typedef struct _OPAL_SSCLITE_FEATURE_DESCRIPTOR {\r
180 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
181 UINT16 BaseComdIdBE;\r
182 UINT16 NumComIdsBE;\r
183 UINT8 Reserved[5];\r
184 UINT8 InitialCPINSIDPIN;\r
185 UINT8 CPINSIDPINRevertBehavior;\r
186 UINT8 Future[5];\r
187} OPAL_SSCLITE_FEATURE_DESCRIPTOR;\r
188\r
189typedef struct _PYRITE_SSC_FEATURE_DESCRIPTOR {\r
190 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
191 UINT16 BaseComdIdBE;\r
192 UINT16 NumComIdsBE;\r
193 UINT8 Reserved[5];\r
194 UINT8 InitialCPINSIDPIN;\r
195 UINT8 CPINSIDPINRevertBehavior;\r
196 UINT8 Future[5];\r
197} PYRITE_SSC_FEATURE_DESCRIPTOR;\r
198\r
45df1841
ED
199typedef struct _PYRITE_SSCV2_FEATURE_DESCRIPTOR {\r
200 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
201 UINT16 BaseComdIdBE;\r
202 UINT16 NumComIdsBE;\r
203 UINT8 Reserved[5];\r
204 UINT8 InitialCPINSIDPIN;\r
205 UINT8 CPINSIDPINRevertBehavior;\r
206 UINT8 Future[5];\r
207} PYRITE_SSCV2_FEATURE_DESCRIPTOR;\r
208\r
209typedef struct _DATA_REMOVAL_FEATURE_DESCRIPTOR {\r
210 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
211 UINT8 Reserved;\r
212 UINT8 OperationProcessing : 1;\r
213 UINT8 Reserved2 : 7;\r
214 UINT8 RemovalMechanism;\r
215 UINT8 FormatBit0 : 1; // Data Removal Time Format for Bit 0\r
216 UINT8 FormatBit1 : 1; // Data Removal Time Format for Bit 1\r
217 UINT8 FormatBit2 : 1; // Data Removal Time Format for Bit 2\r
218 UINT8 FormatBit3 : 1; // Data Removal Time Format for Bit 3\r
219 UINT8 FormatBit4 : 1; // Data Removal Time Format for Bit 4\r
220 UINT8 FormatBit5 : 1; // Data Removal Time Format for Bit 5\r
221 UINT8 Reserved3 : 2;\r
222 UINT16 TimeBit0; // Data Removal Time for Supported Data Removal Mechanism Bit 0\r
223 UINT16 TimeBit1; // Data Removal Time for Supported Data Removal Mechanism Bit 1\r
224 UINT16 TimeBit2; // Data Removal Time for Supported Data Removal Mechanism Bit 2\r
225 UINT16 TimeBit3; // Data Removal Time for Supported Data Removal Mechanism Bit 3\r
226 UINT16 TimeBit4; // Data Removal Time for Supported Data Removal Mechanism Bit 4\r
227 UINT16 TimeBit5; // Data Removal Time for Supported Data Removal Mechanism Bit 5\r
228 UINT8 Future[16];\r
229} DATA_REMOVAL_FEATURE_DESCRIPTOR;\r
230\r
79af8319
ED
231typedef union {\r
232 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER CommonHeader;\r
233 TCG_TPER_FEATURE_DESCRIPTOR Tper;\r
234 TCG_LOCKING_FEATURE_DESCRIPTOR Locking;\r
235 OPAL_GEOMETRY_REPORTING_FEATURE Geometry;\r
236 OPAL_SINGLE_USER_MODE_FEATURE SingleUser;\r
237 OPAL_DATASTORE_TABLE_FEATURE DataStore;\r
238 OPAL_SSCV1_FEATURE_DESCRIPTOR OpalSscV1;\r
239 OPAL_SSCV2_FEATURE_DESCRIPTOR OpalSscV2;\r
240 OPAL_SSCLITE_FEATURE_DESCRIPTOR OpalSscLite;\r
241 PYRITE_SSC_FEATURE_DESCRIPTOR PyriteSsc;\r
45df1841 242 PYRITE_SSCV2_FEATURE_DESCRIPTOR PyriteSscV2;\r
19d539af 243 TCG_BLOCK_SID_FEATURE_DESCRIPTOR BlockSid;\r
45df1841 244 DATA_REMOVAL_FEATURE_DESCRIPTOR DataRemoval;\r
79af8319
ED
245} OPAL_LEVEL0_FEATURE_DESCRIPTOR;\r
246\r
247#pragma pack()\r
248\r
249#endif // _OPAL_H_\r