OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
OcSmcLib.c File Reference
#include <Uefi.h>
#include <Library/DebugLib.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/UefiLib.h>
#include <Library/OcCryptoLib.h>
#include <Library/OcMiscLib.h>
#include <Library/OcSmcLib.h>
#include <Library/OcRtcLib.h>
#include <Library/OcVariableLib.h>
#include "OcSmcLibInternal.h"

Go to the source code of this file.

Functions

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcReadValue (IN APPLE_SMC_IO_PROTOCOL *This, IN SMC_KEY Key, IN SMC_DATA_SIZE Size, OUT SMC_DATA *Value)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcWriteValue (IN APPLE_SMC_IO_PROTOCOL *This, IN SMC_KEY Key, IN SMC_DATA_SIZE Size, IN SMC_DATA *Value)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcMakeKey (IN CHAR8 *Name, OUT SMC_KEY *Key)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcGetKeyCount (IN APPLE_SMC_IO_PROTOCOL *This, OUT UINT32 *Count)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcGetKeyFromIndex (IN APPLE_SMC_IO_PROTOCOL *This, IN SMC_KEY_INDEX Index, OUT SMC_KEY *Key)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcGetKeyInfo (IN APPLE_SMC_IO_PROTOCOL *This, IN SMC_KEY Key, OUT SMC_DATA_SIZE *Size, OUT SMC_KEY_TYPE *Type, OUT SMC_KEY_ATTRIBUTES *Attributes)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcReset (IN APPLE_SMC_IO_PROTOCOL *This, IN UINT32 Mode)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcFlashType (IN APPLE_SMC_IO_PROTOCOL *This, IN SMC_FLASH_TYPE Type)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnsupported (VOID)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcFlashWrite (IN APPLE_SMC_IO_PROTOCOL *This, IN UINT32 Unknown, IN SMC_FLASH_SIZE Size, IN SMC_DATA *Data)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcFlashAuth (IN APPLE_SMC_IO_PROTOCOL *This, IN SMC_FLASH_SIZE Size, IN SMC_DATA *Data)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown1 (VOID)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown2 (IN APPLE_SMC_IO_PROTOCOL *This, IN UINTN Ukn1, IN UINTN Ukn2)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown3 (IN APPLE_SMC_IO_PROTOCOL *This, IN UINTN Ukn1, IN UINTN Ukn2)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown4 (IN APPLE_SMC_IO_PROTOCOL *This, IN UINTN Ukn1)
 
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown5 (IN APPLE_SMC_IO_PROTOCOL *This, IN UINT8 *Data)
 
STATIC VOID EFIAPI EraseAuthenticationKey (IN EFI_EVENT Event, IN VOID *Context)
 
STATIC BOOLEAN ExtractAuthentificationKey (UINT8 *Buffer, UINT32 Size)
 
STATIC VOID LoadAuthenticationKey (VOID)
 
STATIC VOID ExportStatusKey (VOID)
 
APPLE_SMC_IO_PROTOCOLOcSmcIoInstallProtocol (IN BOOLEAN Reinstall, IN BOOLEAN AuthRestart)
 

Variables

STATIC EFI_EVENT mAuthenticationKeyEraseEvent
 
STATIC VIRTUALSMC_KEY_VALUE mVirtualSmcKeyValue [6]
 
STATIC CONST UINT8 mAuthenticationKeyIndex = ARRAY_SIZE (mVirtualSmcKeyValue) - 1
 
STATIC APPLE_SMC_IO_PROTOCOL mSmcIoProtocol
 

Detailed Description

Copyright (C) 2017-2020, vit9696. All rights reserved.

All rights reserved.

This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

Definition in file OcSmcLib.c.

Function Documentation

◆ EraseAuthenticationKey()

STATIC VOID EFIAPI EraseAuthenticationKey ( IN EFI_EVENT Event,
IN VOID * Context )

Definition at line 403 of file OcSmcLib.c.

◆ ExportStatusKey()

STATIC VOID ExportStatusKey ( VOID )

Definition at line 560 of file OcSmcLib.c.

◆ ExtractAuthentificationKey()

STATIC BOOLEAN ExtractAuthentificationKey ( UINT8 * Buffer,
UINT32 Size )

Definition at line 413 of file OcSmcLib.c.

◆ LoadAuthenticationKey()

STATIC VOID LoadAuthenticationKey ( VOID )

Definition at line 487 of file OcSmcLib.c.

◆ OcSmcIoInstallProtocol()

APPLE_SMC_IO_PROTOCOL * OcSmcIoInstallProtocol ( IN BOOLEAN Reinstall,
IN BOOLEAN AuthRestart )

Install and initialise SMC I/O protocol.

