diff options
Diffstat (limited to 'src/Boot')
90 files changed, 70 insertions, 82 deletions
diff --git a/src/Boot/EFI/DcsBml.efi b/src/Boot/EFI/DcsBml.efi Binary files differdeleted file mode 100644 index 97b13024..00000000 --- a/src/Boot/EFI/DcsBml.efi +++ /dev/null diff --git a/src/Boot/EFI/DcsBml32.efi b/src/Boot/EFI/DcsBml32.efi Binary files differdeleted file mode 100644 index a6d32b12..00000000 --- a/src/Boot/EFI/DcsBml32.efi +++ /dev/null diff --git a/src/Boot/EFI/DcsBoot.efi b/src/Boot/EFI/DcsBoot.efi Binary files differindex eabfbcb1..02884df9 100644 --- a/src/Boot/EFI/DcsBoot.efi +++ b/src/Boot/EFI/DcsBoot.efi diff --git a/src/Boot/EFI/DcsBoot32.efi b/src/Boot/EFI/DcsBoot32.efi Binary files differindex 0cdeb429..1447e98b 100644 --- a/src/Boot/EFI/DcsBoot32.efi +++ b/src/Boot/EFI/DcsBoot32.efi diff --git a/src/Boot/EFI/DcsCfg.efi b/src/Boot/EFI/DcsCfg.efi Binary files differindex e4b34dd8..82dc446a 100644 --- a/src/Boot/EFI/DcsCfg.efi +++ b/src/Boot/EFI/DcsCfg.efi diff --git a/src/Boot/EFI/DcsCfg32.efi b/src/Boot/EFI/DcsCfg32.efi Binary files differindex eebf7810..899197ff 100644 --- a/src/Boot/EFI/DcsCfg32.efi +++ b/src/Boot/EFI/DcsCfg32.efi diff --git a/src/Boot/EFI/DcsInfo.efi b/src/Boot/EFI/DcsInfo.efi Binary files differindex a5468d03..15810f4d 100644 --- a/src/Boot/EFI/DcsInfo.efi +++ b/src/Boot/EFI/DcsInfo.efi diff --git a/src/Boot/EFI/DcsInfo32.efi b/src/Boot/EFI/DcsInfo32.efi Binary files differindex 588b9a1e..ddb1e64b 100644 --- a/src/Boot/EFI/DcsInfo32.efi +++ b/src/Boot/EFI/DcsInfo32.efi diff --git a/src/Boot/EFI/DcsInt.efi b/src/Boot/EFI/DcsInt.efi Binary files differindex 579d559e..3816327a 100644 --- a/src/Boot/EFI/DcsInt.efi +++ b/src/Boot/EFI/DcsInt.efi diff --git a/src/Boot/EFI/DcsInt32.efi b/src/Boot/EFI/DcsInt32.efi Binary files differindex 2616fabd..36d7b61f 100644 --- a/src/Boot/EFI/DcsInt32.efi +++ b/src/Boot/EFI/DcsInt32.efi diff --git a/src/Boot/EFI/DcsRe.efi b/src/Boot/EFI/DcsRe.efi Binary files differindex 9770f983..599f7026 100644 --- a/src/Boot/EFI/DcsRe.efi +++ b/src/Boot/EFI/DcsRe.efi diff --git a/src/Boot/EFI/DcsRe32.efi b/src/Boot/EFI/DcsRe32.efi Binary files differindex de2e6b44..f2a935b7 100644 --- a/src/Boot/EFI/DcsRe32.efi +++ b/src/Boot/EFI/DcsRe32.efi diff --git a/src/Boot/EFI/LegacySpeaker.efi b/src/Boot/EFI/LegacySpeaker.efi Binary files differindex 3095bf7a..034c760b 100644 --- a/src/Boot/EFI/LegacySpeaker.efi +++ b/src/Boot/EFI/LegacySpeaker.efi diff --git a/src/Boot/EFI/LegacySpeaker32.efi b/src/Boot/EFI/LegacySpeaker32.efi Binary files differindex 71e28c6d..5b52ba9f 100644 --- a/src/Boot/EFI/LegacySpeaker32.efi +++ b/src/Boot/EFI/LegacySpeaker32.efi diff --git a/src/Boot/EFI/Readme.txt b/src/Boot/EFI/Readme.txt index 9ba94023..ed732bc2 100644 --- a/src/Boot/EFI/Readme.txt +++ b/src/Boot/EFI/Readme.txt @@ -1,34 +1,16 @@ The source code for VeraCrypt EFI bootloader files is available at: https://github.com/veracrypt/VeraCrypt-DCS -Use tag "VeraCrypt_1.18" to extract the sources that were used when building VeraCrypt 1.18. -VeraCrypt-DCS uses EDK II as its UEFI development environement. +VeraCrypt-DCS uses EDK II as its UEFI development environment. VeraCrypt-DCS is licensed under LGPL: https://github.com/veracrypt/VeraCrypt-DCS/blob/master/LICENSE Here the steps to build VeraCrypt-DCS (Visual Studio 2010 SP1 should be installed) - * Clone EDK: git clone https://github.com/tianocore/tianocore.github.io.git edk2 + * Clone EDK: git clone https://github.com/tianocore/edk2.git edk2 * Switch to UDK2015 branche: git checkout UDK2015 - * Clone VeraCrypt-DCS as DcsPkg inside edk2 folder: git clone https://github.com/veracrypt/VeraCrypt-DCS.git DcsPkg + * Clone VeraCrypt-DCS as DcsPkg inside edk2 folder: git clone https://github.com/veracrypt/VeraCrypt-DCS.git DcsPkg * Switch to VeraCrypt_1.18 branche: git checkout VeraCrypt_1.18 * Setup EDK by typing edksetup.bat at the root of folder edk2 * change directoty to DcsPkg and then type setenv.bat. * change directory to DcsPkg\Library\VeraCryptLib and then type mklinks_src.bat: you will be asked to provide the path to VeraCrypt src folder. * change directory to DcsPkg and then type dcs_bld.bat X64Rel * After the build is finished, EFI bootloader files will be present at edk2\Build\DcsPkg\RELEASE_VS2010x86\X64 - -Secure Boot: -In order to allow VeraCrypt EFI bootloader to run when EFI Secure Boot is enabled, VeraCrypt EFI bootloader files are signed by custom key(DCS_sign) whose public part can be loaded into Secure Boot to allow verification of VeraCrypt EFI files. - -to update Secure Boot configuration steps: -1. Enter BIOS configuration -2. Switch Secure boot to setup mode (or custom mode). It deletes PK (platform certificate) and allows to load DCS platform key. -3. Boot Windows -4. execute from admin command prompt - powershell -ExecutionPolicy Bypass -File sb_set_siglists.ps1 -It sets in PK (platform key) - DCS_platform -It sets in KEK (key exchange key) - DCS_key_exchange -It sets in db - DCS_sign MicWinProPCA2011_2011-10-19 MicCorUEFCA2011_2011-06-27 - -All DCS modules are protected by DCS_sign. -All Windows modules are protected by MicWinProPCA2011_2011-10-19 -All SHIM(linux) modules are protected by MicCorUEFCA2011_2011-06-27
\ No newline at end of file diff --git a/src/Boot/EFI/certs/DCS_key_exchange.crt b/src/Boot/EFI/certs/DCS_key_exchange.crt Binary files differdeleted file mode 100644 index 80bc7ca4..00000000 --- a/src/Boot/EFI/certs/DCS_key_exchange.crt +++ /dev/null diff --git a/src/Boot/EFI/certs/DCS_platform.crt b/src/Boot/EFI/certs/DCS_platform.crt Binary files differdeleted file mode 100644 index a7cf8ce9..00000000 --- a/src/Boot/EFI/certs/DCS_platform.crt +++ /dev/null diff --git a/src/Boot/EFI/certs/DCS_sign.crt b/src/Boot/EFI/certs/DCS_sign.crt Binary files differdeleted file mode 100644 index f0538dbb..00000000 --- a/src/Boot/EFI/certs/DCS_sign.crt +++ /dev/null diff --git a/src/Boot/EFI/certs/MicCorUEFCA2011_2011-06-27.crt b/src/Boot/EFI/certs/MicCorUEFCA2011_2011-06-27.crt Binary files differdeleted file mode 100644 index 9aa6ac6c..00000000 --- a/src/Boot/EFI/certs/MicCorUEFCA2011_2011-06-27.crt +++ /dev/null diff --git a/src/Boot/EFI/certs/MicWinProPCA2011_2011-10-19.crt b/src/Boot/EFI/certs/MicWinProPCA2011_2011-10-19.crt Binary files differdeleted file mode 100644 index a6d001c2..00000000 --- a/src/Boot/EFI/certs/MicWinProPCA2011_2011-10-19.crt +++ /dev/null diff --git a/src/Boot/EFI/certs/Readme.txt b/src/Boot/EFI/certs/Readme.txt deleted file mode 100644 index 6663a5d1..00000000 --- a/src/Boot/EFI/certs/Readme.txt +++ /dev/null @@ -1,3 +0,0 @@ -Apart from DCS certificates, there are two public DB entries - one for Windows and one for the UEFI Certificate Authority (CA). -Windows DB: http://www.microsoft.com/pkiops/certs/MicWinProPCA2011_2011-10-19.crt -UEFI DB: http://www.microsoft.com/pkiops/certs/MicCorUEFCA2011_2011-06-27.crt diff --git a/src/Boot/EFI/sb_set_siglists.ps1 b/src/Boot/EFI/sb_set_siglists.ps1 deleted file mode 100644 index 5f664f21..00000000 --- a/src/Boot/EFI/sb_set_siglists.ps1 +++ /dev/null @@ -1,22 +0,0 @@ -Set-ExecutionPolicy Bypass -Force -Import-Module secureboot - -Set-SecureBootUEFI -Name PK -Time 2015-09-11 -Content $null -Set-SecureBootUEFI -Name KEK -Time 2015-09-11 -Content $null -Set-SecureBootUEFI -Name db -Time 2015-09-11 -Content $null -Set-SecureBootUEFI -Name dbx -Time 2015-09-11 -Content $null - -Write-Host "Setting self-signed PK..." -Set-SecureBootUEFI -Time 2016-08-08T00:00:00Z -ContentFilePath siglists\DCS_platform_SigList.bin -SignedFilePath siglists\DCS_platform_SigList_Serialization.bin.p7 -Name PK - -Write-Host "Setting PK-signed KEK..." -Set-SecureBootUEFI -Time 2016-08-08T00:00:00Z -ContentFilePath siglists\DCS_key_exchange_SigList.bin -SignedFilePath siglists\DCS_key_exchange_SigList_Serialization.bin.p7 -Name KEK - -Write-Host "Setting KEK-signed DCS cert in db..." -Set-SecureBootUEFI -Time 2016-08-08T00:00:00Z -ContentFilePath siglists\DCS_sign_SigList.bin -SignedFilePath siglists\DCS_sign_SigList_Serialization.bin.p7 -Name db - -Write-Host "Setting KEK-signed MS cert in db..." -Set-SecureBootUEFI -Time 2016-08-08T00:00:00Z -ContentFilePath siglists\MicWinProPCA2011_2011-10-19_SigList.bin -SignedFilePath siglists\MicWinProPCA2011_2011-10-19_SigList_Serialization.bin.p7 -Name db -AppendWrite:$true - -Write-Host "Setting KEK-signed MS UEFI cert in db..." -Set-SecureBootUEFI -Time 2016-08-08T00:00:00Z -ContentFilePath siglists\MicCorUEFCA2011_2011-06-27_SigList.bin -SignedFilePath siglists\MicCorUEFCA2011_2011-06-27_SigList_Serialization.bin.p7 -Name db -AppendWrite:$true diff --git a/src/Boot/EFI/siglists/DCS_key_exchange_SigList.bin b/src/Boot/EFI/siglists/DCS_key_exchange_SigList.bin Binary files differdeleted file mode 100644 index 62f5cc6f..00000000 --- a/src/Boot/EFI/siglists/DCS_key_exchange_SigList.bin +++ /dev/null diff --git a/src/Boot/EFI/siglists/DCS_key_exchange_SigList_Serialization.bin b/src/Boot/EFI/siglists/DCS_key_exchange_SigList_Serialization.bin Binary files differdeleted file mode 100644 index 1cffcf0c..00000000 --- a/src/Boot/EFI/siglists/DCS_key_exchange_SigList_Serialization.bin +++ /dev/null diff --git a/src/Boot/EFI/siglists/DCS_key_exchange_SigList_Serialization.bin.p7 b/src/Boot/EFI/siglists/DCS_key_exchange_SigList_Serialization.bin.p7 Binary files differdeleted file mode 100644 index 1e9d29ae..00000000 --- a/src/Boot/EFI/siglists/DCS_key_exchange_SigList_Serialization.bin.p7 +++ /dev/null diff --git a/src/Boot/EFI/siglists/DCS_platform_SigList.bin b/src/Boot/EFI/siglists/DCS_platform_SigList.bin Binary files differdeleted file mode 100644 index 0b6d7e12..00000000 --- a/src/Boot/EFI/siglists/DCS_platform_SigList.bin +++ /dev/null diff --git a/src/Boot/EFI/siglists/DCS_platform_SigList_Serialization.bin b/src/Boot/EFI/siglists/DCS_platform_SigList_Serialization.bin Binary files differdeleted file mode 100644 index e8fbf79a..00000000 --- a/src/Boot/EFI/siglists/DCS_platform_SigList_Serialization.bin +++ /dev/null diff --git a/src/Boot/EFI/siglists/DCS_platform_SigList_Serialization.bin.p7 b/src/Boot/EFI/siglists/DCS_platform_SigList_Serialization.bin.p7 Binary files differdeleted file mode 100644 index 19cb86db..00000000 --- a/src/Boot/EFI/siglists/DCS_platform_SigList_Serialization.bin.p7 +++ /dev/null diff --git a/src/Boot/EFI/siglists/DCS_sign_SigList.bin b/src/Boot/EFI/siglists/DCS_sign_SigList.bin Binary files differdeleted file mode 100644 index 9a3f568b..00000000 --- a/src/Boot/EFI/siglists/DCS_sign_SigList.bin +++ /dev/null diff --git a/src/Boot/EFI/siglists/DCS_sign_SigList_Serialization.bin b/src/Boot/EFI/siglists/DCS_sign_SigList_Serialization.bin Binary files differdeleted file mode 100644 index de58d77d..00000000 --- a/src/Boot/EFI/siglists/DCS_sign_SigList_Serialization.bin +++ /dev/null diff --git a/src/Boot/EFI/siglists/DCS_sign_SigList_Serialization.bin.p7 b/src/Boot/EFI/siglists/DCS_sign_SigList_Serialization.bin.p7 Binary files differdeleted file mode 100644 index 01753a8b..00000000 --- a/src/Boot/EFI/siglists/DCS_sign_SigList_Serialization.bin.p7 +++ /dev/null diff --git a/src/Boot/EFI/siglists/MicCorUEFCA2011_2011-06-27_SigList.bin b/src/Boot/EFI/siglists/MicCorUEFCA2011_2011-06-27_SigList.bin Binary files differdeleted file mode 100644 index 413ccab9..00000000 --- a/src/Boot/EFI/siglists/MicCorUEFCA2011_2011-06-27_SigList.bin +++ /dev/null diff --git a/src/Boot/EFI/siglists/MicCorUEFCA2011_2011-06-27_SigList_Serialization.bin b/src/Boot/EFI/siglists/MicCorUEFCA2011_2011-06-27_SigList_Serialization.bin Binary files differdeleted file mode 100644 index 735d9626..00000000 --- a/src/Boot/EFI/siglists/MicCorUEFCA2011_2011-06-27_SigList_Serialization.bin +++ /dev/null diff --git a/src/Boot/EFI/siglists/MicCorUEFCA2011_2011-06-27_SigList_Serialization.bin.p7 b/src/Boot/EFI/siglists/MicCorUEFCA2011_2011-06-27_SigList_Serialization.bin.p7 Binary files differdeleted file mode 100644 index ed8cefda..00000000 --- a/src/Boot/EFI/siglists/MicCorUEFCA2011_2011-06-27_SigList_Serialization.bin.p7 +++ /dev/null diff --git a/src/Boot/EFI/siglists/MicWinProPCA2011_2011-10-19_SigList.bin b/src/Boot/EFI/siglists/MicWinProPCA2011_2011-10-19_SigList.bin Binary files differdeleted file mode 100644 index ac542ca0..00000000 --- a/src/Boot/EFI/siglists/MicWinProPCA2011_2011-10-19_SigList.bin +++ /dev/null diff --git a/src/Boot/EFI/siglists/MicWinProPCA2011_2011-10-19_SigList_Serialization.bin b/src/Boot/EFI/siglists/MicWinProPCA2011_2011-10-19_SigList_Serialization.bin Binary files differdeleted file mode 100644 index 9138dae9..00000000 --- a/src/Boot/EFI/siglists/MicWinProPCA2011_2011-10-19_SigList_Serialization.bin +++ /dev/null diff --git a/src/Boot/EFI/siglists/MicWinProPCA2011_2011-10-19_SigList_Serialization.bin.p7 b/src/Boot/EFI/siglists/MicWinProPCA2011_2011-10-19_SigList_Serialization.bin.p7 Binary files differdeleted file mode 100644 index b08c60a3..00000000 --- a/src/Boot/EFI/siglists/MicWinProPCA2011_2011-10-19_SigList_Serialization.bin.p7 +++ /dev/null diff --git a/src/Boot/Windows/Bios.h b/src/Boot/Windows/Bios.h index 4e1cec59..7085e7a2 100644 --- a/src/Boot/Windows/Bios.h +++ b/src/Boot/Windows/Bios.h @@ -24,7 +24,8 @@ enum { BiosResultSuccess = 0x00, - BiosResultInvalidFunction = 0x01 + BiosResultInvalidFunction = 0x01, + BiosResultTimeout = 0x80 }; typedef byte BiosResult; diff --git a/src/Boot/Windows/Boot.vcxproj b/src/Boot/Windows/Boot.vcxproj index 68d5d270..b9a04d80 100644 --- a/src/Boot/Windows/Boot.vcxproj +++ b/src/Boot/Windows/Boot.vcxproj @@ -222,6 +222,7 @@ nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH</NMakeReBuildCommandLine> <ItemDefinitionGroup> </ItemDefinitionGroup> <ItemGroup> + <ClCompile Include="..\..\Crypto\blake2s-ref.c" /> <ClCompile Include="BootConfig.cpp" /> <ClCompile Include="BootConsoleIo.cpp" /> <ClCompile Include="BootDebug.cpp" /> @@ -240,7 +241,6 @@ nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH</NMakeReBuildCommandLine> <ClCompile Include="..\..\Common\Xts.c" /> <ClCompile Include="..\..\Crypto\AesSmall.c" /> <ClCompile Include="..\..\Crypto\CamelliaSmall.c" /> - <ClCompile Include="..\..\Crypto\Rmd160.c" /> <ClCompile Include="..\..\Crypto\Serpent.c" /> <ClCompile Include="..\..\Crypto\Sha2Small.c" /> <ClCompile Include="..\..\Crypto\Twofish.c" /> diff --git a/src/Boot/Windows/Boot.vcxproj.filters b/src/Boot/Windows/Boot.vcxproj.filters index 1a60ac81..24d23894 100644 --- a/src/Boot/Windows/Boot.vcxproj.filters +++ b/src/Boot/Windows/Boot.vcxproj.filters @@ -74,9 +74,6 @@ <ClCompile Include="..\..\Crypto\CamelliaSmall.c"> <Filter>Source Files\Crypto</Filter> </ClCompile> - <ClCompile Include="..\..\Crypto\Rmd160.c"> - <Filter>Source Files\Crypto</Filter> - </ClCompile> <ClCompile Include="..\..\Crypto\Serpent.c"> <Filter>Source Files\Crypto</Filter> </ClCompile> @@ -86,6 +83,9 @@ <ClCompile Include="..\..\Crypto\Twofish.c"> <Filter>Source Files\Crypto</Filter> </ClCompile> + <ClCompile Include="..\..\Crypto\blake2s-ref.c"> + <Filter>Source Files\Crypto</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <None Include="BootCrt.asm"> diff --git a/src/Boot/Windows/BootCommon.h b/src/Boot/Windows/BootCommon.h index 6de6ca6e..d2ee42a1 100644 --- a/src/Boot/Windows/BootCommon.h +++ b/src/Boot/Windows/BootCommon.h @@ -3,7 +3,7 @@ Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed by the TrueCrypt License 3.0. - Modifications and additions to the original source code (contained in this file) + Modifications and additions to the original source code (contained in this file) and all other portions of this file are Copyright (c) 2013-2017 IDRIX and are governed by the Apache License 2.0 the full text of which is contained in the file License.txt included in VeraCrypt binary and source @@ -17,7 +17,7 @@ #include "BootDefs.h" // The user will be advised to upgrade the rescue disk if upgrading from the following or any previous version -#define TC_RESCUE_DISK_UPGRADE_NOTICE_MAX_VERSION 0x0122 +#define TC_RESCUE_DISK_UPGRADE_NOTICE_MAX_VERSION 0x0125 #define TC_BOOT_LOADER_AREA_SIZE (TC_BOOT_LOADER_AREA_SECTOR_COUNT * TC_SECTOR_SIZE_BIOS) @@ -58,7 +58,7 @@ typedef struct uint16 CryptoInfoOffset; uint16 CryptoInfoLength; uint32 HeaderSaltCrc32; - Password BootPassword; + PasswordLegacy BootPassword; uint64 HiddenSystemPartitionStart; uint64 DecoySystemPartitionStart; uint32 Flags; @@ -178,7 +178,7 @@ CSTATIC_ASSERT(FIELD_OFFSET(DCS_DISK_ENTRY, Length) == FIELD_OFFSET(DCS_DISK_ENT CSTATIC_ASSERT(FIELD_OFFSET(DCS_DISK_ENTRY, Offset) == FIELD_OFFSET(DCS_DISK_ENTRY_SECTORS, Offset), Wrong_Offset_offset); CSTATIC_ASSERT(FIELD_OFFSET(DCS_DISK_ENTRY, Offset) == FIELD_OFFSET(DCS_DISK_ENTRY_PARAMS, Offset), Wrong_Offset_offset); -// DE type specific data +// DE type specific data // DE List typedef struct _DCS_DISK_ENTRY_LIST { // EFI_TABLE_HEADER @@ -206,9 +206,9 @@ typedef struct _DCS_DEP_PWD_CACHE { uint64 Sign; uint32 CRC; uint32 Count; - Password Pwd[4]; + PasswordLegacy Pwd[4]; int32 Pim[4]; - byte pad[512 - 8 - 4 - 4 - (sizeof(Password) + 4) * 4]; + byte pad[512 - 8 - 4 - 4 - (sizeof(PasswordLegacy) + 4) * 4]; } DCS_DEP_PWD_CACHE; CSTATIC_ASSERT(sizeof(DCS_DEP_PWD_CACHE) == 512, Wrong_size_DCS_DEP_PWD_CACHE); #pragma pack() diff --git a/src/Boot/Windows/BootConfig.cpp b/src/Boot/Windows/BootConfig.cpp index 6b28794d..0412d082 100644 --- a/src/Boot/Windows/BootConfig.cpp +++ b/src/Boot/Windows/BootConfig.cpp @@ -85,14 +85,29 @@ ret: BiosResult UpdateBootSectorConfiguration (byte drive) { - AcquireSectorBuffer(); + uint64 mbrSector; + mbrSector.HighPart = 0; + mbrSector.LowPart = 0; + AcquireSectorBuffer(); +/* BiosResult result = ReadWriteMBR (false, drive); if (result != BiosResultSuccess) goto ret; SectorBuffer[TC_BOOT_SECTOR_CONFIG_OFFSET] = BootSectorFlags; result = ReadWriteMBR (true, drive); +*/ + + BiosResult result = ReadWriteSectors (false, TC_BOOT_LOADER_BUFFER_SEGMENT, 0, drive, mbrSector, 8, false); + if (result != BiosResultSuccess) + goto ret; + + CopyMemory (TC_BOOT_LOADER_BUFFER_SEGMENT, 0, SectorBuffer, TC_LB_SIZE); + SectorBuffer[TC_BOOT_SECTOR_CONFIG_OFFSET] = BootSectorFlags; + CopyMemory (SectorBuffer, TC_BOOT_LOADER_BUFFER_SEGMENT,0, TC_LB_SIZE); + + result = ReadWriteSectors (true, TC_BOOT_LOADER_BUFFER_SEGMENT, 0, drive, mbrSector, 8, false); ret: ReleaseSectorBuffer(); diff --git a/src/Boot/Windows/BootConsoleIo.cpp b/src/Boot/Windows/BootConsoleIo.cpp index 9148f5c9..706e36f6 100644 --- a/src/Boot/Windows/BootConsoleIo.cpp +++ b/src/Boot/Windows/BootConsoleIo.cpp @@ -260,7 +260,7 @@ byte GetKeyboardChar (byte *scanCode) { // reduce CPU usage by halting CPU until the next external interrupt is fired __asm - { + { hlt } } diff --git a/src/Boot/Windows/BootDefs.h b/src/Boot/Windows/BootDefs.h index cd4b2263..3d65f0a0 100644 --- a/src/Boot/Windows/BootDefs.h +++ b/src/Boot/Windows/BootDefs.h @@ -205,6 +205,7 @@ TC_HIDDEN_OS_CREATION_PHASE_WIPED = TC__HIDDEN_OS_CREATION_PHASE_WIPED 0x100000, 0x200000, 0x300000, 0x400000, 0x500000, 0x600000, 0x700000, 0x800000, \ 0x900000, 0xA00000, 0xB00000, 0xC00000, 0xD00000, 0xE00000, 0xF00000, 0x1000000 -#define EFI_BOOTARGS_REGIONS EFI_BOOTARGS_REGIONS_LOW, EFI_BOOTARGS_REGIONS_HIGH +#define EFI_BOOTARGS_REGIONS_DEFAULT EFI_BOOTARGS_REGIONS_LOW, EFI_BOOTARGS_REGIONS_HIGH +#define EFI_BOOTARGS_REGIONS_EFI EFI_BOOTARGS_REGIONS_HIGH, EFI_BOOTARGS_REGIONS_LOW #endif // TC_HEADER_Boot_BootDefs diff --git a/src/Boot/Windows/BootDiskIo.cpp b/src/Boot/Windows/BootDiskIo.cpp index ea808dd4..437c462e 100644 --- a/src/Boot/Windows/BootDiskIo.cpp +++ b/src/Boot/Windows/BootDiskIo.cpp @@ -105,7 +105,7 @@ void Print (const ChsAddress &chs) void PrintSectorCountInMB (const uint64 §orCount) { - Print (sectorCount >> (TC_LB_SIZE_BIT_SHIFT_DIVISOR + 2)); Print (" MB "); + Print (sectorCount >> (TC_LB_SIZE_BIT_SHIFT_DIVISOR + 2)); Print (" MiB "); } @@ -237,7 +237,7 @@ static BiosResult ReadWriteSectors (bool write, BiosLbaPacket &dapPacket, byte d } -static BiosResult ReadWriteSectors (bool write, byte *buffer, byte drive, const uint64 §or, uint16 sectorCount, bool silent) +BiosResult ReadWriteSectors (bool write, byte *buffer, byte drive, const uint64 §or, uint16 sectorCount, bool silent) { BiosLbaPacket dapPacket; dapPacket.Buffer = (uint32) buffer; diff --git a/src/Boot/Windows/BootDiskIo.h b/src/Boot/Windows/BootDiskIo.h index d4e8cf04..621acd8f 100644 --- a/src/Boot/Windows/BootDiskIo.h +++ b/src/Boot/Windows/BootDiskIo.h @@ -112,6 +112,7 @@ BiosResult ReadSectors (uint16 bufferSegment, uint16 bufferOffset, byte drive, c BiosResult ReadSectors (byte *buffer, byte drive, const uint64 §or, uint16 sectorCount, bool silent = false); BiosResult ReadSectors (byte *buffer, byte drive, const ChsAddress &chs, byte sectorCount, bool silent = false); BiosResult ReadWriteSectors (bool write, uint16 bufferSegment, uint16 bufferOffset, byte drive, const uint64 §or, uint16 sectorCount, bool silent); +BiosResult ReadWriteSectors (bool write, byte *buffer, byte drive, const uint64 §or, uint16 sectorCount, bool silent); BiosResult WriteSectors (byte *buffer, byte drive, const uint64 §or, uint16 sectorCount, bool silent = false); BiosResult WriteSectors (byte *buffer, byte drive, const ChsAddress &chs, byte sectorCount, bool silent = false); diff --git a/src/Boot/Windows/BootEncryptedIo.cpp b/src/Boot/Windows/BootEncryptedIo.cpp index 25fe1dc4..8ca55635 100644 --- a/src/Boot/Windows/BootEncryptedIo.cpp +++ b/src/Boot/Windows/BootEncryptedIo.cpp @@ -108,10 +108,22 @@ BiosResult WriteEncryptedSectors (uint16 sourceSegment, uint16 sourceOffset, byt EncryptDataUnits (SectorBuffer, &dataUnitNo, 1, BootCryptoInfo); } - result = WriteSectors (SectorBuffer, drive, sector + writeOffset, 1); + result = ReadWriteSectors (true, SectorBuffer, drive, sector + writeOffset, 1, true); + if (BiosResultTimeout == result) + { + if (BiosResultSuccess == ReadWriteSectors (false, TC_BOOT_LOADER_BUFFER_SEGMENT, 0, drive, sector + writeOffset, 8, false)) + { + CopyMemory (SectorBuffer, TC_BOOT_LOADER_BUFFER_SEGMENT,0, TC_LB_SIZE); + result = ReadWriteSectors (true, TC_BOOT_LOADER_BUFFER_SEGMENT, 0, drive, sector + writeOffset, 8, true); + } + } if (result != BiosResultSuccess) + { + sector += writeOffset; + PrintDiskError (result, true, drive, §or); break; + } ++sector; ++dataUnitNo; diff --git a/src/Boot/Windows/BootSector.asm b/src/Boot/Windows/BootSector.asm index 33674146..0d2bbdca 100644 --- a/src/Boot/Windows/BootSector.asm +++ b/src/Boot/Windows/BootSector.asm @@ -43,23 +43,24 @@ main: call print skip_loader_name_msg: - ; Determine boot loader segment - mov ax, TC_BOOT_LOADER_SEGMENT - - ; Check available memory - cmp word ptr [ds:413h], TC_BOOT_LOADER_SEGMENT / 1024 * 16 + TC_BOOT_MEMORY_REQUIRED - jge memory_ok - - mov ax, TC_BOOT_LOADER_SEGMENT_LOW - - cmp word ptr [ds:413h], TC_BOOT_LOADER_SEGMENT_LOW / 1024 * 16 + TC_BOOT_MEMORY_REQUIRED - jge memory_ok - - ; Insufficient memory - mov ax, TC_BOOT_LOADER_LOWMEM_SEGMENT + ; Determine boot loader segment + mov ax, word ptr [ds:413h] ;available kB from BIOS + sub ax, TC_BOOT_MEMORY_REQUIRED ;minus TC_BOOT_MEMORY_REQUIRED + jc mem_toolow + and ax, 0FFE0h ;32K align + shl ax, 6 ;convert kB to segment addr (*1024/16) + cmp ax, 8000h + jb mem_toolow ;we can't load below 8000h + cmp ax, TC_BOOT_LOADER_SEGMENT + jbe memory_ok ;don't load above TC_BOOT_LOADER_SEGMENT (9000h) + mov ax, TC_BOOT_LOADER_SEGMENT + jmp memory_ok + +mem_toolow: + mov ax, TC_BOOT_LOADER_LOWMEM_SEGMENT memory_ok: - mov es, ax + mov es, ax ; Clear BSS section xor al, al @@ -138,7 +139,7 @@ checksum_ok: push dx ; Decompress boot loader - mov cx, word ptr [start + TC_BOOT_SECTOR_LOADER_LENGTH_OFFSET] + mov cx, word ptr cs:[start + TC_BOOT_SECTOR_LOADER_LENGTH_OFFSET] sub cx, TC_GZIP_HEADER_SIZE push cx ; Compressed data size push TC_BOOT_LOADER_COMPRESSED_BUFFER_OFFSET + TC_GZIP_HEADER_SIZE ; Compressed data diff --git a/src/Boot/Windows/Makefile b/src/Boot/Windows/Makefile index 1966a3cb..d08e1f50 100644 --- a/src/Boot/Windows/Makefile +++ b/src/Boot/Windows/Makefile @@ -46,7 +46,7 @@ CFLAGS = $(CFLAGS) /D TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE /D TC_WINDOWS_BOOT_$(SI OBJDIR = $(OBJDIR)_$(SINGLE_PRF) CFLAGS = $(CFLAGS) /D TC_WINDOWS_BOOT_$(SINGLE_PRF) !else -CFLAGS = $(CFLAGS) /D TC_WINDOWS_BOOT_RIPEMD160 +CFLAGS = $(CFLAGS) /D TC_WINDOWS_BOOT_BLAKE2S !endif OUTDIR = $(OBJDIR) @@ -85,7 +85,7 @@ OBJS = $(OBJS) $(OUTDIR)\Xts.obj !if "$(SINGLE_PRF)" == "SHA2" OBJS = $(OBJS) $(OUTDIR)\Sha2Small.obj !else -OBJS = $(OBJS) $(OUTDIR)\Rmd160.obj +OBJS = $(OBJS) $(OUTDIR)\blake2s-ref.obj !endif !if !DEFINED (SINGLE_CIPHER) @@ -196,7 +196,7 @@ $(LIBS) $(LD) $(LFLAGS) @$(PROJ).crf del $(PROJ).crf $(PROJ).crf2 -# Compress the Rescue Disk botloader for Cascades and Serpent since it is too big (size > 31232 bytes) +# Compress the Rescue Disk bootloader for Cascades and Serpent since it is too big (size > 31232 bytes) #!if DEFINED(RESCUE_DISK) && (!DEFINED (SINGLE_CIPHER) || ("$(SINGLE_CIPHER)" == "SERPENT") || ("$(SINGLE_CIPHER)" == "CAMELLIA")) upx $(PROJ).$(TARGETEXT) #!endif diff --git a/src/Boot/Windows/Release/BootLoader.com.gz b/src/Boot/Windows/Release/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..b2859c5e --- /dev/null +++ b/src/Boot/Windows/Release/BootLoader.com.gz diff --git a/src/Boot/Windows/Release/BootSector.bin b/src/Boot/Windows/Release/BootSector.bin Binary files differnew file mode 100644 index 00000000..556a2036 --- /dev/null +++ b/src/Boot/Windows/Release/BootSector.bin diff --git a/src/Boot/Windows/Release/Decompressor.com b/src/Boot/Windows/Release/Decompressor.com Binary files differnew file mode 100644 index 00000000..14b4e5d4 --- /dev/null +++ b/src/Boot/Windows/Release/Decompressor.com diff --git a/src/Boot/Windows/Release_AES/BootLoader.com.gz b/src/Boot/Windows/Release_AES/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..dda3c191 --- /dev/null +++ b/src/Boot/Windows/Release_AES/BootLoader.com.gz diff --git a/src/Boot/Windows/Release_AES/BootSector.bin b/src/Boot/Windows/Release_AES/BootSector.bin Binary files differnew file mode 100644 index 00000000..7d041a36 --- /dev/null +++ b/src/Boot/Windows/Release_AES/BootSector.bin diff --git a/src/Boot/Windows/Release_AES_SHA2/BootLoader.com.gz b/src/Boot/Windows/Release_AES_SHA2/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..89bbd0bb --- /dev/null +++ b/src/Boot/Windows/Release_AES_SHA2/BootLoader.com.gz diff --git a/src/Boot/Windows/Release_AES_SHA2/BootSector.bin b/src/Boot/Windows/Release_AES_SHA2/BootSector.bin Binary files differnew file mode 100644 index 00000000..7d041a36 --- /dev/null +++ b/src/Boot/Windows/Release_AES_SHA2/BootSector.bin diff --git a/src/Boot/Windows/Release_Camellia/BootLoader.com.gz b/src/Boot/Windows/Release_Camellia/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..e4113bbc --- /dev/null +++ b/src/Boot/Windows/Release_Camellia/BootLoader.com.gz diff --git a/src/Boot/Windows/Release_Camellia/BootSector.bin b/src/Boot/Windows/Release_Camellia/BootSector.bin Binary files differnew file mode 100644 index 00000000..9ff1b39e --- /dev/null +++ b/src/Boot/Windows/Release_Camellia/BootSector.bin diff --git a/src/Boot/Windows/Release_Camellia_SHA2/BootLoader.com.gz b/src/Boot/Windows/Release_Camellia_SHA2/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..a7351aff --- /dev/null +++ b/src/Boot/Windows/Release_Camellia_SHA2/BootLoader.com.gz diff --git a/src/Boot/Windows/Release_Camellia_SHA2/BootSector.bin b/src/Boot/Windows/Release_Camellia_SHA2/BootSector.bin Binary files differnew file mode 100644 index 00000000..9ff1b39e --- /dev/null +++ b/src/Boot/Windows/Release_Camellia_SHA2/BootSector.bin diff --git a/src/Boot/Windows/Release_SHA2/BootLoader.com.gz b/src/Boot/Windows/Release_SHA2/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..5cc3ac4a --- /dev/null +++ b/src/Boot/Windows/Release_SHA2/BootLoader.com.gz diff --git a/src/Boot/Windows/Release_SHA2/BootSector.bin b/src/Boot/Windows/Release_SHA2/BootSector.bin Binary files differnew file mode 100644 index 00000000..556a2036 --- /dev/null +++ b/src/Boot/Windows/Release_SHA2/BootSector.bin diff --git a/src/Boot/Windows/Release_Serpent/BootLoader.com.gz b/src/Boot/Windows/Release_Serpent/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..93d50bd2 --- /dev/null +++ b/src/Boot/Windows/Release_Serpent/BootLoader.com.gz diff --git a/src/Boot/Windows/Release_Serpent/BootSector.bin b/src/Boot/Windows/Release_Serpent/BootSector.bin Binary files differnew file mode 100644 index 00000000..8020da87 --- /dev/null +++ b/src/Boot/Windows/Release_Serpent/BootSector.bin diff --git a/src/Boot/Windows/Release_Serpent_SHA2/BootLoader.com.gz b/src/Boot/Windows/Release_Serpent_SHA2/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..9e11a85b --- /dev/null +++ b/src/Boot/Windows/Release_Serpent_SHA2/BootLoader.com.gz diff --git a/src/Boot/Windows/Release_Serpent_SHA2/BootSector.bin b/src/Boot/Windows/Release_Serpent_SHA2/BootSector.bin Binary files differnew file mode 100644 index 00000000..8020da87 --- /dev/null +++ b/src/Boot/Windows/Release_Serpent_SHA2/BootSector.bin diff --git a/src/Boot/Windows/Release_Twofish/BootLoader.com.gz b/src/Boot/Windows/Release_Twofish/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..50ef7af2 --- /dev/null +++ b/src/Boot/Windows/Release_Twofish/BootLoader.com.gz diff --git a/src/Boot/Windows/Release_Twofish/BootSector.bin b/src/Boot/Windows/Release_Twofish/BootSector.bin Binary files differnew file mode 100644 index 00000000..eff8e12a --- /dev/null +++ b/src/Boot/Windows/Release_Twofish/BootSector.bin diff --git a/src/Boot/Windows/Release_Twofish_SHA2/BootLoader.com.gz b/src/Boot/Windows/Release_Twofish_SHA2/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..17654817 --- /dev/null +++ b/src/Boot/Windows/Release_Twofish_SHA2/BootLoader.com.gz diff --git a/src/Boot/Windows/Release_Twofish_SHA2/BootSector.bin b/src/Boot/Windows/Release_Twofish_SHA2/BootSector.bin Binary files differnew file mode 100644 index 00000000..eff8e12a --- /dev/null +++ b/src/Boot/Windows/Release_Twofish_SHA2/BootSector.bin diff --git a/src/Boot/Windows/Rescue/BootLoader.com.gz b/src/Boot/Windows/Rescue/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..dde75739 --- /dev/null +++ b/src/Boot/Windows/Rescue/BootLoader.com.gz diff --git a/src/Boot/Windows/Rescue/BootSector.bin b/src/Boot/Windows/Rescue/BootSector.bin Binary files differnew file mode 100644 index 00000000..556a2036 --- /dev/null +++ b/src/Boot/Windows/Rescue/BootSector.bin diff --git a/src/Boot/Windows/Rescue_AES/BootLoader.com.gz b/src/Boot/Windows/Rescue_AES/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..5bca6dd3 --- /dev/null +++ b/src/Boot/Windows/Rescue_AES/BootLoader.com.gz diff --git a/src/Boot/Windows/Rescue_AES/BootSector.bin b/src/Boot/Windows/Rescue_AES/BootSector.bin Binary files differnew file mode 100644 index 00000000..9ff1b39e --- /dev/null +++ b/src/Boot/Windows/Rescue_AES/BootSector.bin diff --git a/src/Boot/Windows/Rescue_AES_SHA2/BootLoader.com.gz b/src/Boot/Windows/Rescue_AES_SHA2/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..a3a50d81 --- /dev/null +++ b/src/Boot/Windows/Rescue_AES_SHA2/BootLoader.com.gz diff --git a/src/Boot/Windows/Rescue_AES_SHA2/BootSector.bin b/src/Boot/Windows/Rescue_AES_SHA2/BootSector.bin Binary files differnew file mode 100644 index 00000000..9ff1b39e --- /dev/null +++ b/src/Boot/Windows/Rescue_AES_SHA2/BootSector.bin diff --git a/src/Boot/Windows/Rescue_Camellia/BootLoader.com.gz b/src/Boot/Windows/Rescue_Camellia/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..82e823dc --- /dev/null +++ b/src/Boot/Windows/Rescue_Camellia/BootLoader.com.gz diff --git a/src/Boot/Windows/Rescue_Camellia/BootSector.bin b/src/Boot/Windows/Rescue_Camellia/BootSector.bin Binary files differnew file mode 100644 index 00000000..9ff1b39e --- /dev/null +++ b/src/Boot/Windows/Rescue_Camellia/BootSector.bin diff --git a/src/Boot/Windows/Rescue_Camellia_SHA2/BootLoader.com.gz b/src/Boot/Windows/Rescue_Camellia_SHA2/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..978d43ae --- /dev/null +++ b/src/Boot/Windows/Rescue_Camellia_SHA2/BootLoader.com.gz diff --git a/src/Boot/Windows/Rescue_Camellia_SHA2/BootSector.bin b/src/Boot/Windows/Rescue_Camellia_SHA2/BootSector.bin Binary files differnew file mode 100644 index 00000000..9ff1b39e --- /dev/null +++ b/src/Boot/Windows/Rescue_Camellia_SHA2/BootSector.bin diff --git a/src/Boot/Windows/Rescue_SHA2/BootLoader.com.gz b/src/Boot/Windows/Rescue_SHA2/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..bb4fd841 --- /dev/null +++ b/src/Boot/Windows/Rescue_SHA2/BootLoader.com.gz diff --git a/src/Boot/Windows/Rescue_SHA2/BootSector.bin b/src/Boot/Windows/Rescue_SHA2/BootSector.bin Binary files differnew file mode 100644 index 00000000..556a2036 --- /dev/null +++ b/src/Boot/Windows/Rescue_SHA2/BootSector.bin diff --git a/src/Boot/Windows/Rescue_Serpent/BootLoader.com.gz b/src/Boot/Windows/Rescue_Serpent/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..b2cc5727 --- /dev/null +++ b/src/Boot/Windows/Rescue_Serpent/BootLoader.com.gz diff --git a/src/Boot/Windows/Rescue_Serpent/BootSector.bin b/src/Boot/Windows/Rescue_Serpent/BootSector.bin Binary files differnew file mode 100644 index 00000000..8020da87 --- /dev/null +++ b/src/Boot/Windows/Rescue_Serpent/BootSector.bin diff --git a/src/Boot/Windows/Rescue_Serpent_SHA2/BootLoader.com.gz b/src/Boot/Windows/Rescue_Serpent_SHA2/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..e1e0ac0e --- /dev/null +++ b/src/Boot/Windows/Rescue_Serpent_SHA2/BootLoader.com.gz diff --git a/src/Boot/Windows/Rescue_Serpent_SHA2/BootSector.bin b/src/Boot/Windows/Rescue_Serpent_SHA2/BootSector.bin Binary files differnew file mode 100644 index 00000000..8020da87 --- /dev/null +++ b/src/Boot/Windows/Rescue_Serpent_SHA2/BootSector.bin diff --git a/src/Boot/Windows/Rescue_Twofish/BootLoader.com.gz b/src/Boot/Windows/Rescue_Twofish/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..fd17642e --- /dev/null +++ b/src/Boot/Windows/Rescue_Twofish/BootLoader.com.gz diff --git a/src/Boot/Windows/Rescue_Twofish/BootSector.bin b/src/Boot/Windows/Rescue_Twofish/BootSector.bin Binary files differnew file mode 100644 index 00000000..eff8e12a --- /dev/null +++ b/src/Boot/Windows/Rescue_Twofish/BootSector.bin diff --git a/src/Boot/Windows/Rescue_Twofish_SHA2/BootLoader.com.gz b/src/Boot/Windows/Rescue_Twofish_SHA2/BootLoader.com.gz Binary files differnew file mode 100644 index 00000000..49afd19b --- /dev/null +++ b/src/Boot/Windows/Rescue_Twofish_SHA2/BootLoader.com.gz diff --git a/src/Boot/Windows/Rescue_Twofish_SHA2/BootSector.bin b/src/Boot/Windows/Rescue_Twofish_SHA2/BootSector.bin Binary files differnew file mode 100644 index 00000000..eff8e12a --- /dev/null +++ b/src/Boot/Windows/Rescue_Twofish_SHA2/BootSector.bin |