From abf3adcd2f37f4e278fc9ef7634ca0c8f5171893 Mon Sep 17 00:00:00 2001 From: kavsrf Date: Sun, 5 Feb 2017 17:31:28 +0300 Subject: picture password bmp and DcsProp can be in secregion on separate flash Tables overlay configuration commands --- DcsCfg/DcsCfgCrypt.c | 13 ++- DcsCfg/DcsCfgMain.c | 44 +++++++++- DcsInt/DcsInt.c | 50 ++++++++++- Include/Library/CommonLib.h | 30 +++++++ Include/Library/DcsCfgLib.h | 27 ++++++ Include/Library/PasswordLib.h | 7 ++ Library/CommonLib/GptRead.c | 157 +++++++++++++++++++++++++++++++++- Library/DcsCfgLib/GptEdit.c | 133 ++++++++++++++++++++++++++++ Library/PasswordLib/PicturePassword.c | 10 +-- Library/PasswordLib/PlatformID.c | 86 +++++++++++++++++++ Library/VeraCryptLib/DcsConfig.c | 4 +- Library/VeraCryptLib/DcsConfig.h | 2 + Library/VeraCryptLib/DcsVeraCrypt.c | 30 ++++--- 13 files changed, 566 insertions(+), 27 deletions(-) diff --git a/DcsCfg/DcsCfgCrypt.c b/DcsCfg/DcsCfgCrypt.c index 45523dd..94f8768 100644 --- a/DcsCfg/DcsCfgCrypt.c +++ b/DcsCfg/DcsCfgCrypt.c @@ -1380,6 +1380,8 @@ SecRigionAdd( EFI_BLOCK_IO_PROTOCOL* bio; UINT8* regionData; UINTN regionSize; + UINT8* padding = NULL; + UINTN paddingSize = 0; INTN deListHdrIdOk; res = FileLoad(NULL, (CHAR16*)DcsDiskEntrysFileName, ®ionData, ®ionSize); if (EFI_ERROR(res)) { @@ -1400,9 +1402,18 @@ SecRigionAdd( res = EFI_ACCESS_DENIED; goto error; } - + paddingSize = regionSize & 0x01FF; + regionSize -= paddingSize; res = bio->WriteBlocks(bio, bio->Media->MediaId, 62 + regIdx * (128 * 1024 / 512), regionSize, regionData); + if (!EFI_ERROR(res) && + paddingSize != 0) { + padding = MEM_ALLOC(512); + CopyMem(padding, regionData + regionSize, paddingSize); + res = bio->WriteBlocks(bio, bio->Media->MediaId, 62 + regIdx * ((128 * 1024 ) / 512) + regionSize / 512, 512, padding); + MEM_FREE(padding); + } + if (EFI_ERROR(res)) { ERR_PRINT(L"Write: %r\n", res); goto error; diff --git a/DcsCfg/DcsCfgMain.c b/DcsCfg/DcsCfgMain.c index 6e4c863..ec92b25 100644 --- a/DcsCfg/DcsCfgMain.c +++ b/DcsCfg/DcsCfgMain.c @@ -81,8 +81,22 @@ https://opensource.org/licenses/LGPL-3.0 #define OPT_TPM_PCRS L"-tpmpcrs" #define OPT_TPM_NVLIST L"-tpmnvlist" #define OPT_TPM_CFG L"-tpmcfg" + +#define OPT_TBL_FILE L"-tbf" +#define OPT_TBL_ZERO L"-tbz" +#define OPT_TBL_LIST L"-tbl" +#define OPT_TBL_NAME L"-tbn" +#define OPT_TBL_DELETE L"-tbd" +#define OPT_TBL_APPEND L"-tba" + STATIC CONST SHELL_PARAM_ITEM ParamList[] = { - { OPT_DISK_LIST, TypeValue }, + { OPT_TBL_FILE, TypeValue }, + { OPT_TBL_ZERO, TypeFlag }, + { OPT_TBL_LIST, TypeFlag }, + { OPT_TBL_DELETE, TypeFlag }, + { OPT_TBL_NAME, TypeValue }, + { OPT_TBL_APPEND, TypeValue }, + { OPT_DISK_LIST, TypeValue }, { OPT_DISK_CHECK, TypeFlag }, { OPT_DISK_START, TypeValue }, { OPT_DISK_END, TypeValue }, @@ -228,6 +242,34 @@ DcsCfgMain( DcsDiskEntrysFileName = ShellCommandLineGetValue(Package, OPT_PARTITION_FILE); } + if (ShellCommandLineGetFlag(Package, OPT_TBL_FILE)) { + DcsTablesFileName = ShellCommandLineGetValue(Package, OPT_TBL_FILE); + } + + if (ShellCommandLineGetFlag(Package, OPT_TBL_DELETE) && + ShellCommandLineGetFlag(Package, OPT_TBL_NAME) + ) { + CONST CHAR16* opt1 = NULL; + opt1 = ShellCommandLineGetValue(Package, OPT_TBL_NAME); + res = TablesDel(opt1); + } + + if (ShellCommandLineGetFlag(Package, OPT_TBL_APPEND) && + ShellCommandLineGetFlag(Package, OPT_TBL_NAME) + ) { + CONST CHAR16* opt1 = NULL; + CONST CHAR16* opt2 = NULL; + opt1 = ShellCommandLineGetValue(Package, OPT_TBL_NAME); + opt2 = ShellCommandLineGetValue(Package, OPT_TBL_APPEND); + res = TablesNew(opt1, opt2); + } + + if (ShellCommandLineGetFlag(Package, OPT_TBL_LIST)) { + if (gDcsTables == NULL) TablesLoad(); + OUT_PRINT(L"Size = %d, Zones=%d\n", gDcsTablesSize, (gDcsTablesSize + 128 * 1024 - 1) / (128 * 1024)); + TablesList(gDcsTablesSize, gDcsTables); + } + if (ShellCommandLineGetFlag(Package, OPT_AUTH_ASK)) { TestAuthAsk(); } diff --git a/DcsInt/DcsInt.c b/DcsInt/DcsInt.c index e792993..06f8841 100644 --- a/DcsInt/DcsInt.c +++ b/DcsInt/DcsInt.c @@ -24,6 +24,7 @@ https://opensource.org/licenses/LGPL-3.0 #include #include #include +#include #include "common/Tcdefs.h" #include "common/Crypto.h" @@ -67,7 +68,7 @@ typedef struct _BOOT_PARAMS { UINT32 gHeaderSaltCrc32 = 0; PBOOT_PARAMS bootParams = NULL; -//#define EFI_BOOTARGS_REGIONS_TEST ,0x9000000, 0xA000000 +// #define EFI_BOOTARGS_REGIONS_TEST ,0x9000000, 0xA000000 #define EFI_BOOTARGS_REGIONS_TEST UINTN BootArgsRegions[] = { EFI_BOOTARGS_REGIONS_HIGH, EFI_BOOTARGS_REGIONS_LOW EFI_BOOTARGS_REGIONS_TEST }; @@ -640,6 +641,15 @@ SecRegionTryDecrypt() } OUT_PRINT(L"%a", gAuthStartMsg); do { + // EFI tables? + if (TablesVerify(SecRegionSize - SecRegionOffset, SecRegionData + SecRegionOffset)) { + EFI_TABLE_HEADER *mhdr = (EFI_TABLE_HEADER *)(SecRegionData + SecRegionOffset); + UINTN tblZones = (mhdr->HeaderSize + 1024 * 128 - 1) / (1024 * 128); + SecRegionOffset += tblZones * 1024 * 128; + vcres = 1; + continue; + } + // Try authorize zone CopyMem(Header, SecRegionData + SecRegionOffset, 512); vcres = ReadVolumeHeader(gAuthBoot, Header, &gAuthPassword, gAuthHash, gAuthPim, gAuthTc, &SecRegionCryptInfo, NULL); SecRegionOffset += (vcres != 0) ? 1024 * 128 : 0; @@ -942,6 +952,40 @@ VirtualNotifyEvent( } } +////////////////////////////////////////////////////////////////////////// +// Open tables +////////////////////////////////////////////////////////////////////////// +UINT8* gOpenTables = NULL; + +BOOLEAN +SecRegionTablesFind(UINT8* secRegion, UINTN secRegionSize, VOID** tables) { + UINTN pos = 0; + while (pos < SecRegionSize) { + if (TablesVerify(secRegionSize - pos, secRegion + pos)) { + *tables = secRegion + pos; + return TRUE; + } + pos += 128 * 1024; + } + return FALSE; +} + +#define DCSPROP_HEADER_SIGN SIGNATURE_64('D','C','S','P','R','O','P','_') +#define PICTPWD_HEADER_SIGN SIGNATURE_64('P','I','C','T','P','W','D','_') + +VOID +VCAuthLoadConfigUpdated(UINT8* secRegion, UINTN secRegionSize) { + if (SecRegionTablesFind(secRegion, secRegionSize, &gOpenTables)) { + if (TablesGetData(gOpenTables, DCSPROP_HEADER_SIGN, &gConfigBufferUpdated, &gConfigBufferUpdatedSize)) { + // Reload config parameters + MEM_FREE(gAuthPasswordMsg); + gAuthPasswordMsg = NULL; + VCAuthLoadConfig(); + } + TablesGetData(gOpenTables, PICTPWD_HEADER_SIGN, &gPictPwdBmp, &gPictPwdBmpSize); + } +} + ////////////////////////////////////////////////////////////////////////// // Driver Entry Point ////////////////////////////////////////////////////////////////////////// @@ -966,6 +1010,7 @@ UefiMain( EFI_INPUT_KEY key; EfiPrintDevicePath(SecRegionHandle); OUT_PRINT(L"\n"); + VCAuthLoadConfigUpdated(SecRegionData, SecRegionSize); key = KeyWait(L"%2d \r", 2, 0, 0); if (key.UnicodeChar != 0) { GetKey(); @@ -1015,7 +1060,8 @@ UefiMain( if (EFI_ERROR(res)) { return OnExit(gOnExitNotFound, OnExitAuthNotFound, res); } - // force password type and message + // force password type and message to simulate "press ESC to continue" + MEM_FREE(gAuthPasswordMsg); gAuthPasswordType = gForcePasswordType; gAuthPasswordMsg = gForcePasswordMsg; gPasswordProgress = gForcePasswordProgress; diff --git a/Include/Library/CommonLib.h b/Include/Library/CommonLib.h index 98e93db..2c698d0 100644 --- a/Include/Library/CommonLib.h +++ b/Include/Library/CommonLib.h @@ -173,6 +173,36 @@ GptReadHeader( OUT EFI_PARTITION_TABLE_HEADER **PartHeader ); +////////////////////////////////////////////////////////////////////////// +// General EFI tables +////////////////////////////////////////////////////////////////////////// +#define EFITABLE_HEADER_SIGN SIGNATURE_64('E','F','I','T','A','B','L','E') + +BOOLEAN +TablesVerify( + IN UINTN maxSize, + IN VOID* tables); + +BOOLEAN +TablesGetData( + IN VOID* tables, + IN UINT64 sign, + OUT VOID** data, + OUT UINTN* size); + +BOOLEAN +TablesDelete( + IN VOID* tables, + IN UINT64 sign + ); + +BOOLEAN +TablesAppend( + IN OUT VOID** tables, + IN UINT64 sign, + IN VOID* data, + IN UINTN size); + ////////////////////////////////////////////////////////////////////////// // Bluetooth ////////////////////////////////////////////////////////////////////////// diff --git a/Include/Library/DcsCfgLib.h b/Include/Library/DcsCfgLib.h index 322aaa1..259004e 100644 --- a/Include/Library/DcsCfgLib.h +++ b/Include/Library/DcsCfgLib.h @@ -111,6 +111,33 @@ GptAskGUID( BOOLEAN IsRegionOverlap(UINT64 start1, UINT64 end1, UINT64 start2, UINT64 end2); +////////////////////////////////////////////////////////////////////////// +// Tables +////////////////////////////////////////////////////////////////////////// +extern CONST CHAR16* DcsTablesFileName; +extern UINT8* gDcsTables; +extern UINTN gDcsTablesSize; + +EFI_STATUS +TablesDel( + IN CONST CHAR16* sign + ); + +EFI_STATUS +TablesNew( + IN CONST CHAR16* sign, + IN CONST CHAR16* dataFileName + ); + +EFI_STATUS +TablesLoad(); + +BOOLEAN +TablesList( + IN UINTN maxSize, + IN VOID* tables + ); + ////////////////////////////////////////////////////////////////////////// // Random ////////////////////////////////////////////////////////////////////////// diff --git a/Include/Library/PasswordLib.h b/Include/Library/PasswordLib.h index 7ed31c5..a827b16 100644 --- a/Include/Library/PasswordLib.h +++ b/Include/Library/PasswordLib.h @@ -25,6 +25,8 @@ extern UINTN gPasswordPictureCharsLen; extern UINT8 gPasswordVisible; extern UINT8 gPasswordProgress; extern int gPasswordShowMark; +extern VOID* gPictPwdBmp; +extern UINTN gPictPwdBmpSize; extern int gPlatformLocked; extern int gTPMLocked; @@ -114,4 +116,9 @@ PlatformGetAuthData( OUT EFI_HANDLE *secRegionHandle ); +////////////////////////////////////////////////////////////////////////// +// Certificates +////////////////////////////////////////////////////////////////////////// +extern CHAR8* gDCS_platform_crt_der; + #endif \ No newline at end of file diff --git a/Library/CommonLib/GptRead.c b/Library/CommonLib/GptRead.c index 0eab963..9267531 100644 --- a/Library/CommonLib/GptRead.c +++ b/Library/CommonLib/GptRead.c @@ -60,14 +60,11 @@ GptHeaderCheckCrcAltSize( Hdr->CRC32 = 0; Status = gBS->CalculateCrc32((UINT8 *)Hdr, Size, &Crc); + Hdr->CRC32 = OrgCrc; if (EFI_ERROR(Status)) { return FALSE; } - // // set results - // - Hdr->CRC32 = OrgCrc; - return (BOOLEAN)(OrgCrc == Crc); } @@ -213,3 +210,155 @@ GptReadHeader( *PartHeader = PartHdr; return EFI_SUCCESS; } + +////////////////////////////////////////////////////////////////////////// +// General EFI tables +////////////////////////////////////////////////////////////////////////// + +BOOLEAN +TablesVerify( + IN UINTN maxSize, + IN VOID* tables) +{ + EFI_TABLE_HEADER *mhdr = (EFI_TABLE_HEADER *)tables; + if (tables != NULL && + mhdr->Signature == EFITABLE_HEADER_SIGN && + GptHeaderCheckCrc(maxSize, mhdr)) { + UINT8* raw = (UINT8*)tables; + UINTN rawSize = mhdr->HeaderSize; + UINTN tpos = sizeof(EFI_TABLE_HEADER); + while (tpos < rawSize) { + EFI_TABLE_HEADER *hdr = (EFI_TABLE_HEADER *)(raw + tpos); + if (!GptHeaderCheckCrc(rawSize - tpos, hdr)) { + return FALSE; // wrong crc + } + tpos += hdr->HeaderSize; + } + return TRUE; + } + return FALSE; +} + +BOOLEAN +TablesGetData( + IN VOID* tables, + IN UINT64 sign, + OUT VOID** data, + OUT UINTN* size) +{ + EFI_TABLE_HEADER *mhdr = (EFI_TABLE_HEADER *)tables; + if (tables != NULL && + mhdr->Signature == EFITABLE_HEADER_SIGN && + GptHeaderCheckCrc(0, mhdr)) { + UINT8* raw = (UINT8*)tables; + UINTN rawSize = mhdr->HeaderSize; + UINTN tpos = sizeof(EFI_TABLE_HEADER); + while (tpos < rawSize) { + EFI_TABLE_HEADER *hdr = (EFI_TABLE_HEADER *)(raw + tpos); + if (GptHeaderCheckCrc(rawSize - tpos, hdr)) { + if (hdr->Signature == sign) { + *data = raw + tpos + sizeof(EFI_TABLE_HEADER); + *size = hdr->HeaderSize - sizeof(EFI_TABLE_HEADER); + return TRUE; + } + tpos += hdr->HeaderSize; + } + else { + return FALSE; + } + } + } + return FALSE; +} + +BOOLEAN +TablesDelete( + IN VOID* tables, + IN UINT64 sign + ) +{ + EFI_TABLE_HEADER *mhdr = (EFI_TABLE_HEADER *)tables; + EFI_TABLE_HEADER *thdr = NULL; + UINT8* raw = (UINT8*)tables; + UINTN rawSize = mhdr->HeaderSize; + UINTN tpos = sizeof(EFI_TABLE_HEADER); + if (tables != NULL && + mhdr->Signature == EFITABLE_HEADER_SIGN && + GptHeaderCheckCrc(0, mhdr)) { + while (tpos < rawSize) { + EFI_TABLE_HEADER *hdr = (EFI_TABLE_HEADER *)(raw + tpos); + if (GptHeaderCheckCrc(rawSize - tpos, hdr)) { + if (hdr->Signature == sign) { + thdr = hdr; + break; + } + tpos += hdr->HeaderSize; + } else { + return FALSE; + } + } + if (thdr != NULL) { + UINT32 Crc; + UINTN pos; + mhdr->HeaderSize -= thdr->HeaderSize; + pos = tpos + thdr->HeaderSize; + while (pos < rawSize) { + raw[tpos] = raw[pos]; + ++tpos; + ++pos; + } + mhdr->CRC32 = 0; + if (EFI_ERROR(gBS->CalculateCrc32((UINT8 *)raw, mhdr->HeaderSize, &Crc))) { + return FALSE; + } + mhdr->CRC32 = Crc; + return TRUE; + } + } + return FALSE; +} + +BOOLEAN +TablesAppend( + IN OUT VOID** tables, + IN UINT64 sign, + IN VOID* data, + IN UINTN size) +{ + EFI_TABLE_HEADER *mhdr = NULL; + EFI_TABLE_HEADER *thdr = NULL; + UINTN rawSize = 0; + UINT8* raw = (UINT8*)tables; + if (tables != NULL && + (mhdr = (EFI_TABLE_HEADER *)*tables) != NULL && + mhdr->Signature == EFITABLE_HEADER_SIGN && + GptHeaderCheckCrc(0, mhdr)) { + UINT32 Crc; + rawSize = mhdr->HeaderSize; + raw = MEM_REALLOC(rawSize, rawSize + sizeof(EFI_TABLE_HEADER) + size, mhdr); + if (raw == NULL) { + return FALSE; + } + mhdr = (EFI_TABLE_HEADER *)raw; + thdr = (EFI_TABLE_HEADER *)(raw + rawSize); + thdr->HeaderSize = (UINT32)(sizeof(EFI_TABLE_HEADER) + size); + thdr->Signature = sign; + CopyMem(((UINT8 *)thdr) + sizeof(EFI_TABLE_HEADER), data, size); + + thdr->CRC32 = 0; + if (EFI_ERROR(gBS->CalculateCrc32((UINT8 *)thdr, thdr->HeaderSize, &Crc))) { + return FALSE; + } + thdr->CRC32 = Crc; + + mhdr->HeaderSize += (UINT32)(size + sizeof(EFI_TABLE_HEADER)); + mhdr->CRC32 = 0; + if (EFI_ERROR(gBS->CalculateCrc32((UINT8 *)raw, mhdr->HeaderSize, &Crc))) { + return FALSE; + } + mhdr->CRC32 = Crc; + *tables = raw; + return TRUE; + } + return FALSE; +} diff --git a/Library/DcsCfgLib/GptEdit.c b/Library/DcsCfgLib/GptEdit.c index e1d6d2a..d486909 100644 --- a/Library/DcsCfgLib/GptEdit.c +++ b/Library/DcsCfgLib/GptEdit.c @@ -745,3 +745,136 @@ DeListRndLoad() } return res; } + +////////////////////////////////////////////////////////////////////////// +// Tables +////////////////////////////////////////////////////////////////////////// + +CONST CHAR16* DcsTablesFileName = L"DcsTables"; +UINT8* gDcsTables = NULL; +UINTN gDcsTablesSize = 0; + +BOOLEAN +TablesList( + IN UINTN maxSize, + IN VOID* tables + ) { + EFI_TABLE_HEADER *mhdr = (EFI_TABLE_HEADER *)tables; + if (tables != NULL && + mhdr->Signature == EFITABLE_HEADER_SIGN && + GptHeaderCheckCrc(maxSize, mhdr)) { + UINT8* raw = (UINT8*)tables; + UINTN rawSize = mhdr->HeaderSize; + UINTN tpos = sizeof(EFI_TABLE_HEADER); + while (tpos < rawSize) { + EFI_TABLE_HEADER *hdr = (EFI_TABLE_HEADER *)(raw + tpos); + CHAR8 asc_sign[sizeof(hdr->Signature) + 1] = { 0 }; + CopyMem(asc_sign, &hdr->Signature, sizeof(hdr->Signature)); + asc_sign[sizeof(hdr->Signature)] = 0; + OUT_PRINT(L"%a, SZ=%d", asc_sign, hdr->HeaderSize); + if (!GptHeaderCheckCrc(rawSize - tpos, hdr)) { + ERR_PRINT(L" - wrong crc\n"); + return FALSE; // wrong crc + } + OUT_PRINT(L" - OK\n"); + tpos += hdr->HeaderSize; + } + return TRUE; + } + return FALSE; +} + +EFI_STATUS +TablesLoad() { + EFI_STATUS res = EFI_SUCCESS; + if (EFI_ERROR(FileExist(NULL, (CHAR16*)DcsTablesFileName))) { + EFI_TABLE_HEADER* mhdr = NULL; + UINT32 Crc; + gDcsTables = MEM_ALLOC(sizeof(EFI_TABLE_HEADER)); + gDcsTablesSize = sizeof(EFI_TABLE_HEADER); + mhdr = (EFI_TABLE_HEADER*)gDcsTables; + mhdr->HeaderSize = sizeof(EFI_TABLE_HEADER); + mhdr->Signature = EFITABLE_HEADER_SIGN; + mhdr->CRC32 = 0; + if (EFI_ERROR(res = gBS->CalculateCrc32((UINT8 *)gDcsTables, mhdr->HeaderSize, &Crc))) { + goto err; + } + mhdr->CRC32 = Crc; + OUT_PRINT(L"New tables created %s\n", DcsTablesFileName); + } else { + res = FileLoad(NULL, (CHAR16*)DcsTablesFileName, &gDcsTables, &gDcsTablesSize); + if (!EFI_ERROR(res)) { + res = TablesVerify(gDcsTablesSize, gDcsTables) ? EFI_SUCCESS : EFI_CRC_ERROR; + } + } +err: + if (EFI_ERROR(res)) { + ERR_PRINT(L"Tables load error %r\n", res); + } + return res; +} + +EFI_STATUS +TablesNew( + IN CONST CHAR16* signStr, + IN CONST CHAR16* dataFileName + ) { + EFI_STATUS res = EFI_SUCCESS; + VOID* data; + UINTN dataSize; + UINT64 sign; + EFI_TABLE_HEADER* mhdr; + + if (StrLen(signStr) != 8) { + res = EFI_INVALID_PARAMETER; + goto err; + } + sign = SIGNATURE_64(signStr[0], signStr[1], signStr[2], signStr[3], signStr[4], signStr[5], signStr[6], signStr[7]); + + CE(TablesLoad()); + TablesDelete(gDcsTables, sign); + CE(FileLoad(NULL, (CHAR16*)dataFileName, &data, &dataSize)); + if (!TablesAppend(&gDcsTables, sign, data, dataSize)) { + res = EFI_INVALID_PARAMETER; + goto err; + } + mhdr = (EFI_TABLE_HEADER*)gDcsTables; + gDcsTablesSize = mhdr->HeaderSize; + res = FileSave(NULL, (CHAR16*)DcsTablesFileName, mhdr, mhdr->HeaderSize); + +err: + if (EFI_ERROR(res)) { + ERR_PRINT(L"Tables append error %r\n", res); + } + return res; +} + +EFI_STATUS +TablesDel( + IN CONST CHAR16* signStr + ) { + EFI_STATUS res = EFI_SUCCESS; + UINT64 sign; + EFI_TABLE_HEADER* mhdr; + + if (StrLen(signStr) != 8) { + res = EFI_INVALID_PARAMETER; + goto err; + } + sign = SIGNATURE_64(signStr[0], signStr[1], signStr[2], signStr[3], signStr[4], signStr[5], signStr[6], signStr[7]); + + CE(TablesLoad()); + if (!TablesDelete(gDcsTables, sign)) { + res = EFI_INVALID_PARAMETER; + goto err; + } + mhdr = (EFI_TABLE_HEADER*)gDcsTables; + gDcsTablesSize = mhdr->HeaderSize; + res = FileSave(NULL, (CHAR16*)DcsTablesFileName, gDcsTables, gDcsTablesSize); + +err: + if (EFI_ERROR(res)) { + ERR_PRINT(L"Tables delete error %r\n", res); + } + return res; +} diff --git a/Library/PasswordLib/PicturePassword.c b/Library/PasswordLib/PicturePassword.c index f40b095..c3831ad 100644 --- a/Library/PasswordLib/PicturePassword.c +++ b/Library/PasswordLib/PicturePassword.c @@ -41,8 +41,8 @@ int gSCLocked = 0; // Picture password ////////////////////////////////////////////////////////////////////////// CONST CHAR16* BmpName = L"Test.bmp"; -VOID* Bmp = NULL; -UINTN BmpSize = 0; +VOID* gPictPwdBmp = NULL; +UINTN gPictPwdBmpSize = 0; BLT_HEADER* bltPwd = NULL; UINTN posPictX, posPictY; BLT_HEADER* bltScrn = NULL; @@ -196,7 +196,7 @@ DrawPwdPicture() if (bltPwd != NULL) MEM_FREE(bltPwd); - res = BmpToBlt(Bmp, BmpSize, &bltPwd); + res = BmpToBlt(gPictPwdBmp, gPictPwdBmpSize, &bltPwd); if (EFI_ERROR(res)) { return res; } @@ -287,9 +287,9 @@ AskPictPwdInt( InitSpeaker(); } - if (Bmp == NULL) { + if (gPictPwdBmp == NULL) { if (gPasswordPictureFileName != NULL) { - res = FileLoad(NULL, (CHAR16*)gPasswordPictureFileName, &Bmp, &BmpSize); + res = FileLoad(NULL, (CHAR16*)gPasswordPictureFileName, &gPictPwdBmp, &gPictPwdBmpSize); if (EFI_ERROR(res)) { ERR_PRINT(L"File load - %r\n", res); return; diff --git a/Library/PasswordLib/PlatformID.c b/Library/PasswordLib/PlatformID.c index 100b0c0..ca8188b 100644 --- a/Library/PasswordLib/PlatformID.c +++ b/Library/PasswordLib/PlatformID.c @@ -283,3 +283,89 @@ PlatformGetAuthData( return res; } +CHAR8 gDCS_platform_crt_der[1341] = { + 0x30, 0x82, 0x05, 0x39, 0x30, 0x82, 0x03, 0x21, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x32, + 0xDC, 0x46, 0x30, 0x87, 0xE5, 0x4F, 0xB1, 0x43, 0x0F, 0x58, 0x9E, 0xC0, 0xDA, 0x58, 0xF8, 0x30, + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, 0x23, + 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1E, 0x18, 0x00, 0x44, 0x00, 0x43, 0x00, + 0x53, 0x00, 0x5F, 0x00, 0x70, 0x00, 0x6C, 0x00, 0x61, 0x00, 0x74, 0x00, 0x66, 0x00, 0x6F, 0x00, + 0x72, 0x00, 0x6D, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x36, 0x30, 0x38, 0x30, 0x39, 0x30, 0x38, 0x33, + 0x38, 0x31, 0x31, 0x5A, 0x17, 0x0D, 0x33, 0x31, 0x30, 0x38, 0x30, 0x39, 0x30, 0x38, 0x33, 0x38, + 0x31, 0x30, 0x5A, 0x30, 0x23, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1E, 0x18, + 0x00, 0x44, 0x00, 0x43, 0x00, 0x53, 0x00, 0x5F, 0x00, 0x70, 0x00, 0x6C, 0x00, 0x61, 0x00, 0x74, + 0x00, 0x66, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x6D, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0D, 0x06, 0x09, + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0F, 0x00, + 0x30, 0x82, 0x02, 0x0A, 0x02, 0x82, 0x02, 0x01, 0x00, 0xAF, 0x5B, 0x97, 0x06, 0x70, 0x4F, 0x3B, + 0x2E, 0x50, 0x6A, 0xD1, 0x47, 0xCB, 0x70, 0x20, 0xF4, 0x77, 0x79, 0x06, 0xCA, 0xA9, 0xA2, 0x13, + 0x75, 0xAD, 0x07, 0x66, 0x94, 0xC2, 0xBB, 0xCA, 0x7E, 0xFC, 0x6C, 0x19, 0x16, 0x5D, 0x60, 0x77, + 0x6E, 0xCB, 0xF3, 0x8A, 0xC2, 0xF6, 0x53, 0xC7, 0xC2, 0xB1, 0x87, 0x5F, 0x8E, 0xFA, 0x20, 0xDF, + 0xBA, 0x00, 0xCE, 0xBA, 0xA7, 0xC8, 0x65, 0x7E, 0xFC, 0xA8, 0xF8, 0x50, 0x9E, 0xD7, 0x7D, 0x8E, + 0x4F, 0xB1, 0x1B, 0x60, 0xC0, 0xD2, 0xBC, 0x4A, 0xB4, 0x46, 0xA5, 0x0E, 0x90, 0x38, 0xA5, 0x7B, + 0x58, 0xEE, 0x16, 0xD9, 0xBA, 0x73, 0xAD, 0x69, 0x2A, 0xA4, 0xB4, 0x51, 0x0C, 0x21, 0x8C, 0x3D, + 0x0E, 0x40, 0x44, 0x20, 0x2E, 0xE2, 0xEF, 0x16, 0x25, 0xE8, 0x1C, 0xE8, 0xD2, 0x76, 0x66, 0x8E, + 0xA1, 0xB8, 0x29, 0x28, 0x23, 0xA2, 0x9F, 0xCA, 0xAB, 0x0D, 0x81, 0x4A, 0xE0, 0xF9, 0x87, 0x7B, + 0xD6, 0xDA, 0x2E, 0x10, 0x21, 0xBD, 0x69, 0x9C, 0x86, 0x45, 0xD2, 0xE8, 0xCD, 0xA1, 0xF6, 0xC2, + 0x09, 0x93, 0x68, 0x06, 0xA0, 0x5D, 0xB7, 0x2C, 0xD7, 0x83, 0x0B, 0xCC, 0xFE, 0x91, 0x90, 0x1E, + 0x85, 0x96, 0x72, 0xBC, 0x3E, 0x9C, 0xD4, 0x1C, 0xDF, 0xC4, 0x85, 0xB3, 0xD7, 0x00, 0x43, 0xDD, + 0xA8, 0x7C, 0xD1, 0xDE, 0x89, 0xDB, 0x2A, 0x70, 0x27, 0x6F, 0x46, 0xF9, 0x3A, 0x9E, 0x55, 0x10, + 0x5A, 0x82, 0x42, 0x72, 0x42, 0xEA, 0x83, 0x0F, 0x39, 0x3A, 0x50, 0x67, 0xFE, 0x4F, 0x9D, 0x91, + 0x50, 0x93, 0xB3, 0xC6, 0x12, 0x60, 0xAE, 0x3A, 0x5A, 0xB7, 0xB7, 0x9C, 0x83, 0xA0, 0xD2, 0xFF, + 0xFF, 0x23, 0xC3, 0x95, 0x66, 0x79, 0x20, 0xA0, 0x09, 0x02, 0x74, 0x15, 0x34, 0x2A, 0x0A, 0x6E, + 0x80, 0x36, 0x13, 0xC7, 0x9B, 0x77, 0x81, 0x35, 0x45, 0xDD, 0xEC, 0x11, 0xC3, 0x43, 0xA6, 0x48, + 0xF8, 0xDB, 0xC0, 0x3C, 0x12, 0x86, 0x37, 0x68, 0xF4, 0xEA, 0x70, 0x41, 0x66, 0x6D, 0x56, 0x7C, + 0xFC, 0xE8, 0x61, 0xD7, 0x82, 0x02, 0xC6, 0xFD, 0xA5, 0x74, 0xCE, 0xA6, 0x39, 0xFB, 0xD2, 0x21, + 0x61, 0x15, 0x6B, 0x6E, 0x0B, 0xD6, 0x65, 0xF5, 0x8C, 0x5A, 0x52, 0x5E, 0x16, 0x96, 0x02, 0x09, + 0x81, 0x28, 0x32, 0xBF, 0x2C, 0x1E, 0x0F, 0xAD, 0x1E, 0xE5, 0xAD, 0x3B, 0x19, 0x24, 0xED, 0xC1, + 0xA7, 0x60, 0xC9, 0x2D, 0xE4, 0x15, 0xA7, 0xAF, 0x91, 0x35, 0x07, 0x5A, 0x31, 0x39, 0xB1, 0xA5, + 0x3C, 0xE3, 0x59, 0x9A, 0x85, 0xC8, 0x6F, 0x83, 0x6F, 0xFF, 0x3C, 0x81, 0xC1, 0x8F, 0xF6, 0x2E, + 0x3C, 0x1B, 0xF5, 0x9A, 0x21, 0x5D, 0xAD, 0x3A, 0x9B, 0x7F, 0x18, 0x4F, 0x62, 0x09, 0xEA, 0x2F, + 0x5D, 0x15, 0xFD, 0x9D, 0x73, 0x78, 0x95, 0x76, 0x47, 0x15, 0x1C, 0x9A, 0x3F, 0x19, 0xB7, 0xCE, + 0x03, 0x46, 0x6C, 0x61, 0xCF, 0xC4, 0xBD, 0x0D, 0x1A, 0x9F, 0xB4, 0xAA, 0x03, 0x84, 0x8D, 0x15, + 0x3E, 0x8F, 0xBA, 0x28, 0x94, 0x09, 0x35, 0x28, 0xE5, 0x15, 0xBC, 0xAF, 0x33, 0xBA, 0x67, 0xF2, + 0x06, 0x79, 0xEE, 0x50, 0x0F, 0x14, 0x98, 0xFC, 0x95, 0xEC, 0x65, 0x40, 0x88, 0xA8, 0x1A, 0x0C, + 0x10, 0x74, 0x79, 0x42, 0x3B, 0xCD, 0xE1, 0xD1, 0xAD, 0x7E, 0x29, 0x41, 0xC4, 0x39, 0x75, 0xC5, + 0xCB, 0x0F, 0xB1, 0x6F, 0x30, 0xD3, 0xAE, 0x53, 0x59, 0xD6, 0x86, 0x34, 0x31, 0x8B, 0x96, 0x82, + 0xDF, 0xA4, 0x01, 0x32, 0xB4, 0x29, 0xDC, 0x9C, 0x28, 0x53, 0x72, 0xAE, 0x96, 0x37, 0xE3, 0x65, + 0x59, 0x91, 0x84, 0x95, 0xB3, 0x2D, 0x3F, 0x84, 0x12, 0xD2, 0x52, 0x85, 0x8D, 0x85, 0xD5, 0x2E, + 0x2A, 0x3E, 0xEB, 0x0C, 0x11, 0xA4, 0x4F, 0xED, 0x29, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x69, + 0x30, 0x67, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xFF, 0x30, 0x54, 0x06, 0x03, 0x55, 0x1D, 0x01, 0x04, 0x4D, 0x30, 0x4B, 0x80, 0x10, + 0x8F, 0x11, 0x13, 0x21, 0xAA, 0xC0, 0xFA, 0xB1, 0x63, 0xD5, 0xE6, 0x00, 0x9B, 0x78, 0x67, 0x40, + 0xA1, 0x25, 0x30, 0x23, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1E, 0x18, 0x00, + 0x44, 0x00, 0x43, 0x00, 0x53, 0x00, 0x5F, 0x00, 0x70, 0x00, 0x6C, 0x00, 0x61, 0x00, 0x74, 0x00, + 0x66, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x6D, 0x82, 0x10, 0x32, 0xDC, 0x46, 0x30, 0x87, 0xE5, 0x4F, + 0xB1, 0x43, 0x0F, 0x58, 0x9E, 0xC0, 0xDA, 0x58, 0xF8, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, + 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x7D, 0x03, 0x2A, + 0x49, 0x7E, 0x0C, 0x43, 0x4E, 0xAE, 0x45, 0xDD, 0xE2, 0x62, 0xB2, 0x31, 0x55, 0xEB, 0x6C, 0xF8, + 0x96, 0xFC, 0x5A, 0x5F, 0xA7, 0xD2, 0x26, 0xA5, 0x10, 0x15, 0x85, 0x1D, 0xDE, 0xCD, 0x97, 0xFB, + 0x6D, 0x19, 0xED, 0x03, 0x93, 0x83, 0x94, 0x04, 0x1B, 0xE6, 0x00, 0xBA, 0x41, 0xCF, 0xAB, 0xB7, + 0x46, 0x17, 0x3F, 0x8E, 0x3B, 0x2D, 0xC4, 0x54, 0x67, 0x31, 0x11, 0x0D, 0xA4, 0x35, 0x1E, 0xC4, + 0x09, 0xC2, 0xCB, 0xFD, 0x19, 0x1B, 0x5B, 0x2A, 0x19, 0x6A, 0xB9, 0x72, 0x3E, 0x27, 0x8A, 0x0A, + 0xBD, 0xB4, 0x68, 0x5D, 0xA9, 0x72, 0xC7, 0x0E, 0x28, 0x06, 0xC9, 0x4C, 0xE1, 0x56, 0xEB, 0x15, + 0x16, 0xC1, 0xD2, 0x86, 0x63, 0x57, 0xB1, 0xAA, 0x01, 0xF9, 0x26, 0xBC, 0xA7, 0xED, 0x0D, 0x02, + 0x80, 0xA7, 0x77, 0x57, 0xE9, 0xA5, 0x3B, 0x72, 0xC2, 0xAA, 0x6D, 0x7B, 0xA8, 0x40, 0xA3, 0x34, + 0x7B, 0x73, 0x40, 0x90, 0xFC, 0x43, 0x00, 0x29, 0x97, 0x7C, 0x41, 0xB2, 0xCA, 0x31, 0xA7, 0x86, + 0x08, 0xDF, 0x67, 0xCA, 0x1B, 0xEC, 0x0C, 0x53, 0xD4, 0x0B, 0x4A, 0x22, 0x40, 0x44, 0xA8, 0xE9, + 0x9D, 0x49, 0x01, 0xC6, 0x77, 0x15, 0x6E, 0x8A, 0x1F, 0xFF, 0x42, 0xF3, 0xDE, 0xF7, 0x93, 0xFA, + 0x81, 0x8F, 0x98, 0x6B, 0x75, 0x27, 0xA8, 0xBE, 0xE9, 0x2C, 0x70, 0x0F, 0xE6, 0xA5, 0xDD, 0x5D, + 0xA5, 0x33, 0x54, 0xEE, 0xFE, 0x6F, 0x91, 0xE8, 0xB4, 0x1A, 0x55, 0x77, 0xA1, 0x98, 0x56, 0x48, + 0x9C, 0xF2, 0xA3, 0x96, 0xD7, 0xB2, 0x86, 0x15, 0xA9, 0xCA, 0xBD, 0x04, 0x1B, 0x14, 0x11, 0xBE, + 0x5D, 0xC5, 0x2C, 0x5E, 0x5B, 0x57, 0x87, 0x9B, 0xCA, 0xE8, 0xA1, 0x7F, 0x6D, 0xED, 0x79, 0x2D, + 0x89, 0x3E, 0x70, 0x3C, 0x9E, 0x5C, 0x0F, 0x26, 0xCD, 0x2D, 0xE3, 0x47, 0x6E, 0x89, 0x05, 0x5C, + 0x73, 0x03, 0x87, 0x8C, 0x44, 0xE5, 0xC5, 0x6C, 0x09, 0x8B, 0x93, 0xBC, 0x1E, 0x0F, 0x56, 0x80, + 0x45, 0xDD, 0xDA, 0x96, 0x01, 0x48, 0x7C, 0xD2, 0xC0, 0x86, 0xD1, 0x8D, 0x7C, 0xBF, 0x48, 0x74, + 0x97, 0x8F, 0x4A, 0xBE, 0xC2, 0x71, 0x29, 0x91, 0xCF, 0x6A, 0x39, 0xBE, 0xD8, 0x50, 0x75, 0xCF, + 0x24, 0x8D, 0x5A, 0x12, 0x16, 0xA8, 0x5C, 0x6C, 0x88, 0x3E, 0x9F, 0x38, 0xDE, 0x04, 0x7F, 0x89, + 0xE7, 0x5A, 0x36, 0x6D, 0xAB, 0xF3, 0xC8, 0x32, 0x64, 0x91, 0x95, 0x12, 0x69, 0x7E, 0x71, 0x09, + 0xD1, 0xDA, 0xC9, 0x5E, 0xFC, 0xF4, 0x6C, 0x38, 0x71, 0x21, 0x62, 0x50, 0xC8, 0x14, 0x47, 0x25, + 0x94, 0x67, 0xD2, 0x20, 0x45, 0xC3, 0x50, 0x43, 0x81, 0x1D, 0x56, 0xAC, 0x2A, 0x02, 0x6E, 0x6D, + 0x06, 0xCA, 0x42, 0xC9, 0x65, 0x4C, 0xF7, 0x94, 0xF7, 0x67, 0x9C, 0x24, 0x98, 0x20, 0x55, 0x6A, + 0x0D, 0x85, 0x47, 0x2F, 0x3D, 0xFC, 0xA1, 0x28, 0xFE, 0xDF, 0x6F, 0xB1, 0x31, 0x62, 0x22, 0x8F, + 0x74, 0x3E, 0x1C, 0xE0, 0x02, 0xEF, 0xF9, 0x6B, 0x10, 0x32, 0xC5, 0xF5, 0x08, 0x51, 0xC7, 0x23, + 0xE7, 0x53, 0xEA, 0x89, 0x3A, 0xB2, 0xD9, 0x8A, 0x5E, 0xB0, 0x35, 0x06, 0x0A, 0x4F, 0xEE, 0x48, + 0x79, 0x7A, 0xEE, 0xEE, 0xAF, 0x9D, 0xF6, 0x59, 0xD6, 0x25, 0x86, 0xAC, 0x05, 0x9D, 0xA7, 0x61, + 0x31, 0xE3, 0xC1, 0xD0, 0x78, 0x9F, 0x83, 0x1F, 0x7C, 0x17, 0x50, 0x05, 0xAD, 0x40, 0x1A, 0x0C, + 0x19, 0x9E, 0xE1, 0x5D, 0x83, 0xE2, 0xAB, 0x83, 0x17, 0x84, 0x13, 0x76, 0x4F, 0x29, 0xBC, 0xA6, + 0x3F, 0xAE, 0x0D, 0xF9, 0x79, 0x11, 0xF8, 0x04, 0x79, 0x94, 0x88, 0x3F, 0x0D, 0x6C, 0x1F, 0x07, + 0x61, 0xF6, 0x51, 0xB2, 0xBC, 0xB8, 0xD3, 0x87, 0xA7, 0x15, 0x12, 0x60, 0x7B +}; \ No newline at end of file diff --git a/Library/VeraCryptLib/DcsConfig.c b/Library/VeraCryptLib/DcsConfig.c index 00aa5f8..e29e767 100644 --- a/Library/VeraCryptLib/DcsConfig.c +++ b/Library/VeraCryptLib/DcsConfig.c @@ -23,6 +23,8 @@ https://opensource.org/licenses/Apache-2.0 ////////////////////////////////////////////////////////////////////////// char *gConfigBuffer = NULL; UINTN gConfigBufferSize = 0; +char *gConfigBufferUpdated = NULL; +UINTN gConfigBufferUpdatedSize = 0; BOOLEAN ConfigRead(char *configKey, char *configValue, int maxValueSize) @@ -35,7 +37,7 @@ ConfigRead(char *configKey, char *configValue, int maxValueSize) } } - xml = gConfigBuffer; + xml = gConfigBufferUpdated != NULL? gConfigBufferUpdated : gConfigBuffer; if (xml != NULL) { xml = XmlFindElementByAttributeValue(xml, "config", "key", configKey); diff --git a/Library/VeraCryptLib/DcsConfig.h b/Library/VeraCryptLib/DcsConfig.h index 04719d9..cc803ce 100644 --- a/Library/VeraCryptLib/DcsConfig.h +++ b/Library/VeraCryptLib/DcsConfig.h @@ -22,6 +22,8 @@ https://opensource.org/licenses/Apache-2.0 ////////////////////////////////////////////////////////////////////////// extern char *gConfigBuffer; extern UINTN gConfigBufferSize; +extern char *gConfigBufferUpdated; +extern UINTN gConfigBufferUpdatedSize; BOOLEAN ConfigRead(char *configKey, char *configValue, int maxValueSize); int ConfigReadInt(char *configKey, int defaultValue); diff --git a/Library/VeraCryptLib/DcsVeraCrypt.c b/Library/VeraCryptLib/DcsVeraCrypt.c index cc85f4e..f4a1e27 100644 --- a/Library/VeraCryptLib/DcsVeraCrypt.c +++ b/Library/VeraCryptLib/DcsVeraCrypt.c @@ -85,6 +85,10 @@ CHAR8* gOnExitNotFound = NULL; // Authorize ///////////////////////////////////////////////////////////////////////// +#define VCCONFIG_ALLOC(data, size) \ + if(data == NULL) MEM_FREE(data); \ + data = MEM_ALLOC(size); + VOID VCAuthLoadConfig() { @@ -96,30 +100,30 @@ VCAuthLoadConfig() SetMem(&gAuthPassword, sizeof(gAuthPassword), 0); strTemp = MEM_ALLOC(MAX_MSG); - gPasswordPictureFileName = MEM_ALLOC(MAX_MSG * 2); + VCCONFIG_ALLOC(gPasswordPictureFileName, MAX_MSG * 2); ConfigReadString("PasswordPicture", "\\EFI\\VeraCrypt\\login.bmp", strTemp, MAX_MSG); AsciiStrToUnicodeStr(strTemp, gPasswordPictureFileName); MEM_FREE(strTemp); - gPasswordPictureChars = MEM_ALLOC(MAX_MSG); + VCCONFIG_ALLOC(gPasswordPictureChars, MAX_MSG); ConfigReadString("PictureChars", gPasswordPictureCharsDefault, gPasswordPictureChars, MAX_MSG); gPasswordPictureCharsLen = strlen(gPasswordPictureChars); gAuthPasswordType = ConfigReadInt("PasswordType", 0); - gAuthPasswordMsg = MEM_ALLOC(MAX_MSG); + VCCONFIG_ALLOC(gAuthPasswordMsg, MAX_MSG); ConfigReadString("PasswordMsg", "Password:", gAuthPasswordMsg, MAX_MSG); gAutoLogin = (UINT8)ConfigReadInt("AutoLogin", 0); - gAutoPassword = MEM_ALLOC(MAX_PASSWORD); + VCCONFIG_ALLOC(gAutoPassword, MAX_PASSWORD); ConfigReadString("AutoPassword", "", gAutoPassword, MAX_PASSWORD); - gAuthPimMsg = MEM_ALLOC(MAX_MSG); + VCCONFIG_ALLOC(gAuthPimMsg, MAX_MSG); gAuthPimRqt = ConfigReadInt("PimRqt", 1); gAuthPim = ConfigReadInt("Pim", 0); ConfigReadString("PimMsg", "Pim:", gAuthPimMsg, MAX_MSG); - gAuthHashMsg = MEM_ALLOC(MAX_MSG); + VCCONFIG_ALLOC(gAuthHashMsg, MAX_MSG); gAuthHashRqt = ConfigReadInt("HashRqt", 1); gAuthHash = ConfigReadInt("Hash", 0); @@ -145,15 +149,15 @@ VCAuthLoadConfig() gDcsBootForce = ConfigReadInt("DcsBootForce", 1); // Ask password even if no USB marked found. - gForcePasswordMsg = MEM_ALLOC(MAX_MSG); + VCCONFIG_ALLOC(gForcePasswordMsg, MAX_MSG); ConfigReadString("ForcePasswordMsg", gAuthPasswordMsg, gForcePasswordMsg, MAX_MSG); gForcePasswordType = ConfigReadInt("ForcePasswordType", gAuthPasswordType); gForcePasswordProgress = (UINT8)ConfigReadInt("ForcePasswordProgress", gPasswordProgress); gAuthRetry = ConfigReadInt("AuthorizeRetry", 10); - gAuthStartMsg = MEM_ALLOC(MAX_MSG); + VCCONFIG_ALLOC(gAuthStartMsg, MAX_MSG); ConfigReadString("AuthStartMsg", "Authorizing...\n\r", gAuthStartMsg, MAX_MSG); - gAuthErrorMsg = MEM_ALLOC(MAX_MSG); + VCCONFIG_ALLOC(gAuthErrorMsg, MAX_MSG); ConfigReadString("AuthErrorMsg", "Authorization failed. Wrong password, PIM or hash.\n\r", gAuthErrorMsg, MAX_MSG); gRUD = ConfigReadInt("RUD", 0); @@ -166,11 +170,11 @@ VCAuthLoadConfig() gSCLocked = ConfigReadInt("SCLocked", 0); // Actions for DcsInt - gOnExitSuccess = MEM_ALLOC(MAX_MSG); + VCCONFIG_ALLOC(gOnExitSuccess, MAX_MSG); ConfigReadString("ActionSuccess", "Exit", gOnExitSuccess, MAX_MSG); - gOnExitNotFound = MEM_ALLOC(MAX_MSG); + VCCONFIG_ALLOC(gOnExitNotFound, MAX_MSG); ConfigReadString("ActionNotFound", "Exit", gOnExitNotFound, MAX_MSG); - gOnExitFailed = MEM_ALLOC(MAX_MSG); + VCCONFIG_ALLOC(gOnExitFailed, MAX_MSG); ConfigReadString("ActionFailed", "Exit", gOnExitFailed, MAX_MSG); strTemp = MEM_ALLOC(MAX_MSG); @@ -178,7 +182,7 @@ VCAuthLoadConfig() if (strTemp[0] != 0) { EFI_GUID g; if (AsciiStrToGuid(&g, strTemp)) { - gPartitionGuidOS = MEM_ALLOC(sizeof(EFI_GUID)); + VCCONFIG_ALLOC(gPartitionGuidOS, sizeof(EFI_GUID)); if (gPartitionGuidOS != NULL) { memcpy(gPartitionGuidOS, &g, sizeof(g)); } -- cgit v1.2.3