2 Opal Specification defined values and structures.
4 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 #ifndef _TCG_STORAGE_OPAL_H_
16 #define _TCG_STORAGE_OPAL_H_
18 #include <IndustryStandard/TcgStorageCore.h>
20 #define OPAL_UID_ADMIN_SP TCG_TO_UID(0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x01)
21 #define OPAL_UID_ADMIN_SP_C_PIN_MSID TCG_TO_UID(0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x84, 0x02)
22 #define OPAL_UID_ADMIN_SP_C_PIN_SID TCG_TO_UID(0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01)
23 #define OPAL_UID_LOCKING_SP TCG_TO_UID(0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x02)
27 #define OPAL_ADMIN_SP_ANYBODY_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01)
28 #define OPAL_ADMIN_SP_ADMINS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02)
29 #define OPAL_ADMIN_SP_MAKERS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03)
30 #define OPAL_ADMIN_SP_SID_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06)
31 #define OPAL_ADMIN_SP_ADMIN1_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x02, 0x01)
32 #define OPAL_ADMIN_SP_PSID_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFF, 0x01)
34 #define OPAL_ADMIN_SP_ACTIVATE_METHOD TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x03)
35 #define OPAL_ADMIN_SP_REVERT_METHOD TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x02)
40 #define OPAL_LOCKING_SP_ANYBODY_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01)
41 #define OPAL_LOCKING_SP_ADMINS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02)
42 #define OPAL_LOCKING_SP_ADMIN1_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x01)
43 #define OPAL_LOCKING_SP_USERS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00, 0x00)
44 #define OPAL_LOCKING_SP_USER1_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00, 0x01)
46 #define OPAL_LOCKING_SP_REVERTSP_METHOD TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11)
49 #define OPAL_LOCKING_SP_C_PIN_ADMIN1 TCG_TO_UID( 0x00, 0x00, 0x00, 0x0B, 0x00, 0x01, 0x00, 0x01 )
50 #define OPAL_LOCKING_SP_C_PIN_USER1 TCG_TO_UID( 0x00, 0x00, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x01 )
53 #define OPAL_LOCKING_SP_LOCKING_GLOBALRANGE TCG_TO_UID( 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x01 )
54 #define OPAL_LOCKING_SP_LOCKING_RANGE1 TCG_TO_UID( 0x00, 0x00, 0x08, 0x02, 0x00, 0x03, 0x00, 0x01 )
57 // LOCKING SP ACE Table Preconfiguration
58 #define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_GET_ALL TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xD0, 0x00 )
59 #define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_SET_RDLOCKED TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xE0, 0x00 )
60 #define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_SET_WRLOCKED TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xE8, 0x00 )
62 #define OPAL_LOCKING_SP_ACE_K_AES_256_GLOBALRANGE_GENKEY TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xB8, 0x00 )
63 #define OPAL_LOCKING_SP_ACE_K_AES_128_GLOBALRANGE_GENKEY TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xB0, 0x00 )
66 // LOCKING SP LockingInfo Table Preconfiguration
67 #define OPAL_LOCKING_SP_LOCKING_INFO TCG_TO_UID( 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x01 )
69 #define OPAL_LOCKING_SP_LOCKINGINFO_ALIGNMENTREQUIRED_COL 0x7
70 #define OPAL_LOCKING_SP_LOCKINGINFO_LOGICALBLOCKSIZE_COL 0x8
71 #define OPAL_LOCKING_SP_LOCKINGINFO_ALIGNMENTGRANULARITY_COL 0x9
72 #define OPAL_LOCKING_SP_LOCKINGINFO_LOWESTALIGNEDLBA_COL 0xA
74 // K_AES_256 Table Preconfiguration
75 #define OPAL_LOCKING_SP_K_AES_256_GLOBALRANGE_KEY TCG_TO_UID( 0x00, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x01 )
77 // K_AES_128 Table Preconfiguration
78 #define OPAL_LOCKING_SP_K_AES_128_GLOBALRANGE_KEY TCG_TO_UID( 0x00, 0x00, 0x08, 0x05, 0x00, 0x00, 0x00, 0x01 )
80 // Minimum Properties that an Opal Compliant SD Shall support
81 #define OPAL_MIN_MAX_COM_PACKET_SIZE 2048
82 #define OPAL_MIN_MAX_REPONSE_COM_PACKET_SIZE 2048
83 #define OPAL_MIN_MAX_PACKET_SIZE 2028
84 #define OPAL_MIN_MAX_IND_TOKEN_SIZE 1992
85 #define OPAL_MIN_MAX_PACKETS 1
86 #define OPAL_MIN_MAX_SUBPACKETS 1
87 #define OPAL_MIN_MAX_METHODS 1
88 #define OPAL_MIN_MAX_SESSIONS 1
89 #define OPAL_MIN_MAX_AUTHENTICATIONS 2
90 #define OPAL_MIN_MAX_TRANSACTION_LIMIT 1
92 #define OPAL_ADMIN_SP_PIN_COL 3
93 #define OPAL_LOCKING_SP_C_PIN_TRYLIMIT_COL 5
94 #define OPAL_RANDOM_METHOD_MAX_COUNT_SIZE 32
98 typedef struct _OPAL_GEOMETRY_REPORTING_FEATURE
{
99 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header
;
101 UINT32 LogicalBlockSizeBE
;
102 UINT64 AlignmentGranularityBE
;
103 UINT64 LowestAlignedLBABE
;
104 } OPAL_GEOMETRY_REPORTING_FEATURE
;
106 typedef struct _OPAL_SINGLE_USER_MODE_FEATURE
{
107 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header
;
108 UINT32 NumLockingObjectsSupportedBE
;
114 } OPAL_SINGLE_USER_MODE_FEATURE
;
116 typedef struct _OPAL_DATASTORE_TABLE_FEATURE
{
117 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header
;
119 UINT16 MaxNumTablesBE
;
120 UINT32 MaxTotalSizeBE
;
121 UINT32 SizeAlignmentBE
;
122 } OPAL_DATASTORE_TABLE_FEATURE
;
124 typedef struct _OPAL_SSCV1_FEATURE_DESCRIPTOR
{
125 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header
;
128 UINT8 RangeCrossing
: 1;
131 } OPAL_SSCV1_FEATURE_DESCRIPTOR
;
133 typedef struct _OPAL_SSCV2_FEATURE_DESCRIPTOR
{
134 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header
;
138 UINT16 NumLockingSpAdminAuthoritiesSupportedBE
;
139 UINT16 NumLockingSpUserAuthoritiesSupportedBE
;
140 UINT8 InitialCPINSIDPIN
;
141 UINT8 CPINSIDPINRevertBehavior
;
143 } OPAL_SSCV2_FEATURE_DESCRIPTOR
;
145 typedef struct _OPAL_SSCLITE_FEATURE_DESCRIPTOR
{
146 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header
;
150 UINT8 InitialCPINSIDPIN
;
151 UINT8 CPINSIDPINRevertBehavior
;
153 } OPAL_SSCLITE_FEATURE_DESCRIPTOR
;
155 typedef struct _PYRITE_SSC_FEATURE_DESCRIPTOR
{
156 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header
;
160 UINT8 InitialCPINSIDPIN
;
161 UINT8 CPINSIDPINRevertBehavior
;
163 } PYRITE_SSC_FEATURE_DESCRIPTOR
;
166 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER CommonHeader
;
167 TCG_TPER_FEATURE_DESCRIPTOR Tper
;
168 TCG_LOCKING_FEATURE_DESCRIPTOR Locking
;
169 OPAL_GEOMETRY_REPORTING_FEATURE Geometry
;
170 OPAL_SINGLE_USER_MODE_FEATURE SingleUser
;
171 OPAL_DATASTORE_TABLE_FEATURE DataStore
;
172 OPAL_SSCV1_FEATURE_DESCRIPTOR OpalSscV1
;
173 OPAL_SSCV2_FEATURE_DESCRIPTOR OpalSscV2
;
174 OPAL_SSCLITE_FEATURE_DESCRIPTOR OpalSscLite
;
175 PYRITE_SSC_FEATURE_DESCRIPTOR PyriteSsc
;
176 } OPAL_LEVEL0_FEATURE_DESCRIPTOR
;