/** @file
OpalSecurity.h -- Header for OpalSecurity
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __OPALSECURITY_H__
#define __OPALSECURITY_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
OpalReadCmosDebugLevel(
VOID
);
EFI_STATUS
EFIAPI
OpalGetHobList(
VOID
);
EFI_STATUS
EFIAPI
OpalSecurityDriverInit(
VOID
);
EFI_STATUS
EFIAPI
OpalSecurityBindingStart(
VOID
);
EFI_STATUS
EFIAPI
OpalSecurityBindingStop(
VOID
);
EFI_STATUS
EFIAPI
OpalSecurityAllocBuffer(
VOID
);
EFI_STATUS
EFIAPI
OpalSecurityReceiveResponse(
VOID
);
EFI_STATUS
EFIAPI
OpalSecuritySendCommand(
VOID
);
EFI_STATUS
EFIAPI
TcgStorageIoRecv(
VOID
);
EFI_STATUS
EFIAPI
TcgStorageIoSend(
VOID
);
EFI_STATUS
EFIAPI
OpalDebugAssertPrint(
VOID
);
EFI_STATUS
EFIAPI
OpalAssertHandler(
VOID
);
EFI_STATUS
EFIAPI
OpalCompareGuid(
VOID
);
EFI_STATUS
EFIAPI
OpalReadUnaligned64(
VOID
);
EFI_STATUS
EFIAPI
global variables set by the UEFI Boot Services Table Library(
VOID
);
EFI_STATUS
EFIAPI
EFI_HANDLE gImageHandle;(
VOID
);
EFI_STATUS
EFIAPI
EFI_BOOT_SERVICES *mBootServices = NULL;(
VOID
);
EFI_STATUS
EFIAPI
declarations(
VOID
);
EFI_STATUS
EFIAPI
UINTN(
VOID
);
EFI_STATUS
EFIAPI
Entry Point(
VOID
);
EFI_STATUS
EFIAPI
UEFI service table pointers locally(
VOID
);
EFI_STATUS
EFIAPI
(mSystemTable == NULL) {(
VOID
);
EFI_STATUS
EFIAPI
a protocol instance structure(
VOID
);
EFI_STATUS
EFIAPI
= mBootServices->AllocatePool ((
VOID
);
EFI_STATUS
EFIAPI
the protocol dispatch table with binding Start/Stop(
VOID
);
EFI_STATUS
EFIAPI
the Opal Security Protocol onto the image handle(
VOID
);
EFI_STATUS
EFIAPI
the MemoryOverwriteRequestControl variable per UEFI spec(
VOID
);
EFI_STATUS
EFIAPI
Binding Start(
VOID
);
EFI_STATUS
EFIAPI
the buffer used for TCG command data(
VOID
);
EFI_STATUS
EFIAPI
(Buffer, 0, sizeof (Buffer));(
VOID
);
EFI_STATUS
EFIAPI
if the controller supports TCG Storage IO (type == 1)(
VOID
);
EFI_STATUS
EFIAPI
(StorageIoType == 1)(
VOID
);
EFI_STATUS
EFIAPI
the device context from the controller handle(
VOID
);
EFI_STATUS
EFIAPI
(Buffer, (VOID *)((UINTN)ControllerHandle + 35), 4 * sizeof (UINT128));(
VOID
);
EFI_STATUS
EFIAPI
TCG SSC feature bit in Level 0 discovery data (bit 94)(
VOID
);
EFI_STATUS
EFIAPI
((Buffer[94] & 1) == 0) {(
VOID
);
EFI_STATUS
EFIAPI
if the protocol already exists on this controller(
VOID
);
EFI_STATUS
EFIAPI
the child protocol instance (32 bytes)(
VOID
);
EFI_STATUS
EFIAPI
child protocol with TCG send/recv handlers(
VOID
);
EFI_STATUS
EFIAPI
the child protocol(
VOID
);
EFI_STATUS
EFIAPI
Opal Security is enabled, perform initial security exchange(
VOID
);
EFI_STATUS
EFIAPI
((mOpalSecurityEnabled & 1) != 0 &&(
VOID
);
EFI_STATUS
EFIAPI
Binding Stop(
VOID
);
EFI_STATUS
EFIAPI
Allocation for TCG Security Protocol(
VOID
);
EFI_STATUS
EFIAPI
IF-RECV (Level 0 Discovery) to read TCG capabilities(
VOID
);
EFI_STATUS
EFIAPI
TCG Security Response (IF-RECV data parsing)(
VOID
);
EFI_STATUS
EFIAPI
descriptor count from Level 0 Discovery response(
VOID
);
EFI_STATUS
EFIAPI
= _byteswap_ushort (*(UINT16 *)(DiscoveryBuffer + 6));(
VOID
);
EFI_STATUS
EFIAPI
TCG Level 0 Discovery descriptors(
VOID
);
EFI_STATUS
EFIAPI
(Index = 0; Index < NumDescriptors; Index++)(
VOID
);
/// send IF-SEND command
EFI_STATUS
EFIAPI
Storage SSC feature found(
VOID
);
EFI_STATUS
EFIAPI
= 0;(
VOID
);
/// issue IF-RECV
EFI_STATUS
EFIAPI
SSC v2 (Pyrite) feature(
VOID
);
EFI_STATUS
EFIAPI
= OpalSecuritySendCommand (Protocol);(
VOID
);
EFI_STATUS
EFIAPI
Storage IF-SEND Command(
VOID
);
EFI_STATUS
EFIAPI
= 256;(
VOID
);
EFI_STATUS
EFIAPI
the COM ID iteration matches(
VOID
);
EFI_STATUS
EFIAPI
(CommandIteration != _byteswap_ushort (*(UINT16 *)(CmdResponseBuffer + 2)))(
VOID
);
EFI_STATUS
EFIAPI
IF-RECV with Level 1 discovery ProtocolId(
VOID
);
EFI_STATUS
EFIAPI
= NULL;(
VOID
);
EFI_STATUS
EFIAPI
IF-RECV (receive security data without transfer length)(
VOID
);
EFI_STATUS
EFIAPI
TCG IF-RECV packet(
VOID
);
EFI_STATUS
EFIAPI
IF-SEND (send security data with transfer length)(
VOID
);
EFI_STATUS
EFIAPI
Support Functions(
VOID
);
EFI_STATUS
EFIAPI
List Retrieval(
VOID
);
EFI_STATUS
EFIAPI
Functions(
VOID
);
#endif /* __OPALSECURITY_H__ */