TianoCore EDK2 master
Loading...
Searching...
No Matches
TcgStorageOpalCore.c File Reference

Go to the source code of this file.

Data Structures

struct  TCG_BLOCK_SID_CLEAR_EVENTS
 

Macros

#define TRUSTED_COMMAND_TIMEOUT_NS   ((UINT64) 5 * ((UINT64)(1000000)) * 1000)
 
#define BUFFER_SIZE   512
 

Functions

TCG_RESULT OpalTrustedSend (EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *Sscp, UINT32 MediaId, UINT8 SecurityProtocol, UINT16 SpSpecific, UINTN TransferLength, VOID *Buffer, UINTN BufferSize)
 
TCG_RESULT OpalTrustedRecv (EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *Sscp, UINT32 MediaId, UINT8 SecurityProtocol, UINT16 SpSpecific, VOID *Buffer, UINTN BufferSize, UINT32 EstimateTimeCost)
 
TCG_RESULT EFIAPI OpalPerformMethod (OPAL_SESSION *Session, UINT32 SendSize, VOID *Buffer, UINT32 BufferSize, TCG_PARSE_STRUCT *ParseStruct, UINT8 *MethodStatus, UINT32 EstimateTimeCost)
 
TCG_RESULT EFIAPI OpalBlockSid (OPAL_SESSION *Session, BOOLEAN HardwareReset)
 
TCG_RESULT EFIAPI OpalPsidRevert (OPAL_SESSION *AdminSpSession)
 
TCG_RESULT OpalPyrite2PsidRevert (OPAL_SESSION *AdminSpSession, UINT32 EstimateTimeCost)
 
TCG_RESULT EFIAPI OpalRetrieveLevel0DiscoveryHeader (OPAL_SESSION *Session, UINTN BufferSize, VOID *BuffAddress)
 
TCG_RESULT EFIAPI OpalRetrieveSupportedProtocolList (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 OpalGetMsid (OPAL_SESSION *AdminSpSession, UINT32 MsidBufferSize, UINT8 *Msid, UINT32 *MsidLength)
 
TCG_RESULT OpalPyrite2GetActiveDataRemovalMechanism (IN OPAL_SESSION *AdminSpSession, OUT UINT8 *ActiveDataRemovalMechanism)
 
TCG_RESULT EFIAPI OpalAdminRevert (OPAL_SESSION *LockingSpSession, BOOLEAN KeepUserData, UINT8 *MethodStatus)
 
TCG_RESULT OpalPyrite2AdminRevert (OPAL_SESSION *LockingSpSession, BOOLEAN KeepUserData, UINT8 *MethodStatus, UINT32 EstimateTimeCost)
 
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 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 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 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 OpalGetTryLimit (OPAL_SESSION *LockingSpSession, TCG_UID RowUid, UINT32 *TryLimit)
 
TCG_RESULT EFIAPI OpalGetSupportedAttributesInfo (IN OPAL_SESSION *Session, OUT OPAL_DISK_SUPPORT_ATTRIBUTE *SupportedAttributes, OUT UINT16 *OpalBaseComId)
 
TCG_RESULT EFIAPI OpalGetLockingInfo (OPAL_SESSION *Session, TCG_LOCKING_FEATURE_DESCRIPTOR *LockingFeature)
 
TCG_RESULT OpalGetFeatureDescriptor (IN OPAL_SESSION *Session, IN UINT16 FeatureCode, IN OUT UINTN *DataSize, OUT VOID *Data)
 
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)
 

Detailed Description

Public API for Opal Core library.

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

Definition in file TcgStorageOpalCore.c.

Macro Definition Documentation

◆ BUFFER_SIZE

#define BUFFER_SIZE   512

Definition at line 26 of file TcgStorageOpalCore.c.

◆ TRUSTED_COMMAND_TIMEOUT_NS

#define TRUSTED_COMMAND_TIMEOUT_NS   ((UINT64) 5 * ((UINT64)(1000000)) * 1000)

Definition at line 25 of file TcgStorageOpalCore.c.

Function Documentation

◆ OpalActivateLockingSp()

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.

Definition at line 948 of file TcgStorageOpalCore.c.

◆ OpalAdminRevert()

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.

