SecurityPkg[all]  0.98
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
TcgStorageOpalLib.h File Reference

Data Structures

struct  OPAL_DISK_SUPPORT_ATTRIBUTE
 
struct  OPAL_SESSION
 

Enumerations

enum  OPAL_OWNER_SHIP { OpalOwnershipUnknown, OpalOwnershipNobody }
 

Functions

TCG_RESULT EFIAPI OpalRetrieveSupportedProtocolList (OPAL_SESSION *Session, UINTN BufferSize, VOID *BuffAddress)
 
TCG_RESULT EFIAPI OpalRetrieveLevel0DiscoveryHeader (OPAL_SESSION *Session, UINTN BufferSize, VOID *BuffAddress)
 
TCG_RESULT EFIAPI OpalStartSession (OPAL_SESSION *Session, TCG_UID SpId, BOOLEAN Write, UINT32 HostChallengeLength, const VOID *HostChallenge, TCG_UID HostSigningAuthority, UINT8 *MethodStatus)
 
TCG_RESULT EFIAPI OpalEndSession (OPAL_SESSION *Session)
 
TCG_RESULT EFIAPI OpalPsidRevert (OPAL_SESSION *AdminSpSession)
 
TCG_RESULT EFIAPI OpalGetMsid (OPAL_SESSION *AdminSpSession, UINT32 MsidBufferSize, UINT8 *Msid, UINT32 *MsidLength)
 
TCG_RESULT EFIAPI OpalActivateLockingSp (OPAL_SESSION *AdminSpSession, UINT8 *MethodStatus)
 
TCG_RESULT EFIAPI OpalSetPassword (OPAL_SESSION *Session, TCG_UID CpinRowUid, const VOID *NewPin, UINT32 NewPinLength, UINT8 *MethodStatus)
 
TCG_RESULT EFIAPI OpalGlobalLockingRangeGenKey (OPAL_SESSION *LockingSpSession, UINT8 *MethodStatus)
 
TCG_RESULT EFIAPI OpalUpdateGlobalLockingRange (OPAL_SESSION *LockingSpSession, BOOLEAN ReadLocked, BOOLEAN WriteLocked, UINT8 *MethodStatus)
 
TCG_RESULT EFIAPI OpalSetLockingRange (OPAL_SESSION *LockingSpSession, TCG_UID LockingRangeUid, UINT64 RangeStart, UINT64 RangeLength, BOOLEAN ReadLockEnabled, BOOLEAN WriteLockEnabled, BOOLEAN ReadLocked, BOOLEAN WriteLocked, UINT8 *MethodStatus)
 
TCG_RESULT EFIAPI OpalSetLockingSpAuthorityEnabledAndPin (OPAL_SESSION *LockingSpSession, TCG_UID CpinRowUid, TCG_UID AuthorityUid, const VOID *NewPin, UINT32 NewPinLength, UINT8 *MethodStatus)
 
TCG_RESULT EFIAPI OpalDisableUser (OPAL_SESSION *LockingSpSession, UINT8 *MethodStatus)
 
TCG_RESULT EFIAPI OpalAdminRevert (OPAL_SESSION *LockingSpSession, BOOLEAN KeepUserData, UINT8 *MethodStatus)
 
TCG_RESULT EFIAPI OpalGetTryLimit (OPAL_SESSION *LockingSpSession, TCG_UID RowUid, UINT32 *TryLimit)
 
TCG_RESULT EFIAPI OpalCreateRetrieveGlobalLockingRangeActiveKey (const OPAL_SESSION *Session, TCG_CREATE_STRUCT *CreateStruct, UINT32 *Size)
 
TCG_RESULT EFIAPI OpalParseRetrieveGlobalLockingRangeActiveKey (TCG_PARSE_STRUCT *ParseStruct, TCG_UID *ActiveKey)
 
TCG_RESULT EFIAPI OpalGetLockingInfo (OPAL_SESSION *Session, TCG_LOCKING_FEATURE_DESCRIPTOR *LockingFeature)
 
BOOLEAN EFIAPI OpalFeatureSupported (OPAL_DISK_SUPPORT_ATTRIBUTE *SupportedAttributes)
 
