summaryrefslogtreecommitdiff
path: root/Core/EM/OFBD/OEMPWDCK
diff options
context:
space:
mode:
authorraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
committerraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
commitb7c51c9cf4864df6aabb99a1ae843becd577237c (patch)
treeeebe9b0d0ca03062955223097e57da84dd618b9a /Core/EM/OFBD/OEMPWDCK
downloadzprj-master.tar.xz
init. 1AQQW051HEADmaster
Diffstat (limited to 'Core/EM/OFBD/OEMPWDCK')
-rw-r--r--Core/EM/OFBD/OEMPWDCK/OEMPwdCk.c250
-rw-r--r--Core/EM/OFBD/OEMPWDCK/OEMPwdCk.cif11
-rw-r--r--Core/EM/OFBD/OEMPWDCK/OEMPwdCk.h74
-rw-r--r--Core/EM/OFBD/OEMPWDCK/OEMPwdCk.mak76
-rw-r--r--Core/EM/OFBD/OEMPWDCK/OEMPwdCk.sdl65
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
+