Definition at line 757 of file TcgStorageOpalCore.c.

◆ OpalBlockSid()

TCG_RESULT EFIAPI OpalBlockSid ( OPAL_SESSION Session,
BOOLEAN  HardwareReset 
)

Trig the block sid action.

Parameters
[in]SessionOPAL_SESSION related to this method..
[in]HardwareResetWhether need to do hardware reset.

Definition at line 248 of file TcgStorageOpalCore.c.

◆ OpalCreateRetrieveGlobalLockingRangeActiveKey()

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.

Definition at line 1503 of file TcgStorageOpalCore.c.

◆ OpalDeviceLocked()

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.

Definition at line 2021 of file TcgStorageOpalCore.c.

◆ OpalDisableUser()

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.

Definition at line 1233 of file TcgStorageOpalCore.c.

◆ OpalEndSession()

TCG_RESULT EFIAPI OpalEndSession ( OPAL_SESSION Session)

Close a session opened with OpalStartSession.

Parameters
[in/out]Session OPAL_SESSION to end.

Definition at line 518 of file TcgStorageOpalCore.c.

◆ OpalFeatureEnabled()

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.

Definition at line 1991 of file TcgStorageOpalCore.c.

◆ OpalFeatureSupported()

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.

Definition at line 1955 of file TcgStorageOpalCore.c.

◆ OpalGetFeatureDescriptor()

TCG_RESULT OpalGetFeatureDescriptor ( IN OPAL_SESSION Session,
IN UINT16  FeatureCode,
IN OUT UINTN DataSize,
OUT VOID *  Data 
)

Get the descriptor for the specific feature code.

Parameters
[in]SessionOPAL_SESSION with OPAL_UID_LOCKING_SP to retrieve info.
[in]FeatureCodeThe feature code user request.
[in,out]DataSizeThe data size.
[out]DataThe data buffer used to save the feature descriptor.

Definition at line 1904 of file TcgStorageOpalCore.c.

◆ OpalGetLockingInfo()

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.

Definition at line 1861 of file TcgStorageOpalCore.c.

◆ OpalGetMsid()

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

Definition at line 583 of file TcgStorageOpalCore.c.

◆ OpalGetSupportedAttributesInfo()

TCG_RESULT EFIAPI OpalGetSupportedAttributesInfo ( IN OPAL_SESSION Session,
OUT OPAL_DISK_SUPPORT_ATTRIBUTE SupportedAttributes,
OUT UINT16 *  OpalBaseComId 
)

Get the support attribute info.

Parameters
[in]SessionOPAL_SESSION with OPAL_UID_LOCKING_SP to retrieve info.
[out]SupportedAttributesReturn the support attribute info.
[out]OpalBaseComIdReturn the base com id info.

Definition at line 1663 of file TcgStorageOpalCore.c.

◆ OpalGetTryLimit()

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

Definition at line 1593 of file TcgStorageOpalCore.c.

◆ OpalGlobalLockingRangeGenKey()

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.

Definition at line 1276 of file TcgStorageOpalCore.c.

◆ OpalParseRetrieveGlobalLockingRangeActiveKey()

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

Definition at line 1548 of file TcgStorageOpalCore.c.

◆ OpalPerformMethod()

TCG_RESULT EFIAPI OpalPerformMethod ( OPAL_SESSION Session,
UINT32  SendSize,
VOID *  Buffer,
UINT32  BufferSize,
TCG_PARSE_STRUCT ParseStruct,
UINT8 *  MethodStatus,
UINT32  EstimateTimeCost 
)

The function performs send, recv, check comIDs, check method status action.

Parameters
[in]SessionOPAL_SESSION related to this method..
[in]SendSizeTransfer Length of Buffer (in bytes) - always a multiple of 512
[in]BufferAddress of Data to transfer
[in]BufferSizeFull Size of Buffer, including space that may be used for padding.
[in]ParseStructStructure used to parse received TCG response.
[in]MethodStatusMethod status of last action performed. If action succeeded, it should be TCG_METHOD_STATUS_CODE_SUCCESS.
[in]EstimateTimeCostEstimate the time need to for the method.

Definition at line 195 of file TcgStorageOpalCore.c.

◆ OpalPsidRevert()

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.