BOOLEAN EFIAPI OpalFeatureEnabled (OPAL_DISK_SUPPORT_ATTRIBUTE *SupportedAttributes, TCG_LOCKING_FEATURE_DESCRIPTOR *LockingFeature)
 
BOOLEAN OpalDeviceLocked (OPAL_DISK_SUPPORT_ATTRIBUTE *SupportedAttributes, TCG_LOCKING_FEATURE_DESCRIPTOR *LockingFeature)
 
TCG_RESULT EFIAPI OpalBlockSid (OPAL_SESSION *Session, BOOLEAN HardwareReset)
 
TCG_RESULT EFIAPI OpalGetSupportedAttributesInfo (OPAL_SESSION *Session, OPAL_DISK_SUPPORT_ATTRIBUTE *SupportedAttributes, UINT16 *OpalBaseComId)
 
TCG_RESULT EFIAPI OpalUtilPsidRevert (OPAL_SESSION *AdminSpSession, const VOID *Psid, UINT32 PsidLength)
 
TCG_RESULT EFIAPI OpalUtilSetAdminPasswordAsSid (OPAL_SESSION *AdminSpSession, const VOID *GeneratedSid, UINT32 SidLength, const VOID *Password, UINT32 PassLength)
 
TCG_RESULT EFIAPI OpalUtilSetOpalLockingRange (OPAL_SESSION *LockingSpSession, const VOID *Password, UINT32 PassLength, TCG_UID LockingRangeUid, UINT64 RangeStart, UINT64 RangeLength, BOOLEAN ReadLockEnabled, BOOLEAN WriteLockEnabled, BOOLEAN ReadLocked, BOOLEAN WriteLocked)
 
TCG_RESULT EFIAPI OpalUtilSetAdminPassword (OPAL_SESSION *AdminSpSession, const VOID *OldPassword, UINT32 OldPasswordLength, const VOID *NewPassword, UINT32 NewPasswordLength)
 
TCG_RESULT EFIAPI OpalUtilSetUserPassword (OPAL_SESSION *LockingSpSession, const VOID *OldPassword, UINT32 OldPasswordLength, const VOID *NewPassword, UINT32 NewPasswordLength)
 
TCG_RESULT EFIAPI OpalUtilVerifyPassword (OPAL_SESSION *LockingSpSession, const VOID *Password, UINT32 PasswordLength, TCG_UID HostSigningAuthority)
 
TCG_RESULT EFIAPI OpalUtilSecureErase (OPAL_SESSION *LockingSpSession, const VOID *Password, UINT32 PasswordLength, BOOLEAN *PasswordFailed)
 
TCG_RESULT EFIAPI OpalUtilDisableUser (OPAL_SESSION *LockingSpSession, const VOID *Password, UINT32 PasswordLength, BOOLEAN *PasswordFailed)
 
TCG_RESULT EFIAPI OpalUtilRevert (OPAL_SESSION *LockingSpSession, BOOLEAN KeepUserData, const VOID *Password, UINT32 PasswordLength, BOOLEAN *PasswordFailed, UINT8 *Msid, UINT32 MsidLength)
 
TCG_RESULT EFIAPI OpalUtilSetSIDtoMSID (OPAL_SESSION *AdminSpSession, const VOID *Password, UINT32 PasswordLength, UINT8 *Msid, UINT32 MsidLength)
 
TCG_RESULT EFIAPI OpalUtilUpdateGlobalLockingRange (OPAL_SESSION *LockingSpSession, const VOID *Password, UINT32 PasswordLength, BOOLEAN ReadLocked, BOOLEAN WriteLocked)
 
TCG_RESULT EFIAPI OpalUtilGetMsid (OPAL_SESSION *Session, UINT8 *Msid, UINT32 MsidBufferLength, UINT32 *MsidLength)
 
OPAL_OWNER_SHIP EFIAPI OpalUtilDetermineOwnership (OPAL_SESSION *Session, UINT8 *Msid, UINT32 MsidLength)
 
