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