]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/IndustryStandard/TcgStorageOpal.h
MdePkg: Apply uncrustify changes
[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
9344f092 19SPDX-License-Identifier: BSD-2-Clause-Patent\r
79af8319
ED
20\r
21**/\r
22\r
23#ifndef _TCG_STORAGE_OPAL_H_\r
24#define _TCG_STORAGE_OPAL_H_\r
25\r
26#include <IndustryStandard/TcgStorageCore.h>\r
27\r
2f88bd3a
MK
28#define OPAL_UID_ADMIN_SP TCG_TO_UID(0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x01)\r
29#define OPAL_UID_ADMIN_SP_C_PIN_MSID TCG_TO_UID(0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x84, 0x02)\r
30#define OPAL_UID_ADMIN_SP_C_PIN_SID TCG_TO_UID(0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01)\r
31#define OPAL_UID_LOCKING_SP TCG_TO_UID(0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x02)\r
79af8319
ED
32\r
33// ADMIN_SP\r
34// Authorities\r
2f88bd3a
MK
35#define OPAL_ADMIN_SP_ANYBODY_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01)\r
36#define OPAL_ADMIN_SP_ADMINS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02)\r
37#define OPAL_ADMIN_SP_MAKERS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03)\r
38#define OPAL_ADMIN_SP_SID_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06)\r
39#define OPAL_ADMIN_SP_ADMIN1_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x02, 0x01)\r
40#define OPAL_ADMIN_SP_PSID_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFF, 0x01)\r
79af8319 41\r
2f88bd3a
MK
42#define OPAL_ADMIN_SP_ACTIVATE_METHOD TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x03)\r
43#define OPAL_ADMIN_SP_REVERT_METHOD TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x02)\r
79af8319 44\r
45df1841
ED
45// ADMIN_SP\r
46// Data Removal mechanism\r
47#define OPAL_UID_ADMIN_SP_DATA_REMOVAL_MECHANISM TCG_TO_UID(0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00, 0x01)\r
79af8319
ED
48\r
49// LOCKING SP\r
50// Authorities\r
2f88bd3a
MK
51#define OPAL_LOCKING_SP_ANYBODY_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01)\r
52#define OPAL_LOCKING_SP_ADMINS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02)\r
53#define OPAL_LOCKING_SP_ADMIN1_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x01)\r
54#define OPAL_LOCKING_SP_USERS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00, 0x00)\r
55#define OPAL_LOCKING_SP_USER1_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00, 0x01)\r
79af8319 56\r
2f88bd3a 57#define OPAL_LOCKING_SP_REVERTSP_METHOD TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11)\r
79af8319
ED
58\r
59// C_PIN Table Rows\r
2f88bd3a
MK
60#define OPAL_LOCKING_SP_C_PIN_ADMIN1 TCG_TO_UID( 0x00, 0x00, 0x00, 0x0B, 0x00, 0x01, 0x00, 0x01 )\r
61#define OPAL_LOCKING_SP_C_PIN_USER1 TCG_TO_UID( 0x00, 0x00, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x01 )\r
79af8319
ED
62\r
63// Locking Table\r
2f88bd3a
MK
64#define OPAL_LOCKING_SP_LOCKING_GLOBALRANGE TCG_TO_UID( 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x01 )\r
65#define OPAL_LOCKING_SP_LOCKING_RANGE1 TCG_TO_UID( 0x00, 0x00, 0x08, 0x02, 0x00, 0x03, 0x00, 0x01 )\r
79af8319
ED
66\r
67// LOCKING SP ACE Table Preconfiguration\r
2f88bd3a
MK
68#define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_GET_ALL TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xD0, 0x00 )\r
69#define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_SET_RDLOCKED TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xE0, 0x00 )\r
70#define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_SET_WRLOCKED TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xE8, 0x00 )\r
79af8319 71\r
2f88bd3a
MK
72#define OPAL_LOCKING_SP_ACE_K_AES_256_GLOBALRANGE_GENKEY TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xB8, 0x00 )\r
73#define OPAL_LOCKING_SP_ACE_K_AES_128_GLOBALRANGE_GENKEY TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xB0, 0x00 )\r
79af8319
ED
74\r
75// LOCKING SP LockingInfo Table Preconfiguration\r
2f88bd3a 76#define OPAL_LOCKING_SP_LOCKING_INFO TCG_TO_UID( 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x01 )\r
79af8319 77\r
2f88bd3a
MK
78#define OPAL_LOCKING_SP_LOCKINGINFO_ALIGNMENTREQUIRED_COL 0x7\r
79#define OPAL_LOCKING_SP_LOCKINGINFO_LOGICALBLOCKSIZE_COL 0x8\r
80#define OPAL_LOCKING_SP_LOCKINGINFO_ALIGNMENTGRANULARITY_COL 0x9\r
81#define OPAL_LOCKING_SP_LOCKINGINFO_LOWESTALIGNEDLBA_COL 0xA\r
79af8319
ED
82\r
83// K_AES_256 Table Preconfiguration\r
2f88bd3a 84#define OPAL_LOCKING_SP_K_AES_256_GLOBALRANGE_KEY TCG_TO_UID( 0x00, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x01 )\r
79af8319
ED
85\r
86// K_AES_128 Table Preconfiguration\r
2f88bd3a 87#define OPAL_LOCKING_SP_K_AES_128_GLOBALRANGE_KEY TCG_TO_UID( 0x00, 0x00, 0x08, 0x05, 0x00, 0x00, 0x00, 0x01 )\r
79af8319
ED
88\r
89// Minimum Properties that an Opal Compliant SD Shall support\r
2f88bd3a
MK
90#define OPAL_MIN_MAX_COM_PACKET_SIZE 2048\r
91#define OPAL_MIN_MAX_REPONSE_COM_PACKET_SIZE 2048\r
92#define OPAL_MIN_MAX_PACKET_SIZE 2028\r
93#define OPAL_MIN_MAX_IND_TOKEN_SIZE 1992\r
94#define OPAL_MIN_MAX_PACKETS 1\r
95#define OPAL_MIN_MAX_SUBPACKETS 1\r
96#define OPAL_MIN_MAX_METHODS 1\r
97#define OPAL_MIN_MAX_SESSIONS 1\r
98#define OPAL_MIN_MAX_AUTHENTICATIONS 2\r
99#define OPAL_MIN_MAX_TRANSACTION_LIMIT 1\r
100\r
101#define OPAL_ADMIN_SP_PIN_COL 3\r
102#define OPAL_LOCKING_SP_C_PIN_TRYLIMIT_COL 5\r
103#define OPAL_RANDOM_METHOD_MAX_COUNT_SIZE 32\r
79af8319 104\r
45df1841
ED
105// Data Removal Mechanism column.\r
106#define OPAL_ADMIN_SP_ACTIVE_DATA_REMOVAL_MECHANISM_COL 1\r
107\r
108//\r
109// Supported Data Removal Mechanism.\r
110// Detail see Pyrite SSC v2 spec.\r
111//\r
112typedef enum {\r
113 OverwriteDataErase = 0,\r
114 BlockErase,\r
115 CryptoErase,\r
116 Unmap,\r
117 ResetWritePointers,\r
118 VendorSpecificErase,\r
119 ResearvedMechanism\r
120} SUPPORTED_DATA_REMOVAL_MECHANISM;\r
121\r
79af8319
ED
122#pragma pack(1)\r
123\r
124typedef struct _OPAL_GEOMETRY_REPORTING_FEATURE {\r
2f88bd3a
MK
125 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
126 UINT8 Reserved[8];\r
127 UINT32 LogicalBlockSizeBE;\r
128 UINT64 AlignmentGranularityBE;\r
129 UINT64 LowestAlignedLBABE;\r
79af8319
ED
130} OPAL_GEOMETRY_REPORTING_FEATURE;\r
131\r
132typedef struct _OPAL_SINGLE_USER_MODE_FEATURE {\r
2f88bd3a
MK
133 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
134 UINT32 NumLockingObjectsSupportedBE;\r
135 UINT8 Any : 1;\r
136 UINT8 All : 1;\r
137 UINT8 Policy : 1;\r
138 UINT8 Reserved : 5;\r
139 UINT8 Reserved2[7];\r
79af8319
ED
140} OPAL_SINGLE_USER_MODE_FEATURE;\r
141\r
142typedef struct _OPAL_DATASTORE_TABLE_FEATURE {\r
2f88bd3a
MK
143 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
144 UINT16 Reserved;\r
145 UINT16 MaxNumTablesBE;\r
146 UINT32 MaxTotalSizeBE;\r
147 UINT32 SizeAlignmentBE;\r
79af8319
ED
148} OPAL_DATASTORE_TABLE_FEATURE;\r
149\r
150typedef struct _OPAL_SSCV1_FEATURE_DESCRIPTOR {\r
2f88bd3a
MK
151 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
152 UINT16 BaseComdIdBE;\r
153 UINT16 NumComIdsBE;\r
154 UINT8 RangeCrossing : 1;\r
155 UINT8 Reserved : 7;\r
156 UINT8 Future[11];\r
79af8319
ED
157} OPAL_SSCV1_FEATURE_DESCRIPTOR;\r
158\r
159typedef struct _OPAL_SSCV2_FEATURE_DESCRIPTOR {\r
2f88bd3a
MK
160 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
161 UINT16 BaseComdIdBE;\r
162 UINT16 NumComIdsBE;\r
163 UINT8 Reserved;\r
164 UINT16 NumLockingSpAdminAuthoritiesSupportedBE;\r
165 UINT16 NumLockingSpUserAuthoritiesSupportedBE;\r
166 UINT8 InitialCPINSIDPIN;\r
167 UINT8 CPINSIDPINRevertBehavior;\r
168 UINT8 Future[5];\r
79af8319
ED
169} OPAL_SSCV2_FEATURE_DESCRIPTOR;\r
170\r
171typedef struct _OPAL_SSCLITE_FEATURE_DESCRIPTOR {\r
2f88bd3a
MK
172 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
173 UINT16 BaseComdIdBE;\r
174 UINT16 NumComIdsBE;\r
175 UINT8 Reserved[5];\r
176 UINT8 InitialCPINSIDPIN;\r
177 UINT8 CPINSIDPINRevertBehavior;\r
178 UINT8 Future[5];\r
79af8319
ED
179} OPAL_SSCLITE_FEATURE_DESCRIPTOR;\r
180\r
181typedef struct _PYRITE_SSC_FEATURE_DESCRIPTOR {\r
2f88bd3a
MK
182 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
183 UINT16 BaseComdIdBE;\r
184 UINT16 NumComIdsBE;\r
185 UINT8 Reserved[5];\r
186 UINT8 InitialCPINSIDPIN;\r
187 UINT8 CPINSIDPINRevertBehavior;\r
188 UINT8 Future[5];\r
79af8319
ED
189} PYRITE_SSC_FEATURE_DESCRIPTOR;\r
190\r
45df1841 191typedef struct _PYRITE_SSCV2_FEATURE_DESCRIPTOR {\r
2f88bd3a
MK
192 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
193 UINT16 BaseComdIdBE;\r
194 UINT16 NumComIdsBE;\r
195 UINT8 Reserved[5];\r
196 UINT8 InitialCPINSIDPIN;\r
197 UINT8 CPINSIDPINRevertBehavior;\r
198 UINT8 Future[5];\r
45df1841
ED
199} PYRITE_SSCV2_FEATURE_DESCRIPTOR;\r
200\r
201typedef struct _DATA_REMOVAL_FEATURE_DESCRIPTOR {\r
2f88bd3a
MK
202 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
203 UINT8 Reserved;\r
204 UINT8 OperationProcessing : 1;\r
205 UINT8 Reserved2 : 7;\r
206 UINT8 RemovalMechanism;\r
207 UINT8 FormatBit0 : 1; // Data Removal Time Format for Bit 0\r
208 UINT8 FormatBit1 : 1; // Data Removal Time Format for Bit 1\r
209 UINT8 FormatBit2 : 1; // Data Removal Time Format for Bit 2\r
210 UINT8 FormatBit3 : 1; // Data Removal Time Format for Bit 3\r
211 UINT8 FormatBit4 : 1; // Data Removal Time Format for Bit 4\r
212 UINT8 FormatBit5 : 1; // Data Removal Time Format for Bit 5\r
213 UINT8 Reserved3 : 2;\r
214 UINT16 TimeBit0; // Data Removal Time for Supported Data Removal Mechanism Bit 0\r
215 UINT16 TimeBit1; // Data Removal Time for Supported Data Removal Mechanism Bit 1\r
216 UINT16 TimeBit2; // Data Removal Time for Supported Data Removal Mechanism Bit 2\r
217 UINT16 TimeBit3; // Data Removal Time for Supported Data Removal Mechanism Bit 3\r
218 UINT16 TimeBit4; // Data Removal Time for Supported Data Removal Mechanism Bit 4\r
219 UINT16 TimeBit5; // Data Removal Time for Supported Data Removal Mechanism Bit 5\r
220 UINT8 Future[16];\r
45df1841
ED
221} DATA_REMOVAL_FEATURE_DESCRIPTOR;\r
222\r
79af8319 223typedef union {\r
2f88bd3a
MK
224 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER CommonHeader;\r
225 TCG_TPER_FEATURE_DESCRIPTOR Tper;\r
226 TCG_LOCKING_FEATURE_DESCRIPTOR Locking;\r
227 OPAL_GEOMETRY_REPORTING_FEATURE Geometry;\r
228 OPAL_SINGLE_USER_MODE_FEATURE SingleUser;\r
229 OPAL_DATASTORE_TABLE_FEATURE DataStore;\r
230 OPAL_SSCV1_FEATURE_DESCRIPTOR OpalSscV1;\r
231 OPAL_SSCV2_FEATURE_DESCRIPTOR OpalSscV2;\r
232 OPAL_SSCLITE_FEATURE_DESCRIPTOR OpalSscLite;\r
233 PYRITE_SSC_FEATURE_DESCRIPTOR PyriteSsc;\r
234 PYRITE_SSCV2_FEATURE_DESCRIPTOR PyriteSscV2;\r
235 TCG_BLOCK_SID_FEATURE_DESCRIPTOR BlockSid;\r
236 DATA_REMOVAL_FEATURE_DESCRIPTOR DataRemoval;\r
79af8319
ED
237} OPAL_LEVEL0_FEATURE_DESCRIPTOR;\r
238\r
239#pragma pack()\r
240\r
241#endif // _OPAL_H_\r