BOOLEAN EFIAPI OpalUtilAdminPasswordExists (IN UINT16 OwnerShip, IN TCG_LOCKING_FEATURE_DESCRIPTOR *LockingFeature)
 
TCG_RESULT EFIAPI OpalUtilGetActiveDataRemovalMechanism (OPAL_SESSION *Session, const VOID *GeneratedSid, UINT32 SidLength, UINT8 *ActiveDataRemovalMechanism)
 
TCG_RESULT EFIAPI OpalUtilGetDataRemovalMechanismLists (IN OPAL_SESSION *Session, OUT UINT32 *RemovalMechanismLists)
 

Detailed Description

Public API for Opal Core library.

(TCG Storage Architecture Core Specification, Version 2.01, Revision 1.00, https://trustedcomputinggroup.org/tcg-storage-architecture-core-specification/

Storage Work Group Storage Security Subsystem Class: Pyrite, Specification Version 2.00, Revision 1.00, https://trustedcomputinggroup.org/resource/tcg-storage-security-subsystem-class-pyrite/

Storage Work Group Storage Security Subsystem Class: Opal, Version 2.01 Final, Revision 1.00, https://trustedcomputinggroup.org/storage-work-group-storage-security-subsystem-class-opal/

TCG Storage Security Subsystem Class: Opalite Version 1.00 Revision 1.00, https://trustedcomputinggroup.org/tcg-storage-security-subsystem-class-opalite/

TCG Storage Feature Set: Block SID Authentication, Version 1.00 Final, Revision 1.00, https://trustedcomputinggroup.org/tcg-storage-feature-set-block-sid-authentication-specification/

TCG Storage Opal SSC Feature Set: PSID Version 1.00, Revision 1.00, https://trustedcomputinggroup.org/tcg-storage-opal-feature-set-psid/)

Check http://trustedcomputinggroup.org for latest specification updates.

Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Enumeration Type Documentation

Enumerator
OpalOwnershipUnknown 
OpalOwnershipNobody 

Function Documentation

TCG_RESULT EFIAPI OpalActivateLockingSp ( OPAL_SESSION AdminSpSession,
UINT8 *  MethodStatus 
)

The function activates the Locking SP. Once activated, per Opal spec, the ADMIN SP SID PIN is copied over to the ADMIN1 LOCKING SP PIN. If the Locking SP is already enabled, then TcgResultSuccess is returned and no action occurs.

Parameters
[in]AdminSpSessionOPAL_SESSION with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_SID_AUTHORITY to activate Locking SP
in/out]MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
TCG_RESULT EFIAPI OpalAdminRevert ( OPAL_SESSION LockingSpSession,
BOOLEAN  KeepUserData,
UINT8 *  MethodStatus 
)

The function calls the Admin SP RevertSP method on the Locking SP. If KeepUserData is True, then the optional parameter to keep the user data is set to True, otherwise the optional parameter is not provided.

Parameters
[in]LockingSpSessionOPAL_SESSION with OPAL_UID_LOCKING_SP as OPAL_LOCKING_SP_ADMIN1_AUTHORITY to revertSP
[in]KeepUserDataSpecifies whether or not to keep user data when performing RevertSP action. True = keeps user data.
in/out]MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
TCG_RESULT EFIAPI OpalBlockSid ( OPAL_SESSION Session,
BOOLEAN  HardwareReset 
)

Trig the block sid action.

Parameters
[in]SessionOPAL_SESSION to populate command for, needs comId
[in]HardwareResetWhether need to do hardware reset.
TCG_RESULT EFIAPI OpalCreateRetrieveGlobalLockingRangeActiveKey ( const OPAL_SESSION Session,
TCG_CREATE_STRUCT CreateStruct,
UINT32 *  Size 
)

The function populates the CreateStruct with a payload that will retrieve the global locking range active key. It is intended to be called with a session that is already started with a valid credential. The function does not send the payload.

Parameters
[in]SessionOPAL_SESSION to populate command for, needs comId
in/out]CreateStruct Structure to populate with encoded TCG command
in/out]Size Size in bytes of the command created.
BOOLEAN OpalDeviceLocked ( OPAL_DISK_SUPPORT_ATTRIBUTE SupportedAttributes,
TCG_LOCKING_FEATURE_DESCRIPTOR *  LockingFeature 
)