Parameters
[in]ReinstallOverwrite installed protocol.
[in]AuthRestartSupport AuthRestart protocol via VSMC.
Return values
installedor located protocol or NULL.

Definition at line 595 of file OcSmcLib.c.

◆ SmcIoVirtualSmcFlashAuth()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcFlashAuth ( IN APPLE_SMC_IO_PROTOCOL * This,
IN SMC_FLASH_SIZE Size,
IN SMC_DATA * Data )

Definition at line 300 of file OcSmcLib.c.

◆ SmcIoVirtualSmcFlashType()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcFlashType ( IN APPLE_SMC_IO_PROTOCOL * This,
IN SMC_FLASH_TYPE Type )

Definition at line 260 of file OcSmcLib.c.

◆ SmcIoVirtualSmcFlashWrite()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcFlashWrite ( IN APPLE_SMC_IO_PROTOCOL * This,
IN UINT32 Unknown,
IN SMC_FLASH_SIZE Size,
IN SMC_DATA * Data )

Definition at line 285 of file OcSmcLib.c.

◆ SmcIoVirtualSmcGetKeyCount()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcGetKeyCount ( IN APPLE_SMC_IO_PROTOCOL * This,
OUT UINT32 * Count )

Definition at line 170 of file OcSmcLib.c.

◆ SmcIoVirtualSmcGetKeyFromIndex()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcGetKeyFromIndex ( IN APPLE_SMC_IO_PROTOCOL * This,
IN SMC_KEY_INDEX Index,
OUT SMC_KEY * Key )

Definition at line 193 of file OcSmcLib.c.

◆ SmcIoVirtualSmcGetKeyInfo()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcGetKeyInfo ( IN APPLE_SMC_IO_PROTOCOL * This,
IN SMC_KEY Key,
OUT SMC_DATA_SIZE * Size,
OUT SMC_KEY_TYPE * Type,
OUT SMC_KEY_ATTRIBUTES * Attributes )

Definition at line 216 of file OcSmcLib.c.

◆ SmcIoVirtualSmcMakeKey()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcMakeKey ( IN CHAR8 * Name,
OUT SMC_KEY * Key )

Definition at line 137 of file OcSmcLib.c.

◆ SmcIoVirtualSmcReadValue()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcReadValue ( IN APPLE_SMC_IO_PROTOCOL * This,
IN SMC_KEY Key,
IN SMC_DATA_SIZE Size,
OUT SMC_DATA * Value )

Definition at line 67 of file OcSmcLib.c.

◆ SmcIoVirtualSmcReset()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcReset ( IN APPLE_SMC_IO_PROTOCOL * This,
IN UINT32 Mode )

Definition at line 247 of file OcSmcLib.c.

◆ SmcIoVirtualSmcUnknown1()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown1 ( VOID )

Definition at line 314 of file OcSmcLib.c.

◆ SmcIoVirtualSmcUnknown2()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown2 ( IN APPLE_SMC_IO_PROTOCOL * This,
IN UINTN Ukn1,
IN UINTN Ukn2 )

Definition at line 326 of file OcSmcLib.c.

◆ SmcIoVirtualSmcUnknown3()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown3 ( IN APPLE_SMC_IO_PROTOCOL * This,
IN UINTN Ukn1,
IN UINTN Ukn2 )

Definition at line 340 of file OcSmcLib.c.

◆ SmcIoVirtualSmcUnknown4()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown4 ( IN APPLE_SMC_IO_PROTOCOL * This,
IN UINTN Ukn1 )

Definition at line 354 of file OcSmcLib.c.

◆ SmcIoVirtualSmcUnknown5()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown5 ( IN APPLE_SMC_IO_PROTOCOL * This,
IN UINT8 * Data )

Definition at line 367 of file OcSmcLib.c.

◆ SmcIoVirtualSmcUnsupported()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnsupported ( VOID )

Definition at line 273 of file OcSmcLib.c.

◆ SmcIoVirtualSmcWriteValue()

STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcWriteValue ( IN APPLE_SMC_IO_PROTOCOL * This,
IN SMC_KEY Key,
IN SMC_DATA_SIZE Size,
IN SMC_DATA * Value )

Definition at line 100 of file OcSmcLib.c.

Variable Documentation

◆ mAuthenticationKeyEraseEvent

STATIC EFI_EVENT mAuthenticationKeyEraseEvent

Definition at line 34 of file OcSmcLib.c.

◆ mAuthenticationKeyIndex

STATIC CONST UINT8 mAuthenticationKeyIndex = ARRAY_SIZE (mVirtualSmcKeyValue) - 1

Definition at line 62 of file OcSmcLib.c.

◆ mSmcIoProtocol

