git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2186 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			530 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			530 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*++
 | 
						|
 | 
						|
Copyright (c) 2006, Intel Corporation                                                         
 | 
						|
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.             
 | 
						|
 | 
						|
 | 
						|
Module Name:
 | 
						|
  SecMain.h
 | 
						|
 | 
						|
Abstract:
 | 
						|
  Include file for host API based SEC
 | 
						|
 | 
						|
--*/
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
 | 
						|
 | 
						|
#define STACK_SIZE                0x20000      
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  EFI_PHYSICAL_ADDRESS  Address;
 | 
						|
  UINT64                Size;
 | 
						|
} UNIX_FD_INFO;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  EFI_PHYSICAL_ADDRESS  Memory;
 | 
						|
  UINT64                Size;
 | 
						|
} UNIX_SYSTEM_MEMORY;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SecWinNtPeiLoadFile (
 | 
						|
  VOID                  *Pe32Data,  // TODO: add IN/OUT modifier to Pe32Data
 | 
						|
  EFI_PHYSICAL_ADDRESS  *ImageAddress,  // TODO: add IN/OUT modifier to ImageAddress
 | 
						|
  UINT64                *ImageSize,  // TODO: add IN/OUT modifier to ImageSize
 | 
						|
  EFI_PHYSICAL_ADDRESS  *EntryPoint  // TODO: add IN/OUT modifier to EntryPoint
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  Pe32Data      - TODO: add argument description
 | 
						|
  ImageAddress  - TODO: add argument description
 | 
						|
  ImageSize     - TODO: add argument description
 | 
						|
  EntryPoint    - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SecWinNtPeiAutoScan (
 | 
						|
  IN  UINTN                 Index,
 | 
						|
  OUT EFI_PHYSICAL_ADDRESS  *MemoryBase,
 | 
						|
  OUT UINT64                *MemorySize
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  Index       - TODO: add argument description
 | 
						|
  MemoryBase  - TODO: add argument description
 | 
						|
  MemorySize  - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
VOID *
 | 
						|
EFIAPI
 | 
						|
SecWinNtWinNtThunkAddress (
 | 
						|
  VOID
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  InterfaceSize - TODO: add argument description
 | 
						|
  InterfaceBase - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SecWinNtWinNtFwhAddress (
 | 
						|
  IN OUT UINT64                *FwhSize,
 | 
						|
  IN OUT EFI_PHYSICAL_ADDRESS  *FwhBase
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  FwhSize - TODO: add argument description
 | 
						|
  FwhBase - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SecPeiReportStatusCode (
 | 
						|
  IN EFI_PEI_SERVICES         **PeiServices,
 | 
						|
  IN EFI_STATUS_CODE_TYPE     CodeType,
 | 
						|
  IN EFI_STATUS_CODE_VALUE    Value,
 | 
						|
  IN UINT32                   Instance,
 | 
						|
  IN EFI_GUID                 * CallerId,
 | 
						|
  IN EFI_STATUS_CODE_DATA     * Data OPTIONAL
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  PeiServices - TODO: add argument description
 | 
						|
  CodeType    - TODO: add argument description
 | 
						|
  Value       - TODO: add argument description
 | 
						|
  Instance    - TODO: add argument description
 | 
						|
  CallerId    - TODO: add argument description
 | 
						|
  Data        - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
INTN
 | 
						|
EFIAPI
 | 
						|
main (
 | 
						|
  IN  INTN  Argc,
 | 
						|
  IN  CHAR8 **Argv,
 | 
						|
  IN  CHAR8 **Envp
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  Argc  - TODO: add argument description
 | 
						|
  Argv  - TODO: add argument description
 | 
						|
  Envp  - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
VOID
 | 
						|
SecLoadFromCore (
 | 
						|
  IN  UINTN   LargestRegion,
 | 
						|
  IN  UINTN   LargestRegionSize,
 | 
						|
  IN  UINTN   BootFirmwareVolumeBase,
 | 
						|
  IN  VOID    *PeiCoreFile
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  LargestRegion           - TODO: add argument description
 | 
						|
  LargestRegionSize       - TODO: add argument description
 | 
						|
  BootFirmwareVolumeBase  - TODO: add argument description
 | 
						|
  PeiCoreFile             - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
SecLoadFile (
 | 
						|
  IN  VOID                    *Pe32Data,
 | 
						|
  IN  EFI_PHYSICAL_ADDRESS    *ImageAddress,
 | 
						|
  IN  UINT64                  *ImageSize,
 | 
						|
  IN  EFI_PHYSICAL_ADDRESS    *EntryPoint
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  Pe32Data      - TODO: add argument description
 | 
						|
  ImageAddress  - TODO: add argument description
 | 
						|
  ImageSize     - TODO: add argument description
 | 
						|
  EntryPoint    - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
SecFfsFindPeiCore (
 | 
						|
  IN  EFI_FIRMWARE_VOLUME_HEADER  *FwVolHeader,
 | 
						|
  OUT VOID                        **Pe32Data
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  FwVolHeader - TODO: add argument description
 | 
						|
  Pe32Data    - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
SecFfsFindNextFile (
 | 
						|
  IN EFI_FV_FILETYPE             SearchType,
 | 
						|
  IN EFI_FIRMWARE_VOLUME_HEADER  *FwVolHeader,
 | 
						|
  IN OUT EFI_FFS_FILE_HEADER     **FileHeader
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  SearchType  - TODO: add argument description
 | 
						|
  FwVolHeader - TODO: add argument description
 | 
						|
  FileHeader  - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
SecFfsFindSectionData (
 | 
						|
  IN EFI_SECTION_TYPE      SectionType,
 | 
						|
  IN EFI_FFS_FILE_HEADER   *FfsFileHeader,
 | 
						|
  IN OUT VOID              **SectionData
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  SectionType   - TODO: add argument description
 | 
						|
  FfsFileHeader - TODO: add argument description
 | 
						|
  SectionData   - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SecWinNtPeCoffLoaderLoadAsDll (
 | 
						|
  IN CHAR8    *PdbFileName,
 | 
						|
  IN VOID     **ImageEntryPoint,
 | 
						|
  OUT VOID    **ModHandle
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  PdbFileName     - TODO: add argument description
 | 
						|
  ImageEntryPoint - TODO: add argument description
 | 
						|
  ModHandle       - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SecWinNtPeCoffLoaderFreeLibrary (
 | 
						|
  OUT VOID    *ModHandle
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  ModHandle - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SecWinNtFdAddress (
 | 
						|
  IN     UINTN                 Index,
 | 
						|
  IN OUT EFI_PHYSICAL_ADDRESS  *FdBase,
 | 
						|
  IN OUT UINT64                *FdSize
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  Index   - TODO: add argument description
 | 
						|
  FdBase  - TODO: add argument description
 | 
						|
  FdSize  - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
GetImageReadFunction (
 | 
						|
  IN PE_COFF_LOADER_IMAGE_CONTEXT          *ImageContext,
 | 
						|
  IN EFI_PHYSICAL_ADDRESS                  *TopOfMemory
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  ImageContext  - TODO: add argument description
 | 
						|
  TopOfMemory   - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SecImageRead (
 | 
						|
  IN     VOID    *FileHandle,
 | 
						|
  IN     UINTN   FileOffset,
 | 
						|
  IN OUT UINTN   *ReadSize,
 | 
						|
  OUT    VOID    *Buffer
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  FileHandle  - TODO: add argument description
 | 
						|
  FileOffset  - TODO: add argument description
 | 
						|
  ReadSize    - TODO: add argument description
 | 
						|
  Buffer      - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
CHAR16                            *
 | 
						|
AsciiToUnicode (
 | 
						|
  IN  CHAR8   *Ascii,
 | 
						|
  IN  UINTN   *StrLen OPTIONAL
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  Ascii   - TODO: add argument description
 | 
						|
  StrLen  - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
UINTN
 | 
						|
CountSeperatorsInString (
 | 
						|
  IN  const CHAR16   *String,
 | 
						|
  IN  CHAR16   Seperator
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  String    - TODO: add argument description
 | 
						|
  Seperator - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SecNt32PeCoffGetImageInfo (
 | 
						|
  IN EFI_PEI_PE_COFF_LOADER_PROTOCOL          *This,
 | 
						|
  IN OUT PE_COFF_LOADER_IMAGE_CONTEXT         *ImageContext
 | 
						|
  );
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SecNt32PeCoffLoadImage (
 | 
						|
  IN EFI_PEI_PE_COFF_LOADER_PROTOCOL          *This,
 | 
						|
  IN OUT PE_COFF_LOADER_IMAGE_CONTEXT         *ImageContext
 | 
						|
  );
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SecNt32PeCoffRelocateImage (
 | 
						|
  IN EFI_PEI_PE_COFF_LOADER_PROTOCOL          *This,
 | 
						|
  IN OUT PE_COFF_LOADER_IMAGE_CONTEXT         *ImageContext
 | 
						|
  );
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SecNt32PeCoffUnloadimage (
 | 
						|
  IN EFI_PEI_PE_COFF_LOADER_PROTOCOL      *This,
 | 
						|
  IN PE_COFF_LOADER_IMAGE_CONTEXT         *ImageContext
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  EFI_PEI_PE_COFF_LOADER_PROTOCOL PeCoff;
 | 
						|
  VOID                            *ModHandle;
 | 
						|
} EFI_PEI_PE_COFF_LOADER_PROTOCOL_INSTANCE;
 | 
						|
 | 
						|
extern EFI_UNIX_THUNK_PROTOCOL  *gUnix;
 |