The function returns whether or not the device is Opal Locked. TRUE means that the device is partially or fully locked. This will perform a Level 0 Discovery and parse the locking feature descriptor

Parameters
[in]SupportedAttributesOpal device attribute.
[in]LockingFeatureOpal device locking status.
TCG_RESULT EFIAPI OpalDisableUser ( OPAL_SESSION LockingSpSession,
UINT8 *  MethodStatus 
)

The function sets the Enabled column to FALSE for the USER1 authority.

Parameters
[in]LockingSpSessionOPAL_SESSION with OPAL_UID_LOCKING_SP as OPAL_LOCKING_SP_ADMIN1_AUTHORITY to disable User1
in/out]MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
TCG_RESULT EFIAPI OpalEndSession ( OPAL_SESSION Session)

Close a session opened with OpalStartSession.

Parameters
in/out]Session OPAL_SESSION to end.
BOOLEAN EFIAPI OpalFeatureEnabled ( OPAL_DISK_SUPPORT_ATTRIBUTE SupportedAttributes,
TCG_LOCKING_FEATURE_DESCRIPTOR *  LockingFeature 
)

The function returns whether or not the device is Opal Enabled. TRUE means that the device is partially or fully locked. This will perform a Level 0 Discovery and parse the locking feature descriptor

Parameters
[in]SupportedAttributesOpal device attribute.
[in]LockingFeatureOpal device locking status.
BOOLEAN EFIAPI OpalFeatureSupported ( OPAL_DISK_SUPPORT_ATTRIBUTE SupportedAttributes)

The function determines whether or not all of the requirements for the Opal Feature (not full specification) are met by the specified device.

Parameters
[in]SupportedAttributesOpal device attribute.
TCG_RESULT EFIAPI OpalGetLockingInfo ( OPAL_SESSION Session,
TCG_LOCKING_FEATURE_DESCRIPTOR *  LockingFeature 
)

Get the support attribute info.

Parameters
[in]SessionOPAL_SESSION with OPAL_UID_LOCKING_SP to retrieve info.
in/out]LockingFeature Return the Locking info.
TCG_RESULT EFIAPI OpalGetMsid ( OPAL_SESSION AdminSpSession,
UINT32  MsidBufferSize,
UINT8 *  Msid,
UINT32 *  MsidLength 
)

The function retrieves the MSID from the device specified

Parameters
[in]AdminSpSessionOPAL_SESSION with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_PSID_AUTHORITY to perform PSID revert.
[in]MsidBufferSizeAllocated buffer size (in bytes) for MSID allocated by caller
[in]MsidVariable length byte sequence representing MSID of device
[in]MsidLengthActual length of MSID retrieved from device
TCG_RESULT EFIAPI OpalGetSupportedAttributesInfo ( OPAL_SESSION Session,
OPAL_DISK_SUPPORT_ATTRIBUTE SupportedAttributes,
UINT16 *  OpalBaseComId 
)

Get the support attribute info.

Parameters
[in]SessionOPAL_SESSION with OPAL_UID_LOCKING_SP to retrieve info.
in/out]SupportedAttributes Return the support attribute info.
[out]OpalBaseComIdReturn the base com id info.
TCG_RESULT EFIAPI OpalGetTryLimit ( OPAL_SESSION LockingSpSession,
TCG_UID  RowUid,
UINT32 *  TryLimit 
)

The function retrieves the TryLimit column for the specified rowUid (authority).

Parameters
[in]LockingSpSessionOPAL_SESSION with OPAL_UID_LOCKING_SP to retrieve try limit
[in]RowUidRow UID of the Locking SP C_PIN table to retrieve TryLimit column
in/out]TryLimit Value from TryLimit column
TCG_RESULT EFIAPI OpalGlobalLockingRangeGenKey ( OPAL_SESSION LockingSpSession,
UINT8 *  MethodStatus 
)

The function retrieves the active key of the global locking range and calls the GenKey method on the active key retrieved.