STATIC APPLE_SMC_IO_PROTOCOL mSmcIoProtocol
Initial value:
= {
0,
FALSE,
}
#define SMC_PORT_BASE
Definition AppleSmc.h:36
#define APPLE_SMC_IO_PROTOCOL_REVISION
Definition AppleSmcIo.h:19
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcMakeKey(IN CHAR8 *Name, OUT SMC_KEY *Key)
Definition OcSmcLib.c:137
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcGetKeyCount(IN APPLE_SMC_IO_PROTOCOL *This, OUT UINT32 *Count)
Definition OcSmcLib.c:170
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown3(IN APPLE_SMC_IO_PROTOCOL *This, IN UINTN Ukn1, IN UINTN Ukn2)
Definition OcSmcLib.c:340
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown1(VOID)
Definition OcSmcLib.c:314
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown5(IN APPLE_SMC_IO_PROTOCOL *This, IN UINT8 *Data)
Definition OcSmcLib.c:367
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcFlashAuth(IN APPLE_SMC_IO_PROTOCOL *This, IN SMC_FLASH_SIZE Size, IN SMC_DATA *Data)
Definition OcSmcLib.c:300
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcFlashWrite(IN APPLE_SMC_IO_PROTOCOL *This, IN UINT32 Unknown, IN SMC_FLASH_SIZE Size, IN SMC_DATA *Data)
Definition OcSmcLib.c:285
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown2(IN APPLE_SMC_IO_PROTOCOL *This, IN UINTN Ukn1, IN UINTN Ukn2)
Definition OcSmcLib.c:326
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcGetKeyInfo(IN APPLE_SMC_IO_PROTOCOL *This, IN SMC_KEY Key, OUT SMC_DATA_SIZE *Size, OUT SMC_KEY_TYPE *Type, OUT SMC_KEY_ATTRIBUTES *Attributes)
Definition OcSmcLib.c:216
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcWriteValue(IN APPLE_SMC_IO_PROTOCOL *This, IN SMC_KEY Key, IN SMC_DATA_SIZE Size, IN SMC_DATA *Value)
Definition OcSmcLib.c:100
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcFlashType(IN APPLE_SMC_IO_PROTOCOL *This, IN SMC_FLASH_TYPE Type)
Definition OcSmcLib.c:260
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcReadValue(IN APPLE_SMC_IO_PROTOCOL *This, IN SMC_KEY Key, IN SMC_DATA_SIZE Size, OUT SMC_DATA *Value)
Definition OcSmcLib.c:67
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcReset(IN APPLE_SMC_IO_PROTOCOL *This, IN UINT32 Mode)
Definition OcSmcLib.c:247
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnknown4(IN APPLE_SMC_IO_PROTOCOL *This, IN UINTN Ukn1)
Definition OcSmcLib.c:354
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcGetKeyFromIndex(IN APPLE_SMC_IO_PROTOCOL *This, IN SMC_KEY_INDEX Index, OUT SMC_KEY *Key)
Definition OcSmcLib.c:193
STATIC EFI_STATUS EFIAPI SmcIoVirtualSmcUnsupported(VOID)
Definition OcSmcLib.c:273

Definition at line 377 of file OcSmcLib.c.

◆ mVirtualSmcKeyValue

STATIC VIRTUALSMC_KEY_VALUE mVirtualSmcKeyValue[6]
Initial value:
= {
},
},
},
},
},
}
}
#define ARRAY_SIZE(Array)
Definition AppleMacEfi.h:34
#define SMC_KEY_ATTRIBUTE_READ
Definition AppleSmc.h:333
#define SMC_KEY_ATTRIBUTE_WRITE
Definition AppleSmc.h:332
#define SMC_KEY_HBKP
Definition AppleSmc.h:356
#define SMC_MODE_APPCODE
Definition AppleSmc.h:112
#define SMC_KEY_KEY
Definition AppleSmc.h:357
#define SMC_KEY_BATP
Definition AppleSmc.h:361
#define SMC_KEY_MSLD
Definition AppleSmc.h:360
@ SmcKeyTypeUint32
Definition AppleSmc.h:293
@ SmcKeyTypeChar
Definition AppleSmc.h:250
@ SmcKeyTypeFlag
Definition AppleSmc.h:252
@ SmcKeyTypeCh8s
Definition AppleSmc.h:249
@ SmcKeyTypeUint8
Definition AppleSmc.h:290
@ SmcKeyTypeUint16
Definition AppleSmc.h:292
#define SMC_KEY_BRSC
Definition AppleSmc.h:359
#define SMC_KEY_RMde
Definition AppleSmc.h:358
STATIC VIRTUALSMC_KEY_VALUE mVirtualSmcKeyValue[6]
Definition OcSmcLib.c:38

Definition at line 38 of file OcSmcLib.c.