Definition at line 286 of file TcgStorageOpalCore.c.

◆ OpalPyrite2AdminRevert()

TCG_RESULT OpalPyrite2AdminRevert ( OPAL_SESSION LockingSpSession,
BOOLEAN  KeepUserData,
UINT8 *  MethodStatus,
UINT32  EstimateTimeCost 
)

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.
[in]EstimateTimeCostEstimate the time needed.

Definition at line 852 of file TcgStorageOpalCore.c.

◆ OpalPyrite2GetActiveDataRemovalMechanism()

TCG_RESULT OpalPyrite2GetActiveDataRemovalMechanism ( IN OPAL_SESSION AdminSpSession,
OUT UINT8 *  ActiveDataRemovalMechanism 
)

The function retrieves the MSID from the device specified

Parameters
[in]AdminSpSessionOPAL_SESSION with OPAL_UID_ADMIN_SP as OPAL_ADMIN_SP_ANYBODY_AUTHORITY
[out]ActiveDataRemovalMechanismActive Data Removal Mechanism that the device will use for Revert/RevertSP calls.

Definition at line 675 of file TcgStorageOpalCore.c.

◆ OpalPyrite2PsidRevert()

TCG_RESULT OpalPyrite2PsidRevert ( OPAL_SESSION AdminSpSession,
UINT32  EstimateTimeCost 
)

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.
[in]EstimateTimeCostEstimate the time needed.

Definition at line 336 of file TcgStorageOpalCore.c.

◆ OpalRetrieveLevel0DiscoveryHeader()

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

Definition at line 390 of file TcgStorageOpalCore.c.

◆ OpalRetrieveSupportedProtocolList()

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

Definition at line 419 of file TcgStorageOpalCore.c.

◆ OpalSetLockingRange()

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.

Definition at line 1406 of file TcgStorageOpalCore.c.

◆ OpalSetLockingSpAuthorityEnabledAndPin()

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.

Definition at line 1052 of file TcgStorageOpalCore.c.

◆ OpalSetPassword()

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.

Definition at line 998 of file TcgStorageOpalCore.c.

◆ OpalStartSession()

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.

Definition at line 456 of file TcgStorageOpalCore.c.

◆ OpalTrustedRecv()

TCG_RESULT OpalTrustedRecv ( EFI_STORAGE_SECURITY_COMMAND_PROTOCOL Sscp,
UINT32  MediaId,
UINT8  SecurityProtocol,
UINT16  SpSpecific,
VOID *  Buffer,
UINTN  BufferSize,
UINT32  EstimateTimeCost 
)

The function performs a Trusted Receive of a Buffer containing a TCG_COM_PACKET.

Parameters
[in]SscpThe input Ssc Protocol.
[in]MediaIdThe input Media id info used by Ssc Protocol.
[in]SecurityProtocolSecurity Protocol
[in]SpSpecificSecurity Protocol Specific
[in]BufferAddress of Data to transfer
[in]BufferSizeFull Size of Buffer, including space that may be used for padding.
[in]EstimateTimeCostEstimate the time needed.

Definition at line 92 of file TcgStorageOpalCore.c.

◆ OpalTrustedSend()

TCG_RESULT OpalTrustedSend ( EFI_STORAGE_SECURITY_COMMAND_PROTOCOL Sscp,
UINT32  MediaId,
UINT8  SecurityProtocol,
UINT16  SpSpecific,
UINTN  TransferLength,
VOID *  Buffer,
UINTN  BufferSize 
)

The function performs a Trusted Send of a Buffer containing a TCG_COM_PACKET.

Parameters
[in]SscpThe input Ssc Protocol.
[in]MediaIdThe input Media id info used by Ssc Protocol.
[in]SecurityProtocolSecurity Protocol
[in]SpSpecificSecurity Protocol Specific
[in]TransferLengthTransfer Length of Buffer (in bytes) - always a multiple of 512
[in]BufferAddress of Data to transfer
[in]BufferSizeFull Size of Buffer, including space that may be used for padding.

Definition at line 41 of file TcgStorageOpalCore.c.

◆ OpalUpdateGlobalLockingRange()

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.

Definition at line 1335 of file TcgStorageOpalCore.c.