Parameters
[in]LockingSpSessionOPAL_SESSION with OPAL_UID_LOCKING_SP to generate key
in/out]MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
TCG_RESULT EFIAPI OpalParseRetrieveGlobalLockingRangeActiveKey ( TCG_PARSE_STRUCT ParseStruct,
TCG_UID *  ActiveKey 
)

The function acquires the activeKey specified for the Global Locking Range from the parseStruct.

Parameters
[in]ParseStructStructure that contains the device's response with the activekey
in/out]ActiveKey The UID of the active key retrieved
TCG_RESULT EFIAPI OpalPsidRevert ( OPAL_SESSION AdminSpSession)

Reverts device using Admin SP Revert method.

Parameters
[in]AdminSpSessionOPAL_SESSION with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_PSID_AUTHORITY to perform PSID revert.
TCG_RESULT EFIAPI OpalRetrieveLevel0DiscoveryHeader ( OPAL_SESSION Session,
UINTN  BufferSize,
VOID *  BuffAddress 
)

The function fills in the provided Buffer with the level 0 discovery Header of the device specified.

Parameters
[in]SessionOPAL_SESSION data.
[in]BufferSizeSize of Buffer provided (in bytes)
[in]BuffAddressBuffer address to fill with Level 0 Discovery response
TCG_RESULT EFIAPI OpalRetrieveSupportedProtocolList ( OPAL_SESSION Session,
UINTN  BufferSize,
VOID *  BuffAddress 
)

The function fills in the provided Buffer with the supported protocol list of the device specified.

Parameters
[in]SessionOPAL_SESSION data.
[in]BufferSizeSize of Buffer provided (in bytes)
[in]BuffAddressBuffer address to fill with security protocol list
TCG_RESULT EFIAPI OpalSetLockingRange ( OPAL_SESSION LockingSpSession,
TCG_UID  LockingRangeUid,
UINT64  RangeStart,
UINT64  RangeLength,
BOOLEAN  ReadLockEnabled,
BOOLEAN  WriteLockEnabled,
BOOLEAN  ReadLocked,
BOOLEAN  WriteLocked,
UINT8 *  MethodStatus 
)

The function updates the RangeStart, RangeLength, ReadLockedEnabled, WriteLockedEnabled, ReadLocked and WriteLocked columns of the specified Locking Range. This function requires admin authority of a locking SP session.

Parameters
[in]LockingSpSessionOPAL_SESSION with OPAL_UID_LOCKING_SP to generate key
[in]LockingRangeUidLocking range UID to set values
[in]RangeStartValue to set RangeStart column for Locking Range
[in]RangeLengthValue to set RangeLength column for Locking Range
[in]ReadLockEnabledValue to set readLockEnabled column for Locking Range
[in]WriteLockEnabledValue to set writeLockEnabled column for Locking Range
[in]ReadLockedValue to set ReadLocked column for Locking Range
[in]WriteLockedValue to set WriteLocked column for Locking Range
in/out]MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
TCG_RESULT EFIAPI OpalSetLockingSpAuthorityEnabledAndPin ( OPAL_SESSION LockingSpSession,
TCG_UID  CpinRowUid,
TCG_UID  AuthorityUid,
const VOID *  NewPin,
UINT32  NewPinLength,
UINT8 *  MethodStatus 
)

The function sets the Enabled column to TRUE for the authorityUid provided and updates the PIN column for the cpinRowUid provided using the newPin provided. AuthorityUid and cpinRowUid should describe the same authority.

Parameters
[in]LockingSpSessionOPAL_SESSION with OPAL_UID_LOCKING_SP as OPAL_LOCKING_SP_ADMIN1_AUTHORITY to update
[in]CpinRowUidRow UID of C_PIN table of Locking SP to update PIN
[in]AuthorityUidUID of Locking SP authority to update Pin column with
[in]NewPinNew Password used to set Pin column
[in]NewPinLengthLength in bytes of new password
in/out]MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
TCG_RESULT EFIAPI OpalSetPassword ( OPAL_SESSION Session,
TCG_UID  CpinRowUid,
const VOID *  NewPin,
UINT32  NewPinLength,
UINT8 *  MethodStatus 
)

The function sets the PIN column of the specified cpinRowUid (authority) with the newPin value.

Parameters
in/out]Session OPAL_SESSION to set password
[in]CpinRowUidUID of row (authority) to update PIN column
[in]NewPinNew Pin to set for cpinRowUid specified
[in]NewPinLengthLength in bytes of newPin
in/out]MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
TCG_RESULT EFIAPI OpalStartSession ( OPAL_SESSION Session,
TCG_UID  SpId,
BOOLEAN  Write,
UINT32  HostChallengeLength,
const VOID *  HostChallenge,
TCG_UID  HostSigningAuthority,
UINT8 *  MethodStatus 
)

Starts a session with a security provider (SP).

If a session is started successfully, the caller must end the session with OpalEndSession when finished performing Opal actions.

Parameters
in/out]Session OPAL_SESSION to initialize.
[in]SpIdSecurity provider ID to start the session with.
[in]WriteWhether the session should be read-only (FALSE) or read/write (TRUE).
[in]HostChallengeLengthLength of the host challenge. Length should be 0 if hostChallenge is NULL
[in]HostChallengeHost challenge for Host Signing Authority. If NULL, then no Host Challenge will be sent.
[in]HostSigningAuthorityHost Signing Authority used for start session. If NULL, then no Host Signing Authority will be sent.
in/out]MethodStatus Status of the StartSession method; only valid if TcgResultSuccess is returned.
Returns
TcgResultSuccess indicates that the function completed without any internal errors. The caller must inspect the MethodStatus field to determine whether the method completed successfully.
TCG_RESULT EFIAPI OpalUpdateGlobalLockingRange ( OPAL_SESSION LockingSpSession,
BOOLEAN  ReadLocked,
BOOLEAN  WriteLocked,
UINT8 *  MethodStatus 
)

The function updates the ReadLocked and WriteLocked columns of the Global Locking Range. This function is required for a user1 authority, since a user1 authority shall only have access to ReadLocked and WriteLocked columns (not ReadLockEnabled and WriteLockEnabled columns).

Parameters
[in]LockingSpSessionOPAL_SESSION with OPAL_UID_LOCKING_SP to generate key
[in]ReadLockedValue to set ReadLocked column for Global Locking Range
[in]WriteLockedValue to set WriteLocked column for Global Locking Range
in/out]MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
BOOLEAN EFIAPI OpalUtilAdminPasswordExists ( IN UINT16  OwnerShip,
IN TCG_LOCKING_FEATURE_DESCRIPTOR *  LockingFeature 
)

The function returns if admin password exists.

Parameters
[in]OwnerShipThe owner ship of the opal device.
[in]LockingFeatureThe locking info of the opal device.
Return values
TRUEAdmin password existed.
FALSEAdmin password not existed.
OPAL_OWNER_SHIP EFIAPI OpalUtilDetermineOwnership ( OPAL_SESSION Session,
UINT8 *  Msid,
UINT32  MsidLength 
)

The function determines who owns the device by attempting to start a session with different credentials. If the SID PIN matches the MSID PIN, the no one owns the device. If the SID PIN matches the ourSidPin, then "Us" owns the device. Otherwise it is unknown.

Parameters
[in]SessionThe session info for one opal device.
Msid,TheMsid info.
MsidLength,Thedata length for Msid.
TCG_RESULT EFIAPI OpalUtilDisableUser ( OPAL_SESSION LockingSpSession,
const VOID *  Password,
UINT32  PasswordLength,
BOOLEAN PasswordFailed 
)

Starts a session with OPAL_UID_LOCKING_SP as OPAL_LOCKING_SP_ADMIN1_AUTHORITY and disables the User1 authority.

