From 31bb486c913795c8b67d1c4dbaae2bdec4943fc9 Mon Sep 17 00:00:00 2001 From: raywu Date: Thu, 13 Sep 2018 16:11:56 +0800 Subject: SLP1.0 / SLP2.0 / Default Password / Logo / Fix Boot Order --- .../OEMDefaultPwdHook/OEMDefaultPwdHook.c | 164 +++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 Board/AAEON/OEMFeatures/OEMDefaultPwdHook/OEMDefaultPwdHook.c (limited to 'Board/AAEON/OEMFeatures/OEMDefaultPwdHook/OEMDefaultPwdHook.c') diff --git a/Board/AAEON/OEMFeatures/OEMDefaultPwdHook/OEMDefaultPwdHook.c b/Board/AAEON/OEMFeatures/OEMDefaultPwdHook/OEMDefaultPwdHook.c new file mode 100644 index 0000000..7211a96 --- /dev/null +++ b/Board/AAEON/OEMFeatures/OEMDefaultPwdHook/OEMDefaultPwdHook.c @@ -0,0 +1,164 @@ +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2008, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 6145-F Northbelt Pkwy, Norcross, GA 30071 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** + +//********************************************************************** +// $Header: $ +// +// $Revision: $ +// +// $Date: $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: $ +// +//********************************************************************** +// +// +// Name: +// +// Description: +// +// +//********************************************************************** + +#include "token.h" +#include +#include +#include +#include + +#if EFI_SPECIFICATION_VERSION>0x20000 +#include +#include +#include +#else +#include +#endif //EFI_SPECIFICATION_VERSION>0x20000 + +#include "commonoem.h" + +extern VOID PasswordEncodeHook( CHAR16 *Password, UINTN MaxSize); +extern VOID *VarGetNvramName( CHAR16 *name, EFI_GUID *guid, UINT32 *attributes, UINTN *size ); +extern EFI_STATUS VarSetNvramName( CHAR16 *name, EFI_GUID *guid, UINT32 attributes, VOID *buffer, UINTN size ); +extern VOID *VarGetNvram( UINT32 variable, UINTN *size ); +extern EFI_STATUS VarSetNvram( UINT32 variable, VOID *buffer, UINTN size ); +extern VOID *EfiLibAllocateZeroPool ( IN UINTN AllocationSize); +extern VOID MemFreePointer( VOID **ptr ); +extern VOID + EfiStrCpy ( + IN CHAR16 *Destination, + IN CHAR16 *Source + ); +extern VOID MemCopy( VOID *dest, VOID *src, UINTN size ); +extern VOID MemSet( VOID *buffer, UINTN size, UINT8 value ); + +extern EFI_RUNTIME_SERVICES *gRT; + + +#define VARIABLE_ID_AMITSESETUP 5 +#define ___INTERNAL_CONVERT_TO_WSTRING___(a) L#a +#define CONVERT_TO_WSTRING(a) ___INTERNAL_CONVERT_TO_WSTRING___(a) + +VOID OemSetDefaultPasswordHook(VOID) +{ + EFI_STATUS Status; + //CHAR16 *AdminPassword, *UserPassword; + CHAR16 *AdminPassword; + #if defined(USER_PASSWORD_SUPPORT) && (USER_PASSWORD_SUPPORT == 1) + CHAR16 *UserPassword; + #endif + CHAR16 *EncPass=NULL; + const UINTN TsePasswordLength = SETUP_PASSWORD_LENGTH; + + EFI_GUID AmiTseSetupGuid = AMITSESETUP_GUID; + AMITSESETUP AmiTseSetup; + UINT32 Attrib=0; + UINTN Size=0; + + UINT16 Buffer; + EFI_GUID EfiGlobalVariableGuid = EFI_GLOBAL_VARIABLE_GUID; + + Size = sizeof(UINT16); + + // Check first boot + Status = gRT->GetVariable(L"OemFirstBoot", &EfiGlobalVariableGuid, NULL, &Size, &Buffer); + if (EFI_ERROR(Status)) + { + Buffer = 1; + Status = gRT->SetVariable(L"OemFirstBoot", + &EfiGlobalVariableGuid, + EFI_VARIABLE_NON_VOLATILE | + EFI_VARIABLE_BOOTSERVICE_ACCESS | + EFI_VARIABLE_RUNTIME_ACCESS, + Size, + &Buffer); + } + else + return; + + // Initial + AdminPassword = EfiLibAllocateZeroPool((TsePasswordLength + 1)*sizeof(CHAR16)); + #if defined(USER_PASSWORD_SUPPORT) && (USER_PASSWORD_SUPPORT == 1) + UserPassword = EfiLibAllocateZeroPool((TsePasswordLength + 1)*sizeof(CHAR16)); + #endif + EncPass = EfiLibAllocateZeroPool((TsePasswordLength + 1)*sizeof(CHAR16)); + + AdminPassword = CONVERT_TO_WSTRING(DEFAULT_ADMIN_PASSWORD); + #if defined(USER_PASSWORD_SUPPORT) && (USER_PASSWORD_SUPPORT == 1) + UserPassword = CONVERT_TO_WSTRING(DEFAULT_USER_PASSWORD); + #endif + + // Get Setting + Size = sizeof(AMITSESETUP); + Status = gRT->GetVariable(L"AMITSESetup", &AmiTseSetupGuid, &Attrib, &Size, &AmiTseSetup); + + // Set Admin password + EfiStrCpy( EncPass, AdminPassword ); + PasswordEncodeHook( EncPass, TsePasswordLength*sizeof(CHAR16)); + MemCopy(&AmiTseSetup.AdminPassword, EncPass, TsePasswordLength*sizeof(CHAR16)); + + // Clear EncPass buffer + MemSet(EncPass, (TsePasswordLength + 1)*sizeof(CHAR16), 0); + + #if defined(USER_PASSWORD_SUPPORT) && (USER_PASSWORD_SUPPORT == 1) + // Set user password + EfiStrCpy( EncPass, UserPassword); + PasswordEncodeHook( EncPass, TsePasswordLength*sizeof(CHAR16)); + MemCopy(&AmiTseSetup.UserPassword, EncPass, TsePasswordLength*sizeof(CHAR16)); + #endif + + Status = gRT->SetVariable(L"AMITSESetup", &AmiTseSetupGuid, Attrib, Size, &AmiTseSetup); + + // Free all pool + MemFreePointer((VOID**) &EncPass); + MemFreePointer((VOID**) &AdminPassword); + #if defined(USER_PASSWORD_SUPPORT) && (USER_PASSWORD_SUPPORT == 1) + MemFreePointer((VOID**) &UserPassword); + #endif +} + +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2008, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 6145-F Northbelt Pkwy, Norcross, GA 30071 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** -- cgit v1.2.3