Newer
Older
AMI-Aptio-BIOS-Reversed / TlsAuthConfigDxe / TlsAuthConfigDxe.md
@Ajax Dong Ajax Dong 2 days ago 4 KB Init

TlsAuthConfigDxe

Function Table

Address Name Description
TlsAuthConfigExtractConfig
TlsAuthConfigRouteConfig
TlsAuthConfigCallback
TlsAuthConfigInstallHiiConfigAccess
TlsAuthConfigLibraryInit
TlsAuthConfigUnload
TlsAuthConfigDxeEntry
TlsAuthConfigDriverBindingSupported
TlsAuthConfigDriverBindingStart
TlsAuthConfigDriverBindingStop
TlsAuthConfigPrivateInit
TlsAuthConfigPrivateDestroy
IsCertificateEntryType
Global UEFI System Table Pointers
Populated by TlsAuthConfigDriverBindingStart (sub_4CC) via
UefiBootServicesTableLib / UefiRuntimeServicesTableLib
EFI_HANDLE gImageHandle = NULL; / qword_CDD8 /
HII protocol interface pointers (populated during driver start)
VOID gHiiConfigRouting = NULL; / qword_CE00 */
GUID Definitions (from .rdata section)
EFI_GUID gEfiDriverBindingProtocolGuid = { 0x5B1B31A1, 0x9562, 0x11D2, { 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B } };
Forward Declarations
EFI_STATUS EFIAPI
Library Helpers (BaseMemoryLib / BaseLib linked implementations)
Driver Binding Protocol Entry Point
Initialise the HII system table (locates HII config routing, etc.)
InitializeHiiConfigAccess (NULL); / sub_6504 placeholder /
Locate HII Config Access Protocol
Status = gBootServices->LocateProtocol (
Locate HII Config Routing Protocol
Locate HII Database Protocol
Locate Platform Setup Transport and HII String
Open the private protocol to retrieve our context
Status = gBootServices->OpenProtocol (
Uninstall the protocol and free the private data
Step 1: initialise UEFI library globals + HII protocols
TlsAuthConfigLibraryInit (ImageHandle, SystemTable);
Step 2: install the Driver Binding Protocol onto our image handle
DriverBinding = AllocateZeroPool (sizeof (EFI_DRIVER_BINDING_PROTOCOL));
Step 3: store the Unload handler (at Private-> + 88 = +0x58)
Step 4: install HII Config Access protocol
return TlsAuthConfigInstallHiiConfigAccess (ImageHandle);
Driver Binding Protocol Implementation
If the TLS Auth Config Protocol is already installed, return
Allocate private context (144 bytes)
Private = AllocateZeroPool (144);
Initialise the private context
Status = TlsAuthConfigPrivateInit (Private);
Install the TLS Auth Config Protocol on the controller
Status = gBootServices->InstallMultipleProtocolInterfaces (
Private Data Helpers
Stores child init function pointers, opens TLS config protocol
initialises HII handles, etc.
return EFI_SUCCESS;
Close any open protocols, free child data
HII Config Access Protocol (sub_758)
Allocate HII opcode handles
FormOpCodeHandle = HiiAllocateOpCodeHandle ();
Read the TlsCaCertificate variable for size
VarSize = 0;
This entry contains TLS certificates
DescLen = Entry->CertDescLen; / field at +20 /
Render certificate identifier as a HII text opcode
UnicodeSPrint (
Create the opcode entry in template buffer
ZeroMem ((CHAR8 *)CertStr + 0x2, 0xE);
Append cert list handle to main form handle; clean up
HiiAppendOpCodeList (FormOpCodeHandle, CertListOpCodeHandle);
Allocate buffers
CertVarData = AllocateZeroPool (VarSize);
Iterate entries and copy to CertVarCopy, skipping the deleted cert
RemainingSize = (UINT32)VarSize;
If an entry was deleted, compact and write the variable back
if (EntryDeleted) {
HII Config Access Install (sub_450 continuation)
Allocate the HII Config Access protocol instance
Private = AllocateZeroPool (sizeof (TLS_AUTH_CONFIG_PRIVATE));
Build the Config Access protocol interface on the private struct
ConfigAccess = &Private->ConfigAccess;
Install the protocol
HandlePtr = &Private->DriverImageHandle;
Compare the GUID at CertificationEntry + 8 with the expected GUID
return CompareGuid (

Generated by HR650X BIOS Decompilation Project