Parameters
[in]LockingSpSessionOPAL_SESSION to populate command for, needs comId
[in]PasswordAdmin password
[in]PasswordLengthLength of password in bytes
in/out]PasswordFailed indicates if password failed (start session didn't work)
TCG_RESULT EFIAPI OpalUtilGetActiveDataRemovalMechanism ( OPAL_SESSION Session,
const VOID *  GeneratedSid,
UINT32  SidLength,
UINT8 *  ActiveDataRemovalMechanism 
)

Get Active Data Removal Mechanism Value.

Parameters
[in]Session,Thesession info for one opal device.
[in]GeneratedSidGenerated SID of disk
[in]SidLengthLength of generatedSid in bytes
[out]ActiveDataRemovalMechanismReturn the active data removal mechanism.
TCG_RESULT EFIAPI OpalUtilGetDataRemovalMechanismLists ( IN OPAL_SESSION Session,
OUT UINT32 *  RemovalMechanismLists 
)

Get the supported Data Removal Mechanism list.

Parameters
[in]Session,Thesession info for one opal device.
[out]RemovalMechanismListsReturn the supported data removal mechanism lists.
TCG_RESULT EFIAPI OpalUtilGetMsid ( OPAL_SESSION Session,
UINT8 *  Msid,
UINT32  MsidBufferLength,
UINT32 *  MsidLength 
)

Update global locking range.

Parameters
Session,Thesession info for one opal device.
Msid,Thedata buffer to save Msid info.
MsidBufferLength,Thedata buffer length for Msid.
MsidLength,Theactual data length for Msid.
TCG_RESULT EFIAPI OpalUtilPsidRevert ( OPAL_SESSION AdminSpSession,
const VOID *  Psid,
UINT32  PsidLength 
)

Creates a session with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_PSID_AUTHORITY, then reverts device using Admin SP Revert method.

Parameters
[in]AdminSpSessionOPAL_SESSION to populate command for, needs comId
[in]PsidPSID of device to revert.
[in]PsidLengthLength of PSID in bytes.
TCG_RESULT EFIAPI OpalUtilRevert ( OPAL_SESSION LockingSpSession,
BOOLEAN  KeepUserData,
const VOID *  Password,
UINT32  PasswordLength,
BOOLEAN PasswordFailed,
UINT8 *  Msid,
UINT32  MsidLength 
)

Opens a session with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_PSID_AUTHORITY, then reverts the device using the RevertSP method.

Parameters
[in]LockingSpSessionOPAL_SESSION to populate command for, needs comId
[in]KeepUserDataTRUE to keep existing Data on the disk, or FALSE to erase it
[in]PasswordAdmin password
[in]PasswordLengthLength of password in bytes
in/out]PasswordFailed indicates if password failed (start session didn't work)
[in]MsidInput Msid info.
[in]MsidLengthInput Msid info length.
TCG_RESULT EFIAPI OpalUtilSecureErase ( OPAL_SESSION LockingSpSession,
const VOID *  Password,
UINT32  PasswordLength,
BOOLEAN PasswordFailed 
)

Starts a session with OPAL_UID_LOCKING_SP as OPAL_LOCKING_SP_USER1_AUTHORITY or OPAL_LOCKING_SP_ADMIN1_AUTHORITY and generates a new global locking range key to erase the Data.

Parameters
[in]LockingSpSessionOPAL_SESSION to populate command for, needs comId
[in]PasswordAdmin or user password
[in]PasswordLengthLength of password in bytes
in/out]PasswordFailed indicates if password failed (start session didn't work)
TCG_RESULT EFIAPI OpalUtilSetAdminPassword ( OPAL_SESSION AdminSpSession,
const VOID *  OldPassword,
UINT32  OldPasswordLength,
const VOID *  NewPassword,
UINT32  NewPasswordLength 
)

Opens a session with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_SID_AUTHORITY, sets OPAL_UID_ADMIN_SP_C_PIN_SID with the new password, and sets OPAL_LOCKING_SP_C_PIN_ADMIN1 with the new password.

Parameters
[in]AdminSpSessionOPAL_SESSION to populate command for, needs comId
[in]OldPasswordCurrent admin password
[in]OldPasswordLengthLength of current admin password in bytes
[in]NewPasswordNew admin password to set
[in]NewPasswordLengthLength of new password in bytes
TCG_RESULT EFIAPI OpalUtilSetAdminPasswordAsSid ( OPAL_SESSION AdminSpSession,
const VOID *  GeneratedSid,
UINT32  SidLength,
const VOID *  Password,
UINT32  PassLength 
)

Opens a session with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_SID_AUTHORITY, sets the OPAL_UID_ADMIN_SP_C_PIN_SID column with the new password, and activates the locking SP to copy SID PIN to Admin1 Locking SP PIN.

Parameters
[in]AdminSpSessionOPAL_SESSION to populate command for, needs comId
[in]GeneratedSidGenerated SID of disk
[in]SidLengthLength of generatedSid in bytes
[in]PasswordNew admin password to set
[in]PassLengthLength of password in bytes
TCG_RESULT EFIAPI OpalUtilSetOpalLockingRange ( OPAL_SESSION LockingSpSession,
const VOID *  Password,
UINT32  PassLength,
TCG_UID  LockingRangeUid,
UINT64  RangeStart,
UINT64  RangeLength,
BOOLEAN  ReadLockEnabled,
BOOLEAN  WriteLockEnabled,
BOOLEAN  ReadLocked,
BOOLEAN  WriteLocked 
)

Opens a session with OPAL_UID_LOCKING_SP as OPAL_LOCKING_SP_ADMIN1_AUTHORITY, and updates the specified locking range with the provided column values.

Parameters
[in]LockingSpSessionOPAL_SESSION to populate command for, needs comId
[in]PasswordNew admin password to set
[in]PassLengthLength of password in bytes
[in]LockingRangeUidLocking range UID to set values
[in]RangeStartValue to set RangeStart column for Locking Range
[in]RangeLengthValue to set RangeLength column for Locking Range
[in]ReadLockEnabledValue to set readLockEnabled column for Locking Range
[in]WriteLockEnabledValue to set writeLockEnabled column for Locking Range
[in]ReadLockedValue to set ReadLocked column for Locking Range
[in]WriteLockedValue to set WriteLocked column for Locking Range
TCG_RESULT EFIAPI OpalUtilSetSIDtoMSID ( OPAL_SESSION AdminSpSession,
const VOID *  Password,
UINT32  PasswordLength,
UINT8 *  Msid,
UINT32  MsidLength 
)

After revert success, set SID to MSID.

Parameters
[in]AdminSpSessionOPAL_SESSION to populate command for, needs comId
Password,Inputpassword info.
PasswordLength,Inputpassword length.
[in]MsidInput Msid info.
[in]MsidLengthInput Msid info length.
TCG_RESULT EFIAPI OpalUtilSetUserPassword ( OPAL_SESSION LockingSpSession,
const VOID *  OldPassword,
UINT32  OldPasswordLength,
const VOID *  NewPassword,
UINT32  NewPasswordLength 
)

Starts a session with OPAL_UID_LOCKING_SP as OPAL_LOCKING_SP_USER1_AUTHORITY or OPAL_LOCKING_SP_ADMIN1_AUTHORITY and sets the User1 SP authority to enabled and sets the User1 password.

Parameters
[in]LockingSpSessionOPAL_SESSION to populate command for, needs comId
[in]OldPasswordCurrent admin password
[in]OldPasswordLengthLength of current admin password in bytes
[in]NewPasswordNew admin password to set
[in]NewPasswordLengthLength of new password in bytes
TCG_RESULT EFIAPI OpalUtilUpdateGlobalLockingRange ( OPAL_SESSION LockingSpSession,
const VOID *  Password,
UINT32  PasswordLength,
BOOLEAN  ReadLocked,
BOOLEAN  WriteLocked 
)

Update global locking range.

Parameters
[in]LockingSpSessionOPAL_SESSION to populate command for, needs comId
Password,Inputpassword info.
PasswordLength,Inputpassword length.
ReadLocked,Readlock info.
WriteLockedwrite lock info.
TCG_RESULT EFIAPI OpalUtilVerifyPassword ( OPAL_SESSION LockingSpSession,
const VOID *  Password,
UINT32  PasswordLength,
TCG_UID  HostSigningAuthority 
)

Verify whether user input the correct password.

Parameters
[in]LockingSpSessionOPAL_SESSION to populate command for, needs comId
[in]PasswordAdmin password
[in]PasswordLengthLength of password in bytes
in/out]HostSigningAuthority Use the Host signing authority type.