diff options
Diffstat (limited to 'Core/EM/OFBD/OEMPWDCK')
-rw-r--r-- | Core/EM/OFBD/OEMPWDCK/OEMPwdCk.c | 250 | ||||
-rw-r--r-- | Core/EM/OFBD/OEMPWDCK/OEMPwdCk.cif | 11 | ||||
-rw-r--r-- | Core/EM/OFBD/OEMPWDCK/OEMPwdCk.h | 74 | ||||
-rw-r--r-- | Core/EM/OFBD/OEMPWDCK/OEMPwdCk.mak | 76 | ||||
-rw-r--r-- | Core/EM/OFBD/OEMPWDCK/OEMPwdCk.sdl | 65 |
5 files changed, 476 insertions, 0 deletions
diff --git a/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.c b/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.c new file mode 100644 index 0000000..99afa2a --- /dev/null +++ b/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.c @@ -0,0 +1,250 @@ +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2011, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** + +//********************************************************************** +// $Header: /Alaska/SOURCE/Modules/OFBD/OEMPWDCK/OEMPwdCk.c 2 3/16/11 10:34p Terrylin $ +// +// $Revision: 2 $ +// +// $Date: 3/16/11 10:34p $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/OFBD/OEMPWDCK/OEMPwdCk.c $ +// +// 2 3/16/11 10:34p Terrylin +// [TAG] EIP51285 +// [Category] Improvement +// [Description] Fill the description for user more clearly. +// [Files] OEMPwdCk.mak +// OEMPwdCk.c +// OEMPwdCk.h +// +// 1 4/13/09 5:47a Lawrencechang +// Initial check-in. +// +// 1 3/25/05 5:37p Markw +// +//********************************************************************** +//<AMI_FHDR_START> +// +// Name: OEMPwdCk.c +// +// Description: +// Password Check protocol is for BIOS to indicate AFU that BIOS password exists and needs to initiate password +// checking before flashing BIOS. AFU will set OEM_PC_CK in dbGetCkSts field and send OFBD data to BIOS to report +// password checking is required or not. +// +// If password check function is requested then BIOS should fill out password length in dwPwdLen field. Afterward AFU +// asks user to input password with specified password length given from BIOS in field dwPwdLen and fill user input +// password in memory buffer after signature of OFBD_EXT_TBL_END for BIOS to do the comparison. +// +//<AMI_FHDR_END> +//********************************************************************** +#include "Efi.h" +#include "token.h" +#include <AmiLib.h> +#include <AmiDxeLib.h> +#include "OEMPwdCk.h" +#include "..\OFBD.h" + +static int ErrorNum = 0; +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// Procedure: OFBDPwdGetHandle +// +// Description: OFBD Password Get Handle +// +// Input: +// IN OUT OFBD_HDR *pOFBDHdr +// Output: +// EFI_STATUS +// +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_STATUS +OFBDPwdGetHandle( + IN OUT OFBD_HDR *pOFBDHdr) +{ + EFI_STATUS Status = EFI_SUCCESS; + +#if OEM_PWDCK_SAMPLE_TEST + char *DisOemStrPwd1 = "Password"; + char *DisOemStrPwd2 = "Password Retry count exceeded!"; + UINT8 *pOFBDTblEnd; + OFBD_TC_52_PC_STRUCT *PwdCkStructPtr; + + pOFBDTblEnd = (UINT8 *)((UINT8 *)pOFBDHdr + (pOFBDHdr->OFBD_Size)); + PwdCkStructPtr = (OFBD_TC_52_PC_STRUCT *)((UINT8 *)pOFBDHdr + pOFBDHdr->OFBD_HDR_SIZE + sizeof(OFBD_EXT_HDR)); + PwdCkStructPtr->dbRetSts = OEM_RS_PC_REQ; + PwdCkStructPtr->dwPwdLen = 7; + if(ErrorNum < PASSWORD_RETRY_NUM) + { + //pOFBDHdr->OFBD_RS |= OFBD_RS_DIS_OEMSTR; + //Strcpy((char *)pOFBDTblEnd, DisOemStrPwd1); + } + else + { + PwdCkStructPtr->dbRetSts |= OEM_RS_PC_TIMES_EXCEEDED; + //pOFBDHdr->OFBD_RS |= OFBD_RS_DIS_OEMSTR; + //Strcpy((char *)pOFBDTblEnd, DisOemStrPwd2); + } +#endif + + return(Status); +} + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// Procedure: OFBDPwdCheckHandle +// +// Description: OFBD Password Check Handle +// +// Input: +// IN OUT OFBD_HDR *pOFBDHdr +// Output: +// EFI_STATUS +// +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_STATUS +OFBDPwdCheckHandle( + IN OUT OFBD_HDR *pOFBDHdr) +{ + EFI_STATUS Status = EFI_SUCCESS; + +#if OEM_PWDCK_SAMPLE_TEST + char *DisOemStrPwdOK = "Password Comparison successes!"; + char *DisOemStrPwdErr = "Password Comparison error!"; + char *DisOemStrPwdErr2 = "Password Retry count exceeded!"; + char *Password = "0123456"; + UINT8 *pOFBDTblEnd; + OFBD_TC_52_PC_STRUCT *PwdCkStructPtr; + + PwdCkStructPtr = (OFBD_TC_52_PC_STRUCT *)((UINT8 *)pOFBDHdr + pOFBDHdr->OFBD_HDR_SIZE + sizeof(OFBD_EXT_HDR)); + pOFBDTblEnd = (UINT8 *)((UINT8 *)pOFBDHdr + (pOFBDHdr->OFBD_Size)); + if(!MemCmp(pOFBDTblEnd, Password, PwdCkStructPtr->dwPwdLen)) + { + PwdCkStructPtr->dbRetSts |= OEM_RS_PC_CK_OK; + //pOFBDHdr->OFBD_RS |= OFBD_RS_DIS_OEMSTR; + //Strcpy((char *)pOFBDTblEnd, DisOemStrPwdOK); + } + else + { + ErrorNum++; + PwdCkStructPtr->dbRetSts |= 0; + if(ErrorNum < PASSWORD_RETRY_NUM) + { + //pOFBDHdr->OFBD_RS |= OFBD_RS_DIS_OEMSTR; + //Strcpy((char *)pOFBDTblEnd, DisOemStrPwdErr); + } + else + { + PwdCkStructPtr->dbRetSts |= OEM_RS_PC_TIMES_EXCEEDED; + //pOFBDHdr->OFBD_RS |= OFBD_RS_DIS_OEMSTR; + //Strcpy((char *)pOFBDTblEnd, DisOemStrPwdErr2); + } + } + +#endif + + return(Status); +} + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// Procedure: OFBDEntryPoint +// +// Description: OFBD OEM Password CHECK Entry Point +// +// Input: +// IN VOID *Buffer +// IN OUT UINT8 *pOFBDDataHandled +// Output: +// VOID +// +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +VOID OEMPWDCKEntry ( + IN VOID *Buffer, + IN OUT UINT8 *pOFBDDataHandled ) +{ + OFBD_HDR *pOFBDHdr; + OFBD_EXT_HDR *pOFBDExtHdr; + VOID *pOFBDTblEnd; + OFBD_TC_52_PC_STRUCT *PwdCkStructPtr; + + if(*pOFBDDataHandled == 0) + { + pOFBDHdr = (OFBD_HDR *)Buffer; + pOFBDExtHdr = (OFBD_EXT_HDR *)((UINT8 *)Buffer + (pOFBDHdr->OFBD_HDR_SIZE)); + PwdCkStructPtr = (OFBD_TC_52_PC_STRUCT *)((UINT8 *)pOFBDExtHdr + sizeof(OFBD_EXT_HDR)); + pOFBDTblEnd = (VOID *)((UINT8 *)Buffer + (pOFBDHdr->OFBD_Size)); + + //TRACE((-1,"pOFBDHdr address is:%x ------\n",pOFBDHdr)); + //TRACE((-1,"pOFBDTblEnd address is:%x ------\n",*(UINT64 *)((UINT8 *)pOFBDTblEnd -sizeof(OFBD_END)))); + + if(pOFBDHdr->OFBD_FS & OFBD_FS_PWD) + { + //Check Type Code ID + if(pOFBDExtHdr->TypeCodeID == OFBD_EXT_TC_PWD) + { + //IoWrite32(0x300, *(UINT32 *)((UINT8 *)pOFBDTblEnd -4)); //debug + if(PwdCkStructPtr->dbGetCkSts == OFBD_TC_OPC_GET) + { + if(OFBDPwdGetHandle(pOFBDHdr) == EFI_SUCCESS) + { + //OEM ROM ID Data Handled. + *pOFBDDataHandled = 0xFF; + return; + } + } + else if(PwdCkStructPtr->dbGetCkSts == OFBD_TC_OPC_CHECK) + { + if(OFBDPwdCheckHandle(pOFBDHdr) == EFI_SUCCESS) + { + //OEM ROM ID Data Handled. + *pOFBDDataHandled = 0xFF; + return; + } + } + /*//Not OEM ROM ID Data. + *pOFBDDataHandled = 0; + return;*/ + } + //else + //{ + //Error occured + *pOFBDDataHandled = 0xFE; + return; + //} + } + } + + return; +} + +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2011, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** diff --git a/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.cif b/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.cif new file mode 100644 index 0000000..080fa36 --- /dev/null +++ b/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.cif @@ -0,0 +1,11 @@ +<component> + name = "OEM Password Checking" + category = ModulePart + LocalRoot = "Core\EM\OFBD\OEMPWDCK\" + RefName = "OFBD_OEMPWDCK" +[files] +"OEMPwdCk.sdl" +"OEMPwdCk.mak" +"OEMPwdCk.c" +"OEMPwdCk.h" +<endComponent> diff --git a/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.h b/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.h new file mode 100644 index 0000000..a53a8fc --- /dev/null +++ b/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.h @@ -0,0 +1,74 @@ +//**********************************************************************// +//**********************************************************************// +//** **// +//** (C)Copyright 1985-2011, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//**********************************************************************// +//**********************************************************************// + +//********************************************************************** +// $Header: /Alaska/SOURCE/Modules/OFBD/OEMPWDCK/OEMPwdCk.h 2 3/16/11 10:34p Terrylin $ +// +// $Revision: 2 $ +// +// $Date: 3/16/11 10:34p $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/OFBD/OEMPWDCK/OEMPwdCk.h $ +// +// 2 3/16/11 10:34p Terrylin +// [TAG] EIP51285 +// [Category] Improvement +// [Description] Fill the description for user more clearly. +// [Files] OEMPwdCk.mak +// OEMPwdCk.c +// OEMPwdCk.h +// +// 1 4/13/09 5:47a Lawrencechang +// Initial check-in. +// +// 1 3/13/06 1:16a Felixp +// +//********************************************************************** +//<AMI_FHDR_START> +// +// Name: OEMPwdCk.h +// +// Description: Header file for the OEMPwdCk +// +//<AMI_FHDR_END> +//********************************************************************** +#ifndef _EFI_OEMPWDCK_H_ +#define _EFI_OEMPWDCK_H_ +#ifdef __cplusplus +extern "C" { +#endif + +#define RETURN_ERR 1 + +/****** DO NOT WRITE BELOW THIS LINE *******/ +#ifdef __cplusplus +} +#endif +#endif + +//**********************************************************************// +//**********************************************************************// +//** **// +//** (C)Copyright 1985-2011, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//**********************************************************************// +//**********************************************************************// diff --git a/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.mak b/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.mak new file mode 100644 index 0000000..2926ec5 --- /dev/null +++ b/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.mak @@ -0,0 +1,76 @@ +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2011, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#************************************************************************* + +#************************************************************************* +# $Header: /Alaska/SOURCE/Modules/OFBD/OEMPWDCK/OEMPwdCk.mak 2 3/16/11 10:34p Terrylin $ +# +# $Revision: 2 $ +# +# $Date: 3/16/11 10:34p $ +#************************************************************************* +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/OFBD/OEMPWDCK/OEMPwdCk.mak $ +# +# 2 3/16/11 10:34p Terrylin +# [TAG] EIP51285 +# [Category] Improvement +# [Description] Fill the description for user more clearly. +# [Files] OEMPwdCk.mak +# OEMPwdCk.c +# OEMPwdCk.h +# +# 1 4/13/09 5:47a Lawrencechang +# Initial check-in. +# +# 1 3/18/07 5:23p Felixp +# +#************************************************************************* +#<AMI_FHDR_START> +# +# Name: OEMPwdCk.mak +# +# Description: Make file for the OEMPwdCk.obj +# +#<AMI_FHDR_END> +#************************************************************************* +all : OEMPWDCK + +OEMPWDCK : $(BUILD_DIR)\OEMPwdCk.mak OEMPWDCKBin + +$(BUILD_DIR)\OEMPwdCk.mak : $(OFBD_OEMPWDCK_DIR)\$(@B).cif $(OFBD_OEMPWDCK_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(OFBD_OEMPWDCK_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +OEMPWDCKBin : + @set INCLUDE=%%INCLUDE%% + $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\OEMPwdCk.mak all\ + NAME=OEMPWDCK \ + TYPE=LIBRARY LIBRARY_NAME=$(OEMPWDCKLIB) + +$(OEMPWDCKLIB) : OEMPWDCK +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2011, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#************************************************************************* + diff --git a/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.sdl b/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.sdl new file mode 100644 index 0000000..0d3a8d7 --- /dev/null +++ b/Core/EM/OFBD/OEMPWDCK/OEMPwdCk.sdl @@ -0,0 +1,65 @@ +TOKEN + Name = "OEMPWDCK_SUPPORT" + Value = "0" + Help = "Main switch to enable OEM Password Checking support in Project" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Master = Yes +End + +TOKEN + Name = "OEMPWDCKLIB" + Value = "$(BUILD_DIR)\OEMPWDCK.lib" + TokenType = Expression + TargetMAK = Yes +End + +TOKEN + Name = "[OFBD OEM Password Checking]" + Help = "See detail description in each token's help box." + TokenType = Expression + Lock = Yes +End + +TOKEN + Name = "OEM_PWDCK_SAMPLE_TEST" + Value = "1" + Help = "Test Supervisor password checking Function" + TokenType = Boolean + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "PASSWORD_RETRY_NUM" + Value = "3" + Help = "Password Retry Num." + TokenType = Integer + TargetMAK = Yes + TargetH = Yes + Token = "OEM_PWDCK_SAMPLE_TEST" "=" "1" +End + +PATH + Name = "OFBD_OEMPWDCK_DIR" +End + +MODULE + Help = "Includes OEMPwdCk.mak to Project" + File = "OEMPwdCk.mak" +End + +ELINK + Name = "$(BUILD_DIR)\OEMPWDCK.lib" + Parent = "OFBDLISTLIB" + InvokeOrder = AfterParent +End + +ELINK + Name = "OEMPWDCKEntry," + Parent = "OFBDPartsList" + Token = "OEMPWDCK_SUPPORT" "=" "1" + InvokeOrder = AfterParent +End + |