123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883 |
- /** @file
- 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.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef _OPAL_CORE_H_
- #define _OPAL_CORE_H_
- #include <IndustryStandard/TcgStorageOpal.h>
- #include <Library/TcgStorageCoreLib.h>
- #include <Protocol/StorageSecurityCommand.h>
- #pragma pack(1)
- typedef struct {
- //
- // Opal SSC 1 support (0 - not supported, 1 - supported)
- //
- UINT32 OpalSsc1 : 1;
- //
- // Opal SSC 2support (0 - not supported, 1 - supported)
- //
- UINT32 OpalSsc2 : 1;
- //
- // Opal SSC Lite support (0 - not supported, 1 - supported)
- //
- UINT32 OpalSscLite : 1;
- //
- // Pyrite SSC support (0 - not supported, 1 - supported)
- //
- UINT32 PyriteSsc : 1;
- //
- // Security protocol 1 support (0 - not supported, 1 - supported)
- //
- UINT32 Sp1 : 1;
- //
- // Security protocol 2 support (0 - not supported, 1 - supported)
- //
- UINT32 Sp2 : 1;
- //
- // Security protocol IEEE1667 support (0 - not supported, 1 - supported)
- //
- UINT32 SpIeee1667 : 1;
- //
- // Media encryption supported (0 - not supported, 1 - supported)
- //
- UINT32 MediaEncryption : 1;
- //
- // Initial C_PIN_SID PIN Indicator
- // 0 - The initial C_PIN_SID PIN value is NOT equal to the C_PIN_MSID PIN value
- // 1 - The initial C_PIN_SID PIN value is equal to the C_PIN_MSID PIN value
- //
- UINT32 InitCpinIndicator : 1;
- //
- // Behavior of C_PIN_SID PIN upon TPer Revert
- // 0 - The initial C_PIN_SID PIN value is NOT equal to the C_PIN_MSID PIN value
- // 1 - The initial C_PIN_SID PIN value is equal to the C_PIN_MSID PIN value
- //
- UINT32 CpinUponRevert : 1;
- //
- // Media encryption supported (0 - not supported, 1 - supported)
- //
- UINT32 BlockSid : 1;
- //
- // Pyrite SSC V2 support (0 - not supported, 1 - supported)
- //
- UINT32 PyriteSscV2 : 1;
- //
- // Supported Data Removal Mechanism support (0 - not supported, 1 - supported)
- //
- UINT32 DataRemoval : 1;
- } OPAL_DISK_SUPPORT_ATTRIBUTE;
- //
- // Opal device ownership type
- // The type indicates who was the determined owner of the device.
- //
- typedef enum {
- //
- // Represents the device ownership is unknown because starting a session as the SID authority with the ADMIN SP
- // was unsuccessful with the provided PIN
- //
- OpalOwnershipUnknown,
- //
- // Represents that the ADMIN SP SID authority contains the same PIN as the MSID PIN
- //
- OpalOwnershipNobody,
- } OPAL_OWNER_SHIP;
- //
- // Structure that is used to represent an Opal session.
- // The structure must be initialized by calling OpalStartSession before being used as a parameter
- // for any other Opal function.
- // This structure should NOT be directly modified by the client of this library.
- //
- //
- typedef struct {
- UINT32 HostSessionId;
- UINT32 TperSessionId;
- UINT16 ComIdExtension;
- UINT16 OpalBaseComId;
- EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *Sscp;
- UINT32 MediaId;
- } OPAL_SESSION;
- #pragma pack()
- /**
- The function fills in the provided Buffer with the supported protocol list
- of the device specified.
- @param[in] Session OPAL_SESSION data.
- @param[in] BufferSize Size of Buffer provided (in bytes)
- @param[in] BuffAddress Buffer address to fill with security protocol list
- **/
- TCG_RESULT
- EFIAPI
- OpalRetrieveSupportedProtocolList (
- OPAL_SESSION *Session,
- UINTN BufferSize,
- VOID *BuffAddress
- );
- /**
- The function fills in the provided Buffer with the level 0 discovery Header
- of the device specified.
- @param[in] Session OPAL_SESSION data.
- @param[in] BufferSize Size of Buffer provided (in bytes)
- @param[in] BuffAddress Buffer address to fill with Level 0 Discovery response
- **/
- TCG_RESULT
- EFIAPI
- OpalRetrieveLevel0DiscoveryHeader (
- OPAL_SESSION *Session,
- UINTN BufferSize,
- VOID *BuffAddress
- );
- /**
- 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.
- @param[in/out] Session OPAL_SESSION to initialize.
- @param[in] SpId Security provider ID to start the session with.
- @param[in] Write Whether the session should be read-only (FALSE) or read/write (TRUE).
- @param[in] HostChallengeLength Length of the host challenge. Length should be 0 if hostChallenge is NULL
- @param[in] HostChallenge Host challenge for Host Signing Authority. If NULL, then no Host Challenge will be sent.
- @param[in] HostSigningAuthority Host Signing Authority used for start session. If NULL, then no Host Signing Authority will be sent.
- @param[in/out] MethodStatus Status of the StartSession method; only valid if TcgResultSuccess is returned.
- @return 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
- OpalStartSession (
- OPAL_SESSION *Session,
- TCG_UID SpId,
- BOOLEAN Write,
- UINT32 HostChallengeLength,
- const VOID *HostChallenge,
- TCG_UID HostSigningAuthority,
- UINT8 *MethodStatus
- );
- /**
- Close a session opened with OpalStartSession.
- @param[in/out] Session OPAL_SESSION to end.
- **/
- TCG_RESULT
- EFIAPI
- OpalEndSession (
- OPAL_SESSION *Session
- );
- /**
- Reverts device using Admin SP Revert method.
- @param[in] AdminSpSession OPAL_SESSION with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_PSID_AUTHORITY to perform PSID revert.
- **/
- TCG_RESULT
- EFIAPI
- OpalPsidRevert (
- OPAL_SESSION *AdminSpSession
- );
- /**
- The function retrieves the MSID from the device specified
- @param[in] AdminSpSession OPAL_SESSION with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_PSID_AUTHORITY to perform PSID revert.
- @param[in] MsidBufferSize Allocated buffer size (in bytes) for MSID allocated by caller
- @param[in] Msid Variable length byte sequence representing MSID of device
- @param[in] MsidLength Actual length of MSID retrieved from device
- **/
- TCG_RESULT
- EFIAPI
- OpalGetMsid (
- OPAL_SESSION *AdminSpSession,
- UINT32 MsidBufferSize,
- UINT8 *Msid,
- UINT32 *MsidLength
- );
- /**
- 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.
- @param[in] AdminSpSession OPAL_SESSION with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_SID_AUTHORITY to activate Locking SP
- @param[in/out] MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
- **/
- TCG_RESULT
- EFIAPI
- OpalActivateLockingSp (
- OPAL_SESSION *AdminSpSession,
- UINT8 *MethodStatus
- );
- /**
- The function sets the PIN column of the specified cpinRowUid (authority) with the newPin value.
- @param[in/out] Session OPAL_SESSION to set password
- @param[in] CpinRowUid UID of row (authority) to update PIN column
- @param[in] NewPin New Pin to set for cpinRowUid specified
- @param[in] NewPinLength Length in bytes of newPin
- @param[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 retrieves the active key of the global locking range
- and calls the GenKey method on the active key retrieved.
- @param[in] LockingSpSession OPAL_SESSION with OPAL_UID_LOCKING_SP to generate key
- @param[in/out] MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
- **/
- TCG_RESULT
- EFIAPI
- OpalGlobalLockingRangeGenKey (
- OPAL_SESSION *LockingSpSession,
- 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).
- @param[in] LockingSpSession OPAL_SESSION with OPAL_UID_LOCKING_SP to generate key
- @param[in] ReadLocked Value to set ReadLocked column for Global Locking Range
- @param[in] WriteLocked Value to set WriteLocked column for Global Locking Range
- @param[in/out] MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
- **/
- TCG_RESULT
- EFIAPI
- OpalUpdateGlobalLockingRange (
- OPAL_SESSION *LockingSpSession,
- 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.
- @param[in] LockingSpSession OPAL_SESSION with OPAL_UID_LOCKING_SP to generate key
- @param[in] LockingRangeUid Locking range UID to set values
- @param[in] RangeStart Value to set RangeStart column for Locking Range
- @param[in] RangeLength Value to set RangeLength column for Locking Range
- @param[in] ReadLockEnabled Value to set readLockEnabled column for Locking Range
- @param[in] WriteLockEnabled Value to set writeLockEnabled column for Locking Range
- @param[in] ReadLocked Value to set ReadLocked column for Locking Range
- @param[in] WriteLocked Value to set WriteLocked column for Locking Range
- @param[in/out] MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
- **/
- 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 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.
- @param[in] LockingSpSession OPAL_SESSION with OPAL_UID_LOCKING_SP as OPAL_LOCKING_SP_ADMIN1_AUTHORITY to update
- @param[in] CpinRowUid Row UID of C_PIN table of Locking SP to update PIN
- @param[in] AuthorityUid UID of Locking SP authority to update Pin column with
- @param[in] NewPin New Password used to set Pin column
- @param[in] NewPinLength Length in bytes of new password
- @param[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 FALSE for the USER1 authority.
- @param[in] LockingSpSession OPAL_SESSION with OPAL_UID_LOCKING_SP as OPAL_LOCKING_SP_ADMIN1_AUTHORITY to disable User1
- @param[in/out] MethodStatus Method status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
- **/
- TCG_RESULT
- EFIAPI
- OpalDisableUser (
- OPAL_SESSION *LockingSpSession,
- 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.
- @param[in] LockingSpSession OPAL_SESSION with OPAL_UID_LOCKING_SP as OPAL_LOCKING_SP_ADMIN1_AUTHORITY to revertSP
- @param[in] KeepUserData Specifies whether or not to keep user data when performing RevertSP action. True = keeps user data.
- @param[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 retrieves the TryLimit column for the specified rowUid (authority).
- @param[in] LockingSpSession OPAL_SESSION with OPAL_UID_LOCKING_SP to retrieve try limit
- @param[in] RowUid Row UID of the Locking SP C_PIN table to retrieve TryLimit column
- @param[in/out] TryLimit Value from TryLimit column
- **/
- TCG_RESULT
- EFIAPI
- OpalGetTryLimit (
- OPAL_SESSION *LockingSpSession,
- TCG_UID RowUid,
- UINT32 *TryLimit
- );
- /**
- 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.
- @param[in] Session OPAL_SESSION to populate command for, needs comId
- @param[in/out] CreateStruct Structure to populate with encoded TCG command
- @param[in/out] Size Size in bytes of the command created.
- **/
- TCG_RESULT
- EFIAPI
- OpalCreateRetrieveGlobalLockingRangeActiveKey (
- const OPAL_SESSION *Session,
- TCG_CREATE_STRUCT *CreateStruct,
- UINT32 *Size
- );
- /**
- The function acquires the activeKey specified for the Global Locking Range from the parseStruct.
- @param[in] ParseStruct Structure that contains the device's response with the activekey
- @param[in/out] ActiveKey The UID of the active key retrieved
- **/
- TCG_RESULT
- EFIAPI
- OpalParseRetrieveGlobalLockingRangeActiveKey (
- TCG_PARSE_STRUCT *ParseStruct,
- TCG_UID *ActiveKey
- );
- /**
- Get the support attribute info.
- @param[in] Session OPAL_SESSION with OPAL_UID_LOCKING_SP to retrieve info.
- @param[in/out] LockingFeature Return the Locking info.
- **/
- TCG_RESULT
- EFIAPI
- OpalGetLockingInfo (
- OPAL_SESSION *Session,
- TCG_LOCKING_FEATURE_DESCRIPTOR *LockingFeature
- );
- /**
- The function determines whether or not all of the requirements for the Opal Feature (not full specification)
- are met by the specified device.
- @param[in] SupportedAttributes Opal device attribute.
- **/
- BOOLEAN
- EFIAPI
- OpalFeatureSupported (
- OPAL_DISK_SUPPORT_ATTRIBUTE *SupportedAttributes
- );
- /**
- 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
- @param[in] SupportedAttributes Opal device attribute.
- @param[in] LockingFeature Opal device locking status.
- **/
- BOOLEAN
- EFIAPI
- OpalFeatureEnabled (
- 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
- @param[in] SupportedAttributes Opal device attribute.
- @param[in] LockingFeature Opal device locking status.
- **/
- BOOLEAN
- OpalDeviceLocked (
- OPAL_DISK_SUPPORT_ATTRIBUTE *SupportedAttributes,
- TCG_LOCKING_FEATURE_DESCRIPTOR *LockingFeature
- );
- /**
- Trig the block sid action.
- @param[in] Session OPAL_SESSION to populate command for, needs comId
- @param[in] HardwareReset Whether need to do hardware reset.
- **/
- TCG_RESULT
- EFIAPI
- OpalBlockSid (
- OPAL_SESSION *Session,
- BOOLEAN HardwareReset
- );
- /**
- Get the support attribute info.
- @param[in] Session OPAL_SESSION with OPAL_UID_LOCKING_SP to retrieve info.
- @param[in/out] SupportedAttributes Return the support attribute info.
- @param[out] OpalBaseComId Return the base com id info.
- **/
- TCG_RESULT
- EFIAPI
- OpalGetSupportedAttributesInfo (
- OPAL_SESSION *Session,
- OPAL_DISK_SUPPORT_ATTRIBUTE *SupportedAttributes,
- UINT16 *OpalBaseComId
- );
- /**
- Creates a session with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_PSID_AUTHORITY, then reverts device using Admin SP Revert method.
- @param[in] AdminSpSession OPAL_SESSION to populate command for, needs comId
- @param[in] Psid PSID of device to revert.
- @param[in] PsidLength Length of PSID in bytes.
- **/
- TCG_RESULT
- EFIAPI
- OpalUtilPsidRevert (
- OPAL_SESSION *AdminSpSession,
- const VOID *Psid,
- UINT32 PsidLength
- );
- /**
- 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.
- @param[in] AdminSpSession OPAL_SESSION to populate command for, needs comId
- @param[in] GeneratedSid Generated SID of disk
- @param[in] SidLength Length of generatedSid in bytes
- @param[in] Password New admin password to set
- @param[in] PassLength Length of 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_LOCKING_SP as OPAL_LOCKING_SP_ADMIN1_AUTHORITY,
- and updates the specified locking range with the provided column values.
- @param[in] LockingSpSession OPAL_SESSION to populate command for, needs comId
- @param[in] Password New admin password to set
- @param[in] PassLength Length of password in bytes
- @param[in] LockingRangeUid Locking range UID to set values
- @param[in] RangeStart Value to set RangeStart column for Locking Range
- @param[in] RangeLength Value to set RangeLength column for Locking Range
- @param[in] ReadLockEnabled Value to set readLockEnabled column for Locking Range
- @param[in] WriteLockEnabled Value to set writeLockEnabled column for Locking Range
- @param[in] ReadLocked Value to set ReadLocked column for Locking Range
- @param[in] WriteLocked Value to set WriteLocked column for Locking Range
- **/
- 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_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.
- @param[in] AdminSpSession OPAL_SESSION to populate command for, needs comId
- @param[in] OldPassword Current admin password
- @param[in] OldPasswordLength Length of current admin password in bytes
- @param[in] NewPassword New admin password to set
- @param[in] NewPasswordLength Length of new password in bytes
- **/
- TCG_RESULT
- EFIAPI
- OpalUtilSetAdminPassword (
- OPAL_SESSION *AdminSpSession,
- 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.
- @param[in] LockingSpSession OPAL_SESSION to populate command for, needs comId
- @param[in] OldPassword Current admin password
- @param[in] OldPasswordLength Length of current admin password in bytes
- @param[in] NewPassword New admin password to set
- @param[in] NewPasswordLength Length of new password in bytes
- **/
- TCG_RESULT
- EFIAPI
- OpalUtilSetUserPassword (
- OPAL_SESSION *LockingSpSession,
- const VOID *OldPassword,
- UINT32 OldPasswordLength,
- const VOID *NewPassword,
- UINT32 NewPasswordLength
- );
- /**
- Verify whether user input the correct password.
- @param[in] LockingSpSession OPAL_SESSION to populate command for, needs comId
- @param[in] Password Admin password
- @param[in] PasswordLength Length of password in bytes
- @param[in/out] HostSigningAuthority Use the Host signing authority type.
- **/
- TCG_RESULT
- EFIAPI
- OpalUtilVerifyPassword (
- OPAL_SESSION *LockingSpSession,
- const VOID *Password,
- UINT32 PasswordLength,
- TCG_UID HostSigningAuthority
- );
- /**
- 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.
- @param[in] LockingSpSession OPAL_SESSION to populate command for, needs comId
- @param[in] Password Admin or user password
- @param[in] PasswordLength Length of password in bytes
- @param[in/out] PasswordFailed indicates if password failed (start session didn't work)
- **/
- 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_ADMIN1_AUTHORITY and disables the User1 authority.
- @param[in] LockingSpSession OPAL_SESSION to populate command for, needs comId
- @param[in] Password Admin password
- @param[in] PasswordLength Length of password in bytes
- @param[in/out] PasswordFailed indicates if password failed (start session didn't work)
- **/
- TCG_RESULT
- EFIAPI
- OpalUtilDisableUser (
- OPAL_SESSION *LockingSpSession,
- const VOID *Password,
- UINT32 PasswordLength,
- BOOLEAN *PasswordFailed
- );
- /**
- Opens a session with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_PSID_AUTHORITY, then reverts the device using the RevertSP method.
- @param[in] LockingSpSession OPAL_SESSION to populate command for, needs comId
- @param[in] KeepUserData TRUE to keep existing Data on the disk, or FALSE to erase it
- @param[in] Password Admin password
- @param[in] PasswordLength Length of password in bytes
- @param[in/out] PasswordFailed indicates if password failed (start session didn't work)
- @param[in] Msid Input Msid info.
- @param[in] MsidLength Input Msid info length.
- **/
- TCG_RESULT
- EFIAPI
- OpalUtilRevert (
- OPAL_SESSION *LockingSpSession,
- BOOLEAN KeepUserData,
- const VOID *Password,
- UINT32 PasswordLength,
- BOOLEAN *PasswordFailed,
- UINT8 *Msid,
- UINT32 MsidLength
- );
- /**
- After revert success, set SID to MSID.
- @param[in] AdminSpSession OPAL_SESSION to populate command for, needs comId
- @param Password, Input password info.
- @param PasswordLength, Input password length.
- @param[in] Msid Input Msid info.
- @param[in] MsidLength Input Msid info length.
- **/
- TCG_RESULT
- EFIAPI
- OpalUtilSetSIDtoMSID (
- OPAL_SESSION *AdminSpSession,
- const VOID *Password,
- UINT32 PasswordLength,
- UINT8 *Msid,
- UINT32 MsidLength
- );
- /**
- Update global locking range.
- @param[in] LockingSpSession OPAL_SESSION to populate command for, needs comId
- @param Password, Input password info.
- @param PasswordLength, Input password length.
- @param ReadLocked, Read lock info.
- @param WriteLocked write lock info.
- **/
- TCG_RESULT
- EFIAPI
- OpalUtilUpdateGlobalLockingRange (
- OPAL_SESSION *LockingSpSession,
- const VOID *Password,
- UINT32 PasswordLength,
- BOOLEAN ReadLocked,
- BOOLEAN WriteLocked
- );
- /**
- Update global locking range.
- @param Session, The session info for one opal device.
- @param Msid, The data buffer to save Msid info.
- @param MsidBufferLength, The data buffer length for Msid.
- @param MsidLength, The actual data length for Msid.
- **/
- TCG_RESULT
- EFIAPI
- OpalUtilGetMsid (
- OPAL_SESSION *Session,
- UINT8 *Msid,
- UINT32 MsidBufferLength,
- 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.
- @param[in] Session The session info for one opal device.
- @param Msid, The Msid info.
- @param MsidLength, The data length for Msid.
- **/
- OPAL_OWNER_SHIP
- EFIAPI
- OpalUtilDetermineOwnership (
- OPAL_SESSION *Session,
- UINT8 *Msid,
- UINT32 MsidLength
- );
- /**
- The function returns if admin password exists.
- @param[in] OwnerShip The owner ship of the opal device.
- @param[in] LockingFeature The locking info of the opal device.
- @retval TRUE Admin password existed.
- @retval FALSE Admin password not existed.
- **/
- BOOLEAN
- EFIAPI
- OpalUtilAdminPasswordExists (
- IN UINT16 OwnerShip,
- IN TCG_LOCKING_FEATURE_DESCRIPTOR *LockingFeature
- );
- /**
- Get Active Data Removal Mechanism Value.
- @param[in] Session, The session info for one opal device.
- @param[in] GeneratedSid Generated SID of disk
- @param[in] SidLength Length of generatedSid in bytes
- @param[out] ActiveDataRemovalMechanism Return the active data removal mechanism.
- **/
- TCG_RESULT
- EFIAPI
- OpalUtilGetActiveDataRemovalMechanism (
- OPAL_SESSION *Session,
- const VOID *GeneratedSid,
- UINT32 SidLength,
- UINT8 *ActiveDataRemovalMechanism
- );
- /**
- Get the supported Data Removal Mechanism list.
- @param[in] Session, The session info for one opal device.
- @param[out] RemovalMechanismLists Return the supported data removal mechanism lists.
- **/
- TCG_RESULT
- EFIAPI
- OpalUtilGetDataRemovalMechanismLists (
- IN OPAL_SESSION *Session,
- OUT UINT32 *RemovalMechanismLists
- );
- #endif // _OPAL_CORE_H_
|