VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Main/Hotkey.cpp
AgeCommit message (Expand)AuthorFilesLines
2017-06-23Update IDRIX copyright yearMounir IDRASSI1-1/+1
2016-05-10Remove trailing whitespaceDavid Foerster1-7/+7
2016-01-20Copyright: update dates to include 2016.Mounir IDRASSI1-1/+1
2015-08-06Update license information to reflect the use of a dual license Apache 2.0 an...Mounir IDRASSI1-5/+9
2014-11-08Change namespace from TrueCrypt to VeraCrypt. Rename method from Resources Re...Mounir IDRASSI1-1/+1
2014-11-08Add TrueCrypt 7.1a MacOSX/Linux specific source files.Mounir IDRASSI1-0/+241
* Windows: Fix build error following merge * Windows: Remove unused variable * Windows: Add missing string in Language.xml * Windows: fix buffer overrun caused by wrong use of wmemset * Do not delete password file Since the file is only available in \Release\Setup Files\ it would be fully deleted after running this script the first time. * Correct return code Originally the function would have always returned the return-code 1 resulting that the user is not able to change the location for the rescue zip. * Added hint for sysenc Added a hint why the field for repeating the password is initially greyed out within the system encryption. * Corrected spelling mistake Corrected spelling mistake * Removed not working copy job The file to be copied was stored at the source location. Therefore the copyjob will not work. Instead the file is already in the target folder. * Removed RIPEMD-160 from Product64.wxs See commit from 21.03.2022 * Added german translation for new interface * Fixed PIM bug * Corrected translation file based on the guidelines within the pull request * Fixing merge conflicts * Fixed Compiling issues. Reverted keyboard translation * Removed artifacts of password translation * Corrected language.xml * Fixed order within german language file * Corrected positions Co-authored-by: Bruna2803 <bruna.radeljak@hotmail.com> Co-authored-by: felixreichmann <30237956+felixreichmann@users.noreply.github.com> Co-authored-by: Mounir IDRASSI <mounir.idrassi@idrix.fr>
Diffstat
-rw-r--r--Translations/Language.de.xml73
-rw-r--r--doc/html/Miscellaneous.html48
-rw-r--r--src/Common/Dlgcode.c71
-rw-r--r--src/Common/Dlgcode.h4
-rw-r--r--src/Common/Language.xml76
-rw-r--r--src/Common/Password.c12
-rw-r--r--src/Format/Format.rc164
-rw-r--r--src/Format/Resource.h25
-rw-r--r--src/Format/Tcformat.c1237
-rw-r--r--src/Format/Tcformat.h8
-rw-r--r--src/Release/Setup Files/Product64.wxs6
-rw-r--r--src/Release/Setup Files/password1000000.txt999999
-rw-r--r--src/Setup/Setup.h2
-rw-r--r--src/Signing/sign_test.bat2
14 files changed, 1001434 insertions, 293 deletions
diff --git a/Translations/Language.de.xml b/Translations/Language.de.xml
index 95821104..3e5ee5f8 100644
--- a/Translations/Language.de.xml
+++ b/Translations/Language.de.xml
@@ -3,5 +3,3 @@
<localization prog-version= "1.26">
- <!-- Sprachen -->
<language langid="de" name="Deutsch" en-name="German" version="1.1.8" translators="Harry Haller, Alexander Schorg, Simon Frankenberger, David Arndt, H. Sauer, Dulla, Ettore Atalan, Matthias Kolja Miehl, Felix Reichmann" />
- <!-- Schriftarten -->
<font lang="de" class="normal" size="11" face="default" />
@@ -10,3 +8,3 @@
<font lang="de" class="title" size="21" face="Times New Roman" />
- <!-- Steuerelemente -->
+
<entry lang="de" key="IDCANCEL">Abbrechen</entry>
@@ -63,3 +61,3 @@
<entry lang="de" key="IDC_PIM_ENABLE">P&amp;IM verwenden</entry>
- <entry lang="de" key="IDC_NEW_PIM_ENABLE">PIM verwenden</entry>
+ <entry lang="de" key="IDC_NEW_PIM_ENABLE">PIM modifizieren</entry>
<entry lang="de" key="IDC_QUICKFORMAT">Schnell-Formatierung</entry>
@@ -75,3 +73,3 @@
<entry lang="de" key="IDC_WHOLE_SYS_DRIVE">Gesamtes Laufwerk verschlüsseln</entry>
- <entry lang="de" key="IDD_VOL_CREATION_WIZARD_DLG">Assistent zum Erstellen eines VeraCrypt-Volumes</entry>
+ <entry lang="de" key="IDD_VOL_CREATION_WIZARD_DLG">VeraCrypt Assistent</entry>
<entry lang="de" key="IDT_CLUSTER">Cluster </entry>
@@ -101,3 +99,3 @@
<entry lang="de" key="IDT_STATUS">Status</entry>
- <entry lang="de" key="IDT_SYSENC_KEYS_GEN_INFO">Die Schlüssel, der Salt-Wert und andere Daten wurden erfolgreich erstellt. Wenn Sie neue Schlüssel erstellen möchten, klicken Sie auf „Zurück“ und dann auf „Weiter“. Ansonsten klicken Sie auf „Weiter“.</entry>
+ <entry lang="de" key="IDT_SYSENC_KEYS_GEN_INFO">Die Schlüssel, der Salt-Wert und andere Daten wurden erfolgreich erstellt. Wenn Sie neue Schlüssel erstellen möchten, klicken Sie auf „Zurück“ und dann auf „Weiter“. Andernfalls klicken Sie auf „Weiter“.</entry>
<entry lang="de" key="IDT_SYS_DEVICE">Partition/Laufwerk verschlüsseln, auf dem Windows installiert ist. Jeder, der Zugang zum System erlangen möchte, muss das korrekte Passwort bei jedem Start von Windows eingeben. Eine Alternative dazu ist das Erstellen eines versteckten Systems.</entry>
@@ -493,3 +491,3 @@
<entry lang="de" key="RESUME">&amp;Weiter</entry>
- <entry lang="de" key="DEFER">&amp;Später</entry>
+ <entry lang="de" key="DEFER">&amp;Abbrechen</entry>
<entry lang="de" key="START">&amp;Start</entry>
@@ -1159,4 +1157,4 @@
<entry lang="de" key="SYSENC_PRE_DRIVE_ANALYSIS_HELP">Am Ende vieler Laufwerke gibt es einen Bereich, der normalerweise vom Betriebssystem versteckt wird (solche Bereiche werden als host-geschützte Bereiche bezeichnet). Allerdings können manche Programme von/auf solche(n) Bereiche(n) lesen und schreiben.\n\nWARNUNG: Einige Computerhersteller verwenden möglicherweise solche Bereiche, um Werkzeuge und Daten für RAID, Systemwiederherstellung, Systeminstallation, Diagnose oder andere Zwecke zu speichern. Wenn solche Tools oder Daten vor dem Starten zugänglich sein müssen, dann sollte der versteckte Bereich nicht verschlüsselt werden (wählen Sie oben „Nein“).\n\nMöchten Sie, dass VeraCrypt einen solchen Bereich (falls vorhanden) am Ende des Systemlaufwerks ermittelt und verschlüsselt?</entry>
- <entry lang="de" key="SYSENC_TYPE_PAGE_TITLE">Art der Systemverschlüsselung</entry>
- <entry lang="de" key="SYSENC_NORMAL_TYPE_HELP">Nur die Systempartition oder das gesamte Systemlaufwerk verschlüsseln.</entry>
+ <entry lang="de" key="SYSENC_TYPE_PAGE_TITLE">Verschlüssel Windows Laufwerk (%c:)</entry>
+ <entry lang="de" key="SYSENC_NORMAL_TYPE_HELP">Wählen Sie diese Option, wenn Sie lediglich die Systempartition oder das gesamte Systemlaufwerk verschlüsseln möchten.</entry>
<entry lang="de" key="SYSENC_HIDDEN_TYPE_HELP">Es kann vorkommen, dass Sie gezwungen werden, das Betriebssystem zu entschlüsseln. Es gibt viele Situationen (z. B. Erpressung), in denen Sie sich nicht weigern können. Bei Auswahl dieser Option erstellen Sie ein verstecktes Betriebssystem, dessen Existenz unmöglich zu beweisen sein sollte (wenn gewisse Richtlinien eingehalten werden). Daher müssen Sie das versteckte Betriebssystem nicht entschlüsseln oder das Passwort dafür herausgeben.</entry>
@@ -1188,5 +1186,5 @@
<entry lang="de" key="SYS_ENCRYPTION_PRETEST_INFO2_PORTION_4">Bitte beachten Sie, dass die genannten Schritte NICHT funktionieren, wenn die Systempartition/das Systemlaufwerk verschlüsselt ist. Es ist unmöglich, ein verschlüsseltes Windows zu starten oder auf verschlüsselte Daten zuzugreifen, ohne das korrekte Passwort einzugeben, auch wenn die vorherigen Schritte befolgt wurden.\n\n\nBitte beachten Sie, dass es einem Angreifer unmöglich sein wird, die Systempartition ohne das korrekte Passwort zu entschlüsseln, selbst wenn er den VeraCrypt-Rettungsdatenträger findet.</entry>
- <entry lang="de" key="SYS_ENCRYPTION_PRETEST_RESULT_TITLE">Vortest abgeschlossen</entry>
- <entry lang="de" key="SYS_ENCRYPTION_PRETEST_RESULT_INFO">Der Vortest wurde erfolgreich abgeschlossen.\n\nWARNUNG: Wenn die Stromversorgung plötzlich unterbrochen wird, während vorhandene Daten „in-place“ verschlüsselt werden, oder wenn das Betriebssystem wegen eines Software- oder Hardwarefehlers abstürzt, während VeraCrypt vorhandene Daten „in-place“ verschlüsselt, dann werden Daten beschädigt oder gehen verloren. Stellen Sie daher bitte sicher, dass Sie Sicherungskopien von den Dateien haben, die Sie verschlüsseln möchten, bevor Sie mit dem Verschlüsseln beginnen. Wenn dies nicht der Fall ist, dann sichern Sie Ihre Dateien jetzt. Sie können auf „Später“ klicken, um die Dateien zu sichern, VeraCrypt jederzeit wieder starten und „System“ &gt; „Unterbrochenen Prozess fortsetzen“ wählen, um die Verschlüsselung zu starten).\n\nWenn Sie fertig sind, klicken Sie auf „Verschlüsseln“, um zu beginnen.</entry>
- <entry lang="de" key="SYSENC_ENCRYPTION_PAGE_INFO">Sie können jederzeit „Pause“ oder „Später“ klicken, um den Ver- oder Entschlüsselungsprozess anzuhalten, diesen Assistenten verlassen, den Computer neu starten oder herunterfahren und den Prozess dann vom pausierten Punkt wieder aufnehmen. Um ein Verlangsamen des Computers zu verhindern, wenn das System oder ein Programm auf das Systemlaufwerk zugreifen, wartet VeraCrypt automatisch, bis die Daten geschrieben oder gelesen wurden (siehe Status oben), und fährt dann automatisch fort.</entry>
+ <entry lang="de" key="SYS_ENCRYPTION_PRETEST_RESULT_TITLE">Vortest erfolgreich abgeschlossen</entry>
+ <entry lang="de" key="SYS_ENCRYPTION_PRETEST_RESULT_INFO">Wenn die Verschlüsselung unterbrochen wird, können Sie sie wieder aufnehmen, indem Sie VeraCrypt neu starten und 'System' > 'Unterbrochenen Prozess fortsetzen' wählen. Bitte stellen Sie sicher, dass Ihr Gerät während des Verschlüsselungsprozesses aufgeladen ist.</entry>
+ <entry lang="de" key="SYSENC_ENCRYPTION_PAGE_INFO">Vergewissern Sie sich, dass Ihr Gerät aufgeladen ist.\nWenn die Verschlüsselung unterbrochen wurde, können Sie sie wieder aufnehmen, indem Sie VeraCrypt neu starten und 'System' > 'Unterbrochenen Prozess fortsetzen' wählen.</entry>
<entry lang="de" key="NONSYS_INPLACE_ENC_ENCRYPTION_PAGE_INFO">\nSie können jederzeit „Pause“ oder „Später“ klicken, um den Verschlüsselungsprozess zu unterbrechen, diesen Assistenten verlassen, den Computer neu starten oder herunterfahren und dann den Prozess wieder fortsetzen. Beachten Sie, dass das Volume nicht eingehängt werden kann, bis es vollständig verschlüsselt wurde.</entry>
@@ -1405,3 +1403,3 @@
<entry lang="de" key="PRE-BOOT">Pre-Boot</entry>
- <entry lang="de" key="RESCUE_DISK_EFI_INFO">Bevor Sie die Partition verschlüsseln können, müssen Sie einen VeraCrypt-Rettungsdatenträger (VRD) erstellen, der zu folgenden Zwecken dient:\n\n- Wenn der VeraCrypt-Bootloader, Hauptschlüssel oder andere kritische Daten beschädigt werden, ermöglicht der VRD Ihnen, sie wiederherzustellen (beachten Sie jedoch, dass Sie immer noch das richtige Passwort eingeben müssen).\n\n- Wenn Windows beschädigt wird und nicht gestartet werden kann, ermöglicht der VRD Ihnen, die Partition dauerhaft zu entschlüsseln, bevor Windows gestartet wird.\n\n- Der VRD wird eine Sicherung des derzeitigen EFI-Bootloaders enthalten und ermöglicht es Ihnen, ihn bei Bedarf wiederherzustellen.\n\nDas VeraCrypt-Rettungsdatenträger-ZIP-Abbild wird in der unten angegebenen Adresse erstellt.</entry>
+ <entry lang="de" key="RESCUE_DISK_EFI_INFO">\n\nWenn Windows beschädigt wird und nicht mehr startet, können Sie mit dem VeraCrypt Rettungsdatenträger die Partition dauerhaft entschlüsseln. Bitte beachten Sie, dass Sie trotzdem das korrekte Passwort eingeben müssen.\n\n\nWARNUNG: Wenn Sie in der Vergangenheit bereits einen Rettungsdatenträger erstellt haben können Sie ihn nicht für diese Verschlüsselung verwenden! Jedes mal, wenn Sie Ihr Laufwerk verschlüsseln müssen Sie einen neuen Rettungsdatenträger erstellen und sicher aufbewahren. Dies gilt auch, wenn Sie das gleiche Passwort verwenden.</entry>
<entry lang="de" key="RESCUE_DISK_EFI_EXTRACT_INFO">Das Rettungsdatenträger-ZIP-Abbild wurde erstellt und in dieser Datei gespeichert:\n%s\n\nJetzt müssen Sie es auf einen mit FAT-/FAT32-formatierten USB-Stick entpacken.\n\n%lsNachdem Sie den Rettungsdatenträger erstellt haben, klicken Sie auf „Weiter“, um zu bestätigen, dass er korrekt erstellt wurde.</entry>
@@ -1572,3 +1570,50 @@
<entry lang="de" key="IDC_USE_ALL_FREE_SPACE">Gesamten verfügbaren freien Speicherplatz nutzen</entry>
- <entry lang="en" key="SYS_ENCRYPTION_UPGRADE_UNSUPPORTED_ALGORITHM">VeraCrypt cannot be upgraded because the system partition/drive was encrypted using an algorithm that is not supported anymore.\nPlease decrypt your system before upgrading VeraCrypt and then encrypt it again.</entry>
+ <entry lang="de" key="SYS_ENCRYPTION_UPGRADE_UNSUPPORTED_ALGORITHM">VeraCrypt kann nicht aktualisiert werden, weil die Systempartition/das Laufwerk mit einem Algorithmus verschlüsselt wurde, der nicht mehr unterstützt wird.\nBitte entschlüsseln Sie Ihr System vor dem Upgrade von VeraCrypt und verschlüsseln Sie es dann erneut.</entry>
+ <entry lang="de" key="RESCUE_DISK_BACK_BUTTON">Der Rettungsdatenträger wurde bereits mit den gewählten Optionen erstellt. Um Inkompatibilitäten zu vermeiden, müssen Sie auf "Abbrechen" klicken und den Systemverschlüsselungsprozess neu starten, wenn Sie eine Konfiguration ändern möchten.</entry>
+ <entry lang="de" key="AES_BOX_HELP">Laut dem National Institute of Standards and Technology (NIST) ist AES sicher</entry>
+ <entry lang="de" key="BACKUP_RESCUE_DISK_TITLE">Sicherung des Rettungsdatenträgers</entry>
+ <entry lang="de" key="RESCUE_DISK_CHECKLIST_A">Bewahren Sie Ihr Passwort an einem sicheren Ort auf. Ohne Ihr Passwort können Sie Ihre Daten nicht wiederherstellen.\nDeshalb gilt VeraCrypt als sicher.</entry>
+ <entry lang="de" key="RESCUE_DISK_CHECKLIST_B">Stellen Sie sicher, dass die Rettungsdatei auf einem externen Medium gespeichert ist. Dies kann ein Flash-Laufwerk, eine externe Festplatte oder sogar ein Cloud-Speicher sein.\nDie Rettungsdatei befindet sich hier:</entry>
+ <entry lang="de" key="RESCUE_DISK_CHECKLIST_C">Bevor Sie mit der Verschlüsselung Ihres Systems beginnen, ist es immer eine gute Idee, Ihre persönlichen Daten auf einem externen Laufwerk zu sichern, für den unwahrscheinlichen Fall, dass der Verschlüsselungsprozess fehlschlägt.</entry>
+ <entry lang="de" key="RESCUE_DISK_INFO_2">Das VeraCrypt Rettungs-ZIP-Image wird erstellt, indem Sie auf die Schaltfläche Next (Weiter) an dem unten angegebenen Ort klicken.</entry>
+ <entry lang="de" key="REMEMBER_PASSWORD"> Ich erinnere mich an mein Passwort</entry>
+ <entry lang="de" key="STORE_RESCUE_DISK"> Ich habe meine Rettungsdatei gespeichert</entry>
+ <entry lang="de" key="BACKUP_DATA"> Ich habe darüber nachgedacht, ein Backup meiner persönlichen Daten zu machen.</entry>
+ <entry lang="de" key="CHECKLIST_TITLE">Checkliste - Bevor Sie auf 'Weiter' klicken</entry>
+ <entry lang="de" key="SYS_ENCRYPTION_PRETEST_INFO">Es müssen nun einige Tests durchgeführt werden, um zu überprüfen, ob alles korrekt funktioniert.\n\nFür diese Tests muss Ihr Computer neu gestartet werden. Dann müssen Sie Ihr Passwort in den VeraCrypt Boot Loader Bildschirm eingeben, der vor dem Start von Windows erscheint. Nach dem Start von Windows wird VeraCrypt automatisch gestartet und Sie werden über das Ergebnis dieses Vortests informiert.\n\n\nDas folgende Gerät wird geändert: Laufwerk %c:</entry>
+ <entry lang="de" key="SYSENC_DECRYPTION_PAGE_INFO">Vergewissern Sie sich, dass Ihr Gerät aufgeladen ist.\nWenn die Verschlüsselung unterbrochen wurde, können Sie sie wieder aufnehmen, indem Sie VeraCrypt neu starten und 'System' > 'Unterbrochenen Prozess fortsetzen' wählen.</entry>
+ <entry lang="de" key="ADVANCED_FEATURES">Erweiterte Funktionen</entry>
+ <entry lang="de" key="VERY_WEAK_PASSWORD">sehr schwach</entry>
+ <entry lang="de" key="WEAK_PASSWORD">schwach</entry>
+ <entry lang="de" key="MEDIUM_PASSWORD">medium</entry>
+ <entry lang="de" key="STRONG_PASSWORD">stark</entry>
+ <entry lang="de" key="VERY_STRONG_PASSWORD">sehr stark</entry>
+ <entry lang="de" key="IDT_PASSWORD_STRENGTH">Passwordstärke:</entry>
+ <entry lang="de" key="PASSWORD_HELP_SYSENC">Sie sollten darüber nachdenken das Passwort an einem sicheren Ort zu notieren. </entry>
+ <entry lang="de" key="AES_HELP_NEW">AES ist nach Ansicht des National Institute of Standards and Technology (NIST) und der Datenschutz- und Sicherheitsforschungsgemeinschaft sicher.</entry>
+ <entry lang="de" key="SHA512_HELP">SHA-512 ist nach Angaben des National Institute of Standards and Technology (NIST) und der Datenschutz- und Sicherheitsforschungsgemeinschaft sicher.</entry>
+ <entry lang="de" key="CHOOSE_PASSWORD_TITLE">Passwort wählen</entry>
+ <entry lang="de" key="TRANSLATED_PWD_NOT_WRITTEN">Warnung: Beim Schreiben des übersetzten Passworts ist ein Fehler aufgetreten! Bitte versuchen Sie es erneut. Wenn dieser Fehler erneut auftritt, ändern Sie das Tastaturlayout manuell in das US-Tastaturlayout.</entry>
+ <entry lang="de" key="ERROR_TRANSLATE_PWD">Warnung: Beim Übersetzen des Passworts ist ein Fehler aufgetreten!\nBitte geben Sie das Passwort erneut ein und versuchen Sie es. Wenn dieser Fehler erneut auftritt, schalten Sie das Tastaturlayout manuell auf das US-Tastaturlayout um.</entry>
+ <entry lang="de" key="ERROR_KEYB_LAYOUT_NOT_LOADED">Ihr System unterstützt nicht das Standard-US-Keyboard-Layout. Bitte stellen Sie sicher, dass das Layout verfügbar ist. Für weitere Hilfe besuchen Sie bitte: https://support.microsoft.com/en-us/windows/manage-the-input-and-display-language-settings-in-windows-10-12a10cb4-8626-9b77-0ccb-5013e0c7c7a2 </entry>
+ <entry lang="de" key="ERROR_PASTE_ACTION">Das Einfügen von Text ist deaktiviert. Bitte geben Sie Ihr Passwort ein.</entry>
+ <entry lang="de" key="WARNING_PASSWORD_NOT_IDENTICAL">Passwörter sind nicht identisch! Bitte geben Sie in beide Felder identische Passwörter ein!</entry>
+ <entry lang="de" key="SYSENC_INFO">Dieser Assistent hilft Ihnen, Ihr Laufwerk (%c:) zu verschlüsseln</entry>
+ <entry lang="de" key="SYSENC_INFO_2">Ein Windows-Kennwort kann von böswilligen Personen, die physischen Zugang zu Ihrem Gerät haben, leicht umgangen werden. Laufwerksverschlüsselung hilft, Ihre Daten vor dem Zugriff böswilligen Akteuren zu schützen. VeraCrypt Laufwerksverschlüsselung hält sie fern, indem es Ihre Daten mit einem zusätzlichen Passwort schützt. </entry>
+ <entry lang="de" key="ADV_FEATURES_INTRO_TOOLTIP">Aktivieren Sie hier das versteckte Betriebssystem.</entry>
+ <entry lang="de" key="ADV_FEATURES_NOTE">Die meisten Experten sind sich einig, dass die folgenden vorgewählten Optionen sicher sind. Ändern Sie sie nur, wenn Sie wissen, was Sie tun. </entry>
+ <entry lang="de" key="PIM_INFO">Mit dem persönlichen Iterationsmultiplikator (PIM) können Sie die Anzahl der Passwort-Hash-Wiederholungen festlegen. Dies bietet mehr Flexibilität bei der Anpassung der gewünschten Sicherheitsstufe und steuert gleichzeitig die Geschwindigkeit des Einhänge-/Bootvorgangs.</entry>
+ <entry lang="de" key="WIPE_INFO">Überschreibt Ihre Daten vor der Verschlüsselung. Dies verhindert eine mögliche Datenwiederherstellung. Das Löschen ist unter normalen Umständen nicht erforderlich.</entry>
+ <entry lang="de" key="PRETEST_INFO">Vor der Verschlüsselung prüft VeraCrypt, ob alles richtig funktioniert. \n\nVeraCrypt führt einige Tests durch, startet Ihren Computer neu und Sie müssen Ihr Passwort eingeben, bevor Windows startet.</entry>
+ <entry lang="de" key="PRETEST_CANCEL">Wenn Sie jetzt auf Abbrechen klicken, werden keine Änderungen an Ihrem System vorgenommen.</entry>
+ <entry lang="de" key="ERROR_GETTING_PATH">Beim Abrufen des Pfads zur ausführbaren Datei ist ein Fehler aufgetreten.</entry>
+ <entry lang="de" key="ERROR_GETTING_PWD">Beim Abrufen des Passworts ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.</entry>
+ <entry lang="de" key="ERROR_GETTING_KEYB_STATE">Beim Abrufen des Tastaturstatus ist ein Fehler aufgetreten.</entry>
+ <entry lang="de" key="ERR_NO_TRANSLATION">Für die Taste, die Sie gedrückt haben, gibt es keine Übersetzung!</entry>
+ <entry lang="de" key="DEAD_KEY_SUPPORT">Tote Tasten reproduzieren in diesem Fall keine toten Zeichen, da Ihr Passwort in das US-Tastaturlayout übersetzt werden muss, damit Sie Ihr Passwort in der Pre-Boot-Umgebung eingeben können.</entry>
+ <entry lang="de" key="PRETEST_CHECKBOX"> Ich habe dafür gesorgt, dass meinem Gerät während des Verschlüsselungsvorgangs nicht der Strom ausgeht.</entry>
+ <entry lang="de" key="OPEN_PATH_CHECKLIST_PAGE">Pfad öffnen</entry>
+ <entry lang="de" key="RESCUE_DISK_PATH">Pfad des Rettungsdatenträgers</entry>
+ <entry lang="de" key="PRETEST_BACK_BUTTON">Wenn Sie den Verschlüsselungsassistenten abbrechen möchten, klicken Sie bitte auf Abbrechen. In diesem Fall werden keine Änderungen an Ihrem Computer vorgenommen.</entry>
+ <entry lang="de" key="WIPE_WARNING">Der Löschvorgang kann sehr lange dauern (bis zu Stunden). Das Löschen wird nicht empfohlen, wenn Sie ein SSD-Laufwerk haben.</entry>
</localization>
diff --git a/doc/html/Miscellaneous.html b/doc/html/Miscellaneous.html
new file mode 100644
index 00000000..95eb6af8
--- /dev/null
+++ b/doc/html/Miscellaneous.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<title>VeraCrypt - Free Open source disk encryption with strong security for the Paranoid</title>
+<meta name="description" content="VeraCrypt is free open-source disk encryption software for Windows, Mac OS X and Linux. In case an attacker forces you to reveal the password, VeraCrypt provides plausible deniability. In contrast to file encryption, data encryption performed by VeraCrypt is real-time (on-the-fly), automatic, transparent, needs very little memory, and does not involve temporary unencrypted files."/>
+<meta name="keywords" content="encryption, security"/>
+<link href="styles.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+
+<div>
+<a href="Documentation.html"><img src="VeraCrypt128x128.png" alt="VeraCrypt"/></a>
+</div>
+
+<div id="menu">
+ <ul>
+ <li><a href="Home.html">Home</a></li>
+ <li><a href="/code/">Source Code</a></li>
+ <li><a href="Downloads.html">Downloads</a></li>
+ <li><a class="active" href="Documentation.html">Documentation</a></li>
+ <li><a href="Donation.html">Donate</a></li>
+ <li><a href="https://sourceforge.net/p/veracrypt/discussion/" target="_blank">Forums</a></li>
+ </ul>
+</div>
+
+<div>
+<p>
+<a href="Documentation.html">Documentation</a>
+<img src="arrow_right.gif" alt=">>" style="margin-top: 5px">
+<a href="Miscellaneous.html">Miscellaneous</a>
+</p></div>
+
+<div class="wikidoc">
+<h1>Miscellaneous</h1>
+<ul>
+<li><a href="Using%20VeraCrypt%20Without%20Administrator%20Privileges.html">Use Without Admin Rights</a>
+</li><li><a href="Sharing%20over%20Network.html">Sharing over Network</a>
+</li><li><a href="VeraCrypt%20Background%20Task.html">Background Task</a>
+</li><li><a href="Removable%20Medium%20Volume.html">Removable Medium Volumes</a>
+</li><li><a href="VeraCrypt%20System%20Files.html">VeraCrypt System Files</a>
+</li><li><a href="Removing%20Encryption.html">Removing Encryption</a>
+</li><li><a href="Uninstalling%20VeraCrypt.html">Uninstalling VeraCrypt</a>
+</li><li><a href="Digital%20Signatures.html">Digital Signatures</a>
+</li></ul>
+</div>
+</body></html>
diff --git a/src/Common/Dlgcode.c b/src/Common/Dlgcode.c
index 2c707f5d..c3430525 100644
--- a/src/Common/Dlgcode.c
+++ b/src/Common/Dlgcode.c
@@ -2070,3 +2070,4 @@ void HandlePasswordEditWmChar (HWND hwnd, WPARAM wParam)
-// Protects an input field from having its content updated by a Paste action (call ToBootPwdField() to use this).
+
+/* Protects an input field from having its content updated by a paste action */
static LRESULT CALLBACK BootPwdFieldProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
@@ -2074,3 +2075,3 @@ static LRESULT CALLBACK BootPwdFieldProc (HWND hwnd, UINT message, WPARAM wParam
WNDPROC wp = (WNDPROC) GetWindowLongPtrW (hwnd, GWLP_USERDATA);
-
+
switch (message)
@@ -2078,3 +2079,5 @@ static LRESULT CALLBACK BootPwdFieldProc (HWND hwnd, UINT message, WPARAM wParam
case WM_PASTE:
+ Error ("ERROR_PASTE_ACTION", GetParent(hwnd));
return 1;
+
case WM_CHAR:
@@ -2083,3 +2086,2 @@ static LRESULT CALLBACK BootPwdFieldProc (HWND hwnd, UINT message, WPARAM wParam
}
-
return CallWindowProcW (wp, hwnd, message, wParam, lParam);
@@ -2087,3 +2089,2 @@ static LRESULT CALLBACK BootPwdFieldProc (HWND hwnd, UINT message, WPARAM wParam
-
// Protects an input field from having its content updated by a Paste action. Used for pre-boot password
@@ -2106,2 +2107,8 @@ void ToBootPwdField (HWND hwndDlg, UINT ctrlId)
+BOOL CheckIsIMESupported ()
+{
+ if (himm32dll == NULL)
+ return FALSE;
+ return TRUE;
+}
// Ensures that a warning is displayed when user is pasting a password longer than the maximum
@@ -2936,3 +2943,3 @@ SelectAlgo (HWND hComboBox, int *algo_id)
back to a default */
-
+
*algo_id = (int) SendMessage (hComboBox, CB_GETITEMDATA, 0, 0);
@@ -5463,2 +5470,49 @@ BOOL BrowseFiles (HWND hwndDlg, char *stringId, wchar_t *lpszFileName, BOOL keep
+BOOL BrowseFile (HWND hwndDlg, char *stringId, wchar_t *initialDir)
+{
+ OPENFILENAMEW ofn;
+ wchar_t file[TC_MAX_PATH] = { 0 };
+ wchar_t filter[1024];
+ BOOL status = FALSE;
+
+ CoInitialize (NULL);
+
+ ZeroMemory (&ofn, sizeof (ofn));
+
+ if (initialDir)
+ {
+ ofn.lpstrInitialDir = initialDir;
+ }
+
+ ofn.lStructSize = sizeof (ofn);
+ ofn.hwndOwner = hwndDlg;
+ StringCbPrintfW (filter, sizeof(filter), L"%ls (*.*)%c*.*%c",
+ GetString ("ALL_FILES"), 0, 0);
+ ofn.lpstrFilter = filter;
+ ofn.nFilterIndex = 1;
+ ofn.lpstrFile = NULL;
+ ofn.nMaxFile = sizeof (file) / sizeof (file[0]);
+ ofn.lpstrTitle = GetString (stringId);
+ ofn.lpstrDefExt = NULL;
+ ofn.Flags = OFN_HIDEREADONLY
+ | OFN_PATHMUSTEXIST
+ | OFN_DONTADDTORECENT;
+
+ SystemFileSelectorCallerThreadId = GetCurrentThreadId();
+ SystemFileSelectorCallPending = TRUE;
+
+ if (!GetOpenFileNameW (&ofn))
+ goto ret;
+
+ SystemFileSelectorCallPending = FALSE;
+
+ status = TRUE;
+
+ret:
+ SystemFileSelectorCallPending = FALSE;
+ ResetCurrentDirectory();
+ CoUninitialize();
+
+ return status;
+}
@@ -9984,4 +10038,2 @@ BOOL PrintHardCopyTextUTF16 (wchar_t *text, wchar_t *title, size_t textByteLen)
}
-
-
BOOL IsNonInstallMode ()
@@ -10084,3 +10136,2 @@ BOOL IsNonInstallMode ()
-
LRESULT SetCheckBox (HWND hwndDlg, int dlgItem, BOOL state)
@@ -11625,3 +11676,3 @@ BYTE *MapResource (wchar_t *resourceType, int resourceId, PDWORD size)
HRSRC hRes;
- HINSTANCE hResInst = NULL;
+ HINSTANCE hResInst = NULL;
@@ -11637,3 +11688,3 @@ BYTE *MapResource (wchar_t *resourceType, int resourceId, PDWORD size)
hResL = LoadResource (hResInst, hRes);
-
+
if (size != NULL)
diff --git a/src/Common/Dlgcode.h b/src/Common/Dlgcode.h
index 362b2d6d..d9bc3374 100644
--- a/src/Common/Dlgcode.h
+++ b/src/Common/Dlgcode.h
@@ -284,2 +284,5 @@ typedef NTSTATUS (WINAPI *NtQuerySystemInformationFn)(
+
+BOOL CheckIsIMESupported ();
+
void InitGlobalLocks ();
@@ -376,2 +379,3 @@ void ResetCurrentDirectory ();
BOOL BrowseFiles (HWND hwndDlg, char *stringId, wchar_t *lpszFileName, BOOL keepHistory, BOOL saveMode, wchar_t *browseFilter);
+BOOL BrowseFile (HWND hwndDlg, char *stringId, wchar_t *initialDir);
BOOL BrowseDirectories (HWND hWnd, char *lpszTitle, wchar_t *dirName);
diff --git a/src/Common/Language.xml b/src/Common/Language.xml
index e4ceac7a..9ac6ce1b 100644
--- a/src/Common/Language.xml
+++ b/src/Common/Language.xml
@@ -8,2 +8,3 @@
<font lang="en" class="title" size="21" face="Times New Roman" />
+
<entry lang="en" key="IDCANCEL">Cancel</entry>
@@ -60,3 +61,3 @@
<entry lang="en" key="IDC_PIM_ENABLE">Use P&amp;IM</entry>
- <entry lang="en" key="IDC_NEW_PIM_ENABLE">Use PIM</entry>
+ <entry lang="en" key="IDC_NEW_PIM_ENABLE">Modify PIM</entry>
<entry lang="en" key="IDC_QUICKFORMAT">Quick Format</entry>
@@ -72,3 +73,3 @@
<entry lang="en" key="IDC_WHOLE_SYS_DRIVE">Encrypt the whole drive</entry>
- <entry lang="en" key="IDD_VOL_CREATION_WIZARD_DLG">VeraCrypt Volume Creation Wizard</entry>
+ <entry lang="en" key="IDD_VOL_CREATION_WIZARD_DLG">VeraCrypt Wizard</entry>
<entry lang="en" key="IDT_CLUSTER">Cluster </entry>
@@ -102,3 +103,3 @@
<entry lang="en" key="IDT_VOLUME_LABEL">Volume Label in Windows:</entry>
- <entry lang="en" key="IDT_WIPE_MODE">Wipe mode:</entry>
+ <entry lang="en" key="IDT_WIPE_MODE">Wipe Mode</entry>
<entry lang="en" key="IDCLOSE">Close</entry>
@@ -490,3 +491,3 @@
<entry lang="en" key="RESUME">&amp;Resume</entry>
- <entry lang="en" key="DEFER">&amp;Defer</entry>
+ <entry lang="en" key="DEFER">&amp;Cancel</entry>
<entry lang="en" key="START">&amp;Start</entry>
@@ -1108,3 +1109,3 @@
<entry lang="en" key="CANT_CHANGE_KEYB_LAYOUT_FOR_SYS_ENCRYPTION">Error: Cannot set the keyboard layout for VeraCrypt to the standard US keyboard layout.\n\nNote that the password needs to be typed in the pre-boot environment (before Windows starts) where non-US Windows keyboard layouts are not available. Therefore, the password must always be typed using the standard US keyboard layout.</entry>
- <entry lang="en" key="ALT_KEY_CHARS_NOT_FOR_SYS_ENCRYPTION">As VeraCrypt temporarily changed the keyboard layout to the standard US keyboard layout, it is not possible to type characters by pressing keys while the right Alt key is held down. However, you can type most of such characters by pressing appropriate keys while the Shift key is held down.</entry>
+ <entry lang="en" key="ALT_KEY_CHARS_NOT_FOR_SYS_ENCRYPTION">It is not possible to type characters by pressing keys while the right Alt key is held down. However, you can type most of such characters by pressing appropriate keys while the Shift key is held down.</entry>
<entry lang="en" key="KEYB_LAYOUT_CHANGE_PREVENTED">VeraCrypt prevented change of keyboard layout.</entry>
@@ -1156,3 +1157,3 @@
<entry lang="en" key="SYSENC_PRE_DRIVE_ANALYSIS_HELP">At the end of many drives, there is an area that is normally hidden from the operating system (such areas are usually referred to as Host Protected Areas). However, some programs can read and write data from/to such areas.\n\nWARNING: Some computer manufacturers may use such areas to store tools and data for RAID, system recovery, system setup, diagnostic, or other purposes. If such tools or data must be accessible before booting, the hidden area should NOT be encrypted (choose 'No' above).\n\nDo you want VeraCrypt to detect and encrypt such a hidden area (if any) at the end of the system drive?</entry>
- <entry lang="en" key="SYSENC_TYPE_PAGE_TITLE">Type of System Encryption</entry>
+ <entry lang="en" key="SYSENC_TYPE_PAGE_TITLE">Encrypt Windows Drive (%c:)</entry>
<entry lang="en" key="SYSENC_NORMAL_TYPE_HELP">Select this option if you merely want to encrypt the system partition or the entire system drive.</entry>
@@ -1175,3 +1176,3 @@
<entry lang="en" key="RESCUE_DISK_CREATED_TITLE">Rescue Disk Created</entry>
- <entry lang="en" key="SYS_ENCRYPTION_PRETEST_TITLE">System Encryption Pretest</entry>
+ <entry lang="en" key="SYS_ENCRYPTION_PRETEST_TITLE">System Encryption Test</entry>
<entry lang="en" key="RESCUE_DISK_DISK_VERIFIED_TITLE">Rescue Disk Verified</entry>
@@ -1185,5 +1186,5 @@
<entry lang="en" key="SYS_ENCRYPTION_PRETEST_INFO2_PORTION_4">Note that the previous steps do NOT work if the system partition/drive is encrypted (nobody can start Windows or access encrypted data on the drive without the correct password even if he or she follows the previous steps).\n\n\nNote that even if you lose your VeraCrypt Rescue Disk and an attacker finds it, he or she will NOT be able to decrypt the system partition or drive without the correct password.</entry>
- <entry lang="en" key="SYS_ENCRYPTION_PRETEST_RESULT_TITLE">Pretest Completed</entry>
- <entry lang="en" key="SYS_ENCRYPTION_PRETEST_RESULT_INFO">The pretest has been successfully completed.\n\nWARNING: Please note that if power supply is suddenly interrupted while encrypting existing data in place, or when the operating system crashes due to a software error or hardware malfunction while VeraCrypt is encrypting existing data in place, portions of the data will be corrupted or lost. Therefore, before you start encrypting, please make sure that you have backup copies of the files you want to encrypt. If you do not, please back up the files now (you can click Defer, back up the files, then run VeraCrypt again anytime, and select 'System' &gt; 'Resume Interrupted Process' to start encrypting).\n\nWhen ready, click Encrypt to start encrypting.</entry>
- <entry lang="en" key="SYSENC_ENCRYPTION_PAGE_INFO">You can click Pause or Defer anytime to interrupt the process of encryption or decryption, exit this wizard, restart or shut down your computer, and then resume the process, which will continue from the point it was stopped. To prevent slowdown when the system or applications write or read data from the system drive, VeraCrypt automatically waits until the data is written or read (see Status above) and then automatically continues encrypting or decrypting.</entry>
+ <entry lang="en" key="SYS_ENCRYPTION_PRETEST_RESULT_TITLE">Pretest Successfully Completed</entry>
+ <entry lang="en" key="SYS_ENCRYPTION_PRETEST_RESULT_INFO">If the encryption is interrupted you can resume it restarting VeraCrypt and selecting 'System' > 'Resume Interrupted Process'\n\nPlease make sure, that your device does not run out of power during the encryption process.</entry>
+ <entry lang="en" key="SYSENC_ENCRYPTION_PAGE_INFO">Make sure that your device does not run out of power.\nIf the encryption is interrupted you can resume it restarting VeraCrypt and selecting 'System' > 'Resume Interrupted Process'.</entry>
<entry lang="en" key="NONSYS_INPLACE_ENC_ENCRYPTION_PAGE_INFO">\n\nYou can click Pause or Defer anytime to interrupt the process of encryption, exit this wizard, restart or shut down your computer, and then resume the process, which will continue from the point it was stopped. Note that the volume cannot be mounted until it has been fully encrypted.</entry>
@@ -1309,3 +1310,3 @@
<entry lang="en" key="UNSUPPORTED_TRUECRYPT_FORMAT">This volume was created with TrueCrypt %x.%x but VeraCrypt supports only TrueCrypt volumes created with TrueCrypt 6.x/7.x series</entry>
- <entry lang="en" key="TEST">Test</entry>
+ <entry lang="en" key="TEST">Start pretest</entry>
<entry lang="en" key="KEYFILE">Keyfile</entry>
@@ -1402,5 +1403,5 @@
<entry lang="en" key="PRE-BOOT">Pre-Boot</entry>
- <entry lang="en" key="RESCUE_DISK_EFI_INFO">Before you can encrypt the partition, you must create a VeraCrypt Rescue Disk (VRD), which serves the following purposes:\n\n- If the VeraCrypt Boot Loader, master key, or other critical data gets damaged, the VRD allows you to restore it (note, however, that you will still have to enter the correct password then).\n\n- If Windows gets damaged and cannot start, the VRD allows you to permanently decrypt the partition before Windows starts.\n\n- The VRD will contain a backup of the present EFI boot loader and will allow you to restore it if necessary.\n\nThe VeraCrypt Rescue Disk ZIP image will be created in the location specified below.</entry>
+ <entry lang="en" key="RESCUE_DISK_EFI_INFO">\n\nIf Windows gets damaged and cannot start, the VeraCrypt Rescue Disk allows you to permanently decrypt the partition. Note, however, that you will still have to enter the correct password then!\n\n\nWARNING: If you have already created a VeraCrypt Rescue Disk in the past, it cannot be reused for this encryption! Every time you use this encryption tool, you must create and securely store a new VeraCrypt Rescue Disk for it even if you use the same password.</entry>
<entry lang="en" key="RESCUE_DISK_EFI_EXTRACT_INFO">The Rescue Disk ZIP image has been created and stored in this file:\n%s\n\nNow you need to extract it to a USB stick that is formatted as FAT/FAT32.\n\n%lsAfter you create the Rescue Disk, click Next to verify that it has been correctly created.</entry>
- <entry lang="en" key="RESCUE_DISK_EFI_EXTRACT_INFO_NO_CHECK">The Rescue Disk ZIP image has been created and stored in this file:\n%s\n\nNow you should either extract the image to a USB stick that is formatted as FAT/FAT32 or move it to a safe location for later use.\n\n%lsClick Next to continue.</entry>
+ <entry lang="en" key="RESCUE_DISK_EFI_EXTRACT_INFO_NO_CHECK">The Rescue Disk ZIP image has been created and stored in this file:\n%s\n\nNow you should either extract the image to a USB stick that is formatted as FAT/FAT32 or move it to a safe location for later use.\n\n\n\n%lsClick Next to continue.</entry>
<entry lang="en" key="RESCUE_DISK_EFI_EXTRACT_INFO_NOTE">IMPORTANT: Note that the zip file must be extracted directly to the root of the USB stick. For example, if the drive letter of the USB stick is E: then extracting the zip file should create a folder E:\\EFI on the USB stick.\n\n</entry>
@@ -1427,3 +1428,3 @@
<entry lang="en" key="VOLUME_TOO_LARGE_FOR_HOST">ERROR: The size of the file container is larger than the available free space on disk.</entry>
- <entry lang="en" key="IDC_ALLOW_WINDOWS_DEFRAG">Allow Windows Disk Defragmenter to defragment non-system partition/drive</entry>
+ <entry lang="en" key="IDC_ALLOW_WINDOWS_DEFRAG">Allow Windows Disk Defragmenter to defragment non-system partition/drive</entry>
<entry lang="en" key="CONFIRM_ALLOW_WINDOWS_DEFRAG">WARNING: Defragmenting non-system partitions/drives may leak metadata about their content or cause issues with hidden volumes they may contain.\n\nContinue?</entry>
@@ -1570,2 +1571,49 @@
<entry lang="en" key="SYS_ENCRYPTION_UPGRADE_UNSUPPORTED_ALGORITHM">VeraCrypt cannot be upgraded because the system partition/drive was encrypted using an algorithm that is not supported anymore.\nPlease decrypt your system before upgrading VeraCrypt and then encrypt it again.</entry>
+ <entry lang="en" key="RESCUE_DISK_BACK_BUTTON">The Rescue Disk was already created depending on the selected options. In order to prevent incompatibility, you have to click 'cancel' and restart the system encryption process, if you want to modify any configuration.</entry>
+ <entry lang="en" key="AES_BOX_HELP">AES is secure according to NIST</entry>
+ <entry lang="en" key="BACKUP_RESCUE_DISK_TITLE">Backup Rescue Disk</entry>
+ <entry lang="en" key="RESCUE_DISK_CHECKLIST_A">Store your password in a safe location. You can not recover your data without your password.\nThat is why VeraCrypt is considered to be secure.</entry>
+ <entry lang="en" key="RESCUE_DISK_CHECKLIST_B">Make sure that the rescue file is stored on an external medium. This could be a flash drive, an external hard drive or even a cloud storage.\nYour rescue file is located here:</entry>
+ <entry lang="en" key="RESCUE_DISK_CHECKLIST_C">Before you start encrypting your system, it is always a good idea to backup your personal data on an external drive for the unlikely case that the encryption process fails.</entry>
+ <entry lang="en" key="RESCUE_DISK_INFO_2">The VeraCrypt Rescue Disk ZIP image will be created by clicking the Next button in location specified below.</entry>
+ <entry lang="en" key="REMEMBER_PASSWORD"> I remember my Password</entry>
+ <entry lang="en" key="STORE_RESCUE_DISK"> I stored my rescue file</entry>
+ <entry lang="en" key="BACKUP_DATA"> I considered doing a backup of my personal Data</entry>
+ <entry lang="en" key="CHECKLIST_TITLE">Checklist - Before clicking 'Next'</entry>
+ <entry lang="en" key="SYS_ENCRYPTION_PRETEST_INFO">Some tests have to be done now to verify that everything works correctly.\n\nFor this test, your computer has to be restarted. Then you will have to enter your password in the VeraCrypt Boot Loader screen that will appear before Windows starts. After Windows starts, VeraCrypt is started automatically and you will be informed about the result of this pretest.\n\n\nThe following device will be modified: Drive %c:</entry>
+ <entry lang="en" key="SYSENC_DECRYPTION_PAGE_INFO">Make sure that your device does not run out of power.\nIf the decryption is interrupted you can resume it restarting VeraCrypt and selecting 'System' > 'Resume Interrupted Process'.</entry>
+ <entry lang="en" key="ADVANCED_FEATURES">Advanced features</entry>
+ <entry lang="en" key="VERY_WEAK_PASSWORD">very weak</entry>
+ <entry lang="en" key="WEAK_PASSWORD">weak</entry>
+ <entry lang="en" key="MEDIUM_PASSWORD">medium</entry>
+ <entry lang="en" key="STRONG_PASSWORD">strong</entry>
+ <entry lang="en" key="VERY_STRONG_PASSWORD">very strong</entry>
+ <entry lang="en" key="IDT_PASSWORD_STRENGTH">Password strength:</entry>
+ <entry lang="en" key="PASSWORD_HELP_SYSENC">You might consider to write the password down somewhere safe. Please note, that the field to repeat your password is greyed out until your password has the minimum required strength.</entry>
+ <entry lang="en" key="AES_HELP_NEW">AES is secure accoring to the National Institute of Standards and Technology (NIST) and the privacy and security research community.</entry>
+ <entry lang="en" key="SHA512_HELP">SHA-512 is secure accoring to the National Institute of Standards and Technology (NIST) and the privacy and security research community.</entry>
+ <entry lang="en" key="CHOOSE_PASSWORD_TITLE">Choose Password</entry>
+ <entry lang="en" key="TRANSLATED_PWD_NOT_WRITTEN">Warning: Error occured while writing translated password! Please try again. If this error happens again, change keyboard layout to US keyboard layout manually.</entry>
+ <entry lang="en" key="ERROR_TRANSLATE_PWD">Warning: Error occured while translating password!\nPlease type password again and try. If this error happens again, switch keyboard layout to US keyboard layout manually.</entry>
+ <entry lang="en" key="ERROR_KEYB_LAYOUT_NOT_LOADED">Your system does not support the standard US-Keyboard layout. Please make sure the layout is available. For further help, please visit: https://support.microsoft.com/en-us/windows/manage-the-input-and-display-language-settings-in-windows-10-12a10cb4-8626-9b77-0ccb-5013e0c7c7a2 </entry>
+ <entry lang="en" key="ERROR_PASTE_ACTION">Pasting text is disabled. Please type your password.</entry>
+ <entry lang="en" key="WARNING_PASSWORD_NOT_IDENTICAL">Passwords are not identical! Please type identic passwords in both fields!</entry>
+ <entry lang="en" key="SYSENC_INFO">This assistant will help you encrypt your drive (%c:)</entry>
+ <entry lang="en" key="SYSENC_INFO_2">A windows password can easily be circumvented by bad actors with physical access to your device. Drive encryption helps to secure your data from beeing accessed by bad actors. VeraCrypt Drive Encryption will keep them out by protecting your data with an additional password. </entry>
+ <entry lang="en" key="ADV_FEATURES_INTRO_TOOLTIP">Activate hidden OS here.</entry>
+ <entry lang="en" key="ADV_FEATURES_NOTE">Most experts agree that the following preselected options are secure. Only change them if you know what you are doing. </entry>
+ <entry lang="en" key="PIM_INFO">A Personal Iterations Multiplier (PIM) allows you to set the number of password hash iterations. This provides more flexibility for adjusting the desired security level while also controling the performance of the mount/boot operation.</entry>
+ <entry lang="en" key="WIPE_INFO">Overrides your data before the encryption. This prevents possible data recovery. Wipe is not needed under normal circumstances.</entry>
+ <entry lang="en" key="PRETEST_INFO">Before encrypting VeraCrypt will verify that everything is working correctly.\n\nVeraCrypt will run some tests, restart your computer and you have to enter you password before windows starts.</entry>
+ <entry lang="en" key="PRETEST_CANCEL">If you click cancel now, no changes will be made your system.</entry>
+ <entry lang="en" key="ERROR_GETTING_PATH">Error occured while getting path to executable file.</entry>
+ <entry lang="en" key="ERROR_GETTING_PWD">Error occured while getting the password. Please try again.</entry>
+ <entry lang="en" key="ERROR_GETTING_KEYB_STATE">Error occured while getting the keyboard state.</entry>
+ <entry lang="en" key="ERR_NO_TRANSLATION">There is no translation for that key you just pressed!</entry>
+ <entry lang="en" key="DEAD_KEY_SUPPORT">Dead keys will not reproduce dead char in this case because your password need to be translated to US keyboard layout so you can type your password in pre-boot environment.</entry>
+ <entry lang="en" key="PRETEST_CHECKBOX"> I made sure that my device will not run out of power during the encryption process.</entry>
+ <entry lang="en" key="OPEN_PATH_CHECKLIST_PAGE">Open path</entry>
+ <entry lang="en" key="RESCUE_DISK_PATH">Rescue Disk Path</entry>
+ <entry lang="en" key="PRETEST_BACK_BUTTON">If you want to cancel the encryption wizard, please click on cancel. In this case no changes will be made to your computer.</entry>
+ <entry lang="en" key="WIPE_WARNING">Wiping can take a long time (Up to hours). Wiping is not recommended if you have an SSD Drive.</entry>
</localization>
diff --git a/src/Common/Password.c b/src/Common/Password.c
index 4caf3a21..3c9faa82 100644
--- a/src/Common/Password.c
+++ b/src/Common/Password.c
@@ -41,2 +41,3 @@ void VerifyPasswordAndUpdate (HWND hwndDlg, HWND hButton, HWND hPassword,
int k = GetWindowTextLength (hPassword);
+ int j = GetWindowTextLength (hVerify);
BOOL bEnable = FALSE;
@@ -53,3 +54,8 @@ void VerifyPasswordAndUpdate (HWND hwndDlg, HWND hButton, HWND hPassword,
if (wcscmp (szTmp1, szTmp2) != 0)
+ {
bEnable = FALSE;
+ if(k > 0 && j == k)
+ Warning ("WARNING_PASSWORD_NOT_IDENTICAL", hwndDlg);
+
+ }
else if (utf8Len1 <= 0)
@@ -147,7 +153,2 @@ BOOL CheckPasswordLength (HWND hwndDlg, unsigned __int32 passwordLength, int pim
}
-
-#ifndef _DEBUG
- if (!bSkipPasswordWarning && (MessageBoxW (hwndDlg, GetString ("PASSWORD_LENGTH_WARNING"), lpszTitle, MB_YESNO|MB_ICONWARNING|MB_DEFBUTTON2) != IDYES))
- return FALSE;
-#endif
}
@@ -565,2 +566 @@ error:
}
-
diff --git a/src/Format/Format.rc b/src/Format/Format.rc
index d4a9a5f5..8a14f413 100644
--- a/src/Format/Format.rc
+++ b/src/Format/Format.rc
@@ -87,9 +87,9 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
- PUSHBUTTON "&Help",IDHELP,166,234,60,14
- PUSHBUTTON "",IDC_PREV,238,234,60,14
- DEFPUSHBUTTON "",IDC_NEXT,310,234,60,14
+ PUSHBUTTON "&Documentation",IDHELP,166,234,60,14
+ PUSHBUTTON "",IDC_PREV,243,234,60,14
+ DEFPUSHBUTTON "",IDC_NEXT,305,234,60,14
PUSHBUTTON "Cancel",IDCANCEL,382,234,60,14
- LTEXT "",IDC_BOX_TITLE,160,8,283,17
- GROUPBOX "",IDC_STATIC,4,0,439,230
- CONTROL 116,IDC_BITMAP_WIZARD,"Static",SS_BITMAP | SS_SUNKEN,10,9,137,193
+ LTEXT "",IDC_BOX_TITLE,160,10,283,17
+ GROUPBOX "",IDC_STATIC,4,0,440,230
+ CONTROL 116,IDC_BITMAP_WIZARD,"Static",SS_BITMAP | SS_SUNKEN,10,18,137,200
LTEXT "",IDC_POS_BOX,160,24,281,193
@@ -116,11 +116,17 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
- EDITTEXT IDC_PASSWORD,71,3,202,14,ES_PASSWORD | ES_AUTOHSCROLL
- EDITTEXT IDC_VERIFY,71,19,202,14,ES_PASSWORD | ES_AUTOHSCROLL
- CONTROL "U&se keyfiles",IDC_KEYFILES_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,35,103,10
- PUSHBUTTON "&Keyfiles...",IDC_KEY_FILES,182,36,91,14,WS_DISABLED
- CONTROL "&Display password",IDC_SHOW_PASSWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,45,108,11,WS_EX_TRANSPARENT
- CONTROL "Use P&IM",IDC_PIM_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,56,114,10
- RTEXT "Password:",IDT_PASSWORD,1,6,68,8
- RTEXT "&Confirm:",IDT_CONFIRM,1,23,68,8
- LTEXT "",IDC_BOX_HELP,0,71,273,121
+ EDITTEXT IDC_PASSWORD,69,3,202,14,ES_PASSWORD | ES_AUTOHSCROLL
+ EDITTEXT IDC_VERIFY,69,20,202,14,ES_PASSWORD | ES_AUTOHSCROLL
+ LTEXT "Password strength: ", IDT_PASSWORD_STRENGTH, 71, 54, 70, 10
+ LTEXT "", PASSWORD_METER, 140, 55, 50, 20
+ CONTROL "&Display password",IDC_SHOW_PASSWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,41,108,11,WS_EX_TRANSPARENT
+ RTEXT "Password:", IDT_PASSWORD, 1, 6, 40, 8
+ RTEXT "&Confirm:", IDT_CONFIRM, 1, 23, 40, 8
+ LTEXT "", IDC_BOX_HELP, 1, 95, 270, 120
+ PUSHBUTTON "Advanced features", IDC_ADVANCE, 203, 156, 68, 14, NOT WS_VISIBLE
+ CONTROL "",IDC_SYS_POOL_CONTENTS,"Static",SS_LEFTNOWORDWRAP | WS_GROUP | NOT WS_VISIBLE,33,17,209,63,WS_EX_TRANSPARENT
+ CONTROL "", IDC_ENTROPY_BAR, "msctls_progress32", WS_BORDER | NOT WS_VISIBLE, 11, 140, 202, 6
+ CONTROL "U&se keyfiles",IDC_KEYFILES_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,64,103,10
+ PUSHBUTTON "&Keyfiles...",IDC_KEY_FILES,192,65,71,14,WS_DISABLED
+ CONTROL "Use P&IM",IDC_PIM_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,71,76,114,10
+
END
@@ -204,3 +210,4 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- LTEXT "",IDC_BOX_HELP,0,31,269,155
+ LTEXT "",IDC_BOX_HELP,0,15,267,155
+ CONTROL "", IDC_CHECKBOX_PRETEST, "Button", BS_AUTOCHECKBOX | BS_MULTILINE | NOT WS_VISIBLE, 0, 150, 267, 50
END
@@ -269,7 +276,8 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
- EDITTEXT IDC_RESCUE_DISK_ISO_PATH,0,180,201,13,ES_AUTOHSCROLL
- PUSHBUTTON "Bro&wse...",IDC_BROWSE,204,179,70,14
- LTEXT "",IDT_RESCUE_DISK_INFO,0,1,273,137
+ EDITTEXT IDC_RESCUE_DISK_ISO_PATH, 0, 159, 180, 13, ES_AUTOHSCROLL
+ PUSHBUTTON "Bro&wse...",IDC_BROWSE,185,159,70,14
+ LTEXT "",IDT_RESCUE_DISK_INFO,0,1,266,137
+ LTEXT "",IDT_RESCUE_DISK_INFO_2,0,135,266,20
CONTROL "Skip Rescue Disk verification",IDC_SKIP_RESCUE_VERIFICATION,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,0,166,273,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,0,178,273,10
END
@@ -302,4 +310,3 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
- LTEXT "Download CD/DVD recording software",IDC_DOWNLOAD_CD_BURN_SOFTWARE,0,159,273,10,SS_NOTIFY
- LTEXT "",IDT_RESCUE_DISK_BURN_INFO,0,4,273,148
+ LTEXT "",IDT_RESCUE_DISK_BURN_INFO,0,15,275,170
END
@@ -310,5 +317,15 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- COMBOBOX IDC_WIPE_MODE,88,0,138,90,CBS_DROPDOWNLIST | WS_TABSTOP
- RTEXT "Wipe mode:",IDT_WIPE_MODE,0,2,83,8,0,WS_EX_RIGHT
- LTEXT "",IDT_WIPE_MODE_INFO,0,19,269,167
+ CONTROL "A", IDC_CHECKLIST_A, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 0, 13, 10, 10
+ CONTROL "B", IDC_CHECKLIST_B, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 0, 60, 10, 10
+ CONTROL "C", IDC_CHECKLIST_C, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 0, 135, 10, 10
+ LTEXT " I remember my Password", IDC_REMEMBER_PASSWORD, 11, 13, 212, 10
+ LTEXT " I securely stored the Rescue Disk", IDC_STORE_RESCUE_DISK, 11, 60, 217, 10
+ LTEXT " I considered doing a backup of my personal Data", IDC_BACKUP_DATA, 11, 135, 226, 10
+ LTEXT "", IDT_REMEMBER_PASSWORD, 16, 26, 205, 32
+ LTEXT "", IDT_STORE_RESCUE_DISK, 16, 73, 205, 60
+ PUSHBUTTON "",IDC_BROWSE,16,109,60,14
+ LTEXT "", IDT_BACKUP_DATA, 16, 146, 205, 72
+ COMBOBOX IDC_WIPE_MODE,88,0,138,90,CBS_DROPDOWNLIST | WS_TABSTOP
+ RTEXT "Wipe mode:", IDT_WIPE_MODE,0,2,83,8,0,WS_EX_RIGHT
+ LTEXT "", IDT_WIPE_MODE_INFO,0,19,269,167
END
@@ -319,16 +336,16 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
- COMBOBOX IDC_WIPE_MODE,96,13,125,90,CBS_DROPDOWNLIST | WS_TABSTOP
- PUSHBUTTON "&Pause",IDC_PAUSE,204,40,63,14
- LTEXT "More information",IDC_MORE_INFO_SYS_ENCRYPTION,1,176,266,10,SS_NOTIFY
- LTEXT "",IDC_BYTESWRITTEN,29,58,39,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_RIGHT | WS_EX_STATICEDGE
- RTEXT "",IDC_WRITESPEED,110,58,56,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_RIGHT | WS_EX_STATICEDGE
- RTEXT "",IDC_TIMEREMAIN,212,58,54,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_RIGHT | WS_EX_STATICEDGE
- RTEXT "Wipe mode:",IDT_WIPE_MODE,6,15,85,8,0,WS_EX_RIGHT
- CONTROL "",IDC_PROGRESS_BAR,"msctls_progress32",PBS_SMOOTH | WS_BORDER,6,41,192,12
- RTEXT "Done",IDT_DONE,5,59,22,8
- RTEXT "Status",IDT_STATUS,73,59,33,8
- RTEXT "Left",IDT_LEFT,172,59,35,8
- LTEXT "",IDC_BOX_HELP,1,77,266,95
- GROUPBOX "Options",IDT_FORMAT_OPTIONS,0,3,267,29
- GROUPBOX "",IDC_STATIC,0,32,267,41
+ COMBOBOX IDC_WIPE_MODE,96,60,125,90,CBS_DROPDOWNLIST | WS_TABSTOP
+ PUSHBUTTON "&Pause",IDC_PAUSE,204,8,63,14
+ LTEXT "More information",IDC_MORE_INFO_SYS_ENCRYPTION,1,176,266,10,SS_NOTIFY | NOT WS_VISIBLE
+ LTEXT "",IDC_BYTESWRITTEN,29,26,39,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_RIGHT | WS_EX_STATICEDGE
+ RTEXT "",IDC_WRITESPEED,110,26,56,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_RIGHT | WS_EX_STATICEDGE
+ RTEXT "",IDC_TIMEREMAIN,212,26,54,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_RIGHT | WS_EX_STATICEDGE
+ RTEXT "Wipe mode:",IDT_WIPE_MODE,6,62,85,8,0,WS_EX_RIGHT
+ CONTROL "",IDC_PROGRESS_BAR,"msctls_progress32",PBS_SMOOTH | WS_BORDER,6,9,192,12
+ RTEXT "Done",IDT_DONE,5,27,22,8
+ RTEXT "Status",IDT_STATUS,73,27,33,8
+ RTEXT "Left",IDT_LEFT,172,27,35,8
+ LTEXT "",IDC_BOX_HELP,1,100,266,90
+ GROUPBOX "",IDC_STATIC,0,3,268,41
+ GROUPBOX "Options",IDT_FORMAT_OPTIONS,0,50,268,29
END
@@ -371,9 +388,25 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- CONTROL "Normal",IDC_SYSENC_NORMAL,"Button",BS_AUTORADIOBUTTON,0,7,269,10
- CONTROL "Hi&dden",IDC_SYSENC_HIDDEN,"Button",BS_AUTORADIOBUTTON,0,64,269,10
- LTEXT "More information",IDC_HIDDEN_SYSENC_INFO_LINK,16,173,253,10,SS_NOTIFY
- LTEXT "",IDC_BOX_HELP_SYSENC_NORMAL,16,20,253,41
- LTEXT "",IDC_BOX_HELP,16,78,253,90
+ LTEXT "", IDC_BOX_HELP, 5, 20, 250, 16
+ LTEXT "", IDT_SYSENC_INFO_2, 5, 50, 250, 60
+ PUSHBUTTON "Advanced features", IDC_ADVANCE_INTRO, 190, 160, 68, 14
+ CONTROL "", IDC_INFORMATION_TIP, "Static", SS_ICON | SS_NOTIFY, 262,163,10,5
+END
+
+IDD_ADVANCE_MBR DIALOGEX 102, -10, 245, 233
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Advanced Options"
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+ CONTROL " Normal",IDC_SYSENC_NORMAL,"Button", BS_AUTOCHECKBOX, 10,40,200,10
+ CONTROL " Hi&dden",IDC_SYSENC_HIDDEN,"Button", BS_AUTOCHECKBOX, 10,99,200,10
+ LTEXT "Select this option if you merely want to encrypt the system partition or the entire system drive.",-1,26,57,200,30
+ LTEXT "If you select this option, you will create a hidden operating system whose existence should be impossible to prove (provided that certain guidelines are followed). Thus, you will not have to decrypt or reveal the password to the hidden operating system.",-1,26,116,200,50
+ LTEXT "For a detailed explanation, please click the Help button. ",-1,26,180,200,10
+ LTEXT "IMPORTANT: Only advanced users should make modifications on this page.", -1, 10, 12, 217, 19,
+
+ GROUPBOX "", -1, 6, 30, 232, 178
+ DEFPUSHBUTTON "OK", IDOK, 129, 213, 50, 14
+ PUSHBUTTON "Cancel", IDCANCEL, 180, 213, 50, 14
+ PUSHBUTTON "&Help",IDHELP,15,213,50,14
END
-
IDD_SYSENC_HIDDEN_OS_REQ_CHECK_PAGE_DLG DIALOGEX 0, 0, 276, 193
@@ -455,2 +488,26 @@ END
+IDD_ADVANCE DIALOGEX 75, -62, 245, 362
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Advanced Algorithm Options"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ DEFPUSHBUTTON "OK", IDOK, 129, 345, 50, 14
+ PUSHBUTTON "Cancel", IDCANCEL, 180, 345, 50, 14
+ COMBOBOX IDC_COMBO_BOX_HASH_ALGO, 21, 47, 137, 130, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ LTEXT "", IDC_SHA512_HELP, 21, 65, 205, 40
+ COMBOBOX IDC_COMBO_BOX, 21, 113, 137, 126, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ LTEXT "", IDC_BOX_HELP, 21, 131, 205, 40
+ PUSHBUTTON "&Verify", IDC_CIPHER_TEST, 40, 181, 59, 14
+ PUSHBUTTON "&Benchmark", IDC_BENCHMARK, 140, 181, 59, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE
+ GROUPBOX "Encryption Algorithm", IDT_ENCRYPTION_ALGO, 14, 100, 217, 60
+ GROUPBOX "Hash Algorithm", IDT_HASH_ALGO, 14, 35, 217, 60
+ GROUPBOX "Test Algorithms", IDT_TEST_ALGO, 14, 168, 217, 35
+ GROUPBOX "PIM", -1, 14, 206, 217, 59
+ CONTROL "Modify P&IM", IDC_PIM_ENABLE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 19, 217, 97, 10
+ LTEXT "", IDT_PIM_INFO, 21, 231, 203, 25
+ GROUPBOX "Wipe Mode", IDT_WIPE_MODE, 14, 270, 217, 71
+ COMBOBOX IDC_WIPE_MODE, 21, 284, 127, 90, CBS_DROPDOWNLIST | WS_TABSTOP
+ LTEXT "", IDT_WIPE_INFO, 21, 303, 200, 32
+ LTEXT "", IDT_IMPORTANT_NOTE, 18, 10, 217, 19
+END
@@ -625,2 +682,18 @@ BEGIN
+ IDD_ADVANCE, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 238
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 242
+ END
+
+ IDD_ADVANCE_MBR, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 238
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 242
+ END
+
IDD_SYSENC_KEYS_GEN_PAGE_DLG, DIALOG
@@ -743,2 +816 @@ END
#endif // not APSTUDIO_INVOKED
-
diff --git a/src/Format/Resource.h b/src/Format/Resource.h
index c37a6f4a..d031a7dd 100644
--- a/src/Format/Resource.h
+++ b/src/Format/Resource.h
@@ -120,3 +120,2 @@
#define IDT_PARTIAL_POOL_CONTENTS 1081
-#define IDC_DOWNLOAD_CD_BURN_SOFTWARE 1082
#define IDT_RESCUE_DISK_BURN_INFO 1083
@@ -148,2 +147,26 @@
#define SPARSE_FILE 1109
+#define IDC_ADVANCE_INTRO 1110
+#define IDD_ADVANCE 1111
+#define IDC_ADVANCE 1112
+#define PASSWORD_METER 1113
+#define IDC_REMEMBER_PASSWORD 1114
+#define IDC_STORE_RESCUE_DISK 1115
+#define IDC_BACKUP_DATA 1116
+#define IDT_REMEMBER_PASSWORD 1117
+#define IDT_STORE_RESCUE_DISK 1118
+#define IDT_BACKUP_DATA 1119
+#define IDC_CHECKLIST_A 1120
+#define IDC_CHECKLIST_B 1121
+#define IDC_CHECKLIST_C 1122
+#define IDD_ADVANCE_MBR 1123
+#define IDC_INFORMATION_TIP 1124
+#define IDC_SHA512_HELP 1125
+#define IDT_PASSWORD_STRENGTH 1126
+#define IDT_RESCUE_DISK_INFO_2 1127
+#define IDT_SYSENC_INFO_2 1128
+#define IDT_IMPORTANT_NOTE 1129
+#define IDT_PIM_INFO 1130
+#define IDT_WIPE_INFO 1131
+#define IDT_TEST_ALGO 1132
+#define IDC_CHECKBOX_PRETEST 1133
diff --git a/src/Format/Tcformat.c b/src/Format/Tcformat.c
index efd95caf..db0a8209 100644
--- a/src/Format/Tcformat.c
+++ b/src/Format/Tcformat.c
@@ -15,2 +15,6 @@
+#include <iostream>
+#include <fstream>
+#include <set>
+#include <iterator>
#include <stdlib.h>
@@ -22,2 +26,3 @@
#include <shlobj.h>
+#include <commctrl.h>
@@ -130,2 +135,11 @@ enum sys_encryption_cmd_line_switches
+enum password_status
+{
+ very_weak = 0,
+ weak,
+ medium,
+ strong,
+ very_strong
+};
+
typedef struct
@@ -162,3 +176,10 @@ BOOL DirectCreationMode = FALSE;
-volatile BOOL bInPlaceEncNonSys = FALSE; /* If TRUE, existing data on a non-system partition/volume are to be encrypted (or decrypted if bInPlaceDecNonSys is TRUE) in place (for system encryption, this flag is ignored) */
+int iIconX=0;
+int iIconY=0;
+HWND hDlgItemTooltip = NULL;
+HANDLE hIconTooltip = NULL;
+char tempPassword[MAX_PASSWORD + 1];
+int iPasswordStrength;
+
+volatile BOOL bInPlaceEncNonSys = TRUE; /* If TRUE, existing data on a non-system partition/volume are to be encrypted (or decrypted if bInPlaceDecNonSys is TRUE) in place (for system encryption, this flag is ignored) */
volatile BOOL bInPlaceDecNonSys = FALSE; /* If TRUE, existing data on a non-system partition/volume are to be decrypted in place (for system encryption, this flag is ignored) */
@@ -238,2 +259,3 @@ char szVerify[MAX_PASSWORD + 1]; /* Tmp password buffer */
char szRawPassword[MAX_PASSWORD + 1]; /* Password before keyfile was applied to it */
+BOOL bNextButtonClicked = FALSE;
@@ -303,2 +325,7 @@ vector <HostDevice> DeferredNonSysInPlaceEncDevices;
+BOOL bChecklistA;
+BOOL bChecklistB;
+BOOL bChecklistC;
+BOOL bCheckboxPretest;
+
int iMaxPasswordLength = MAX_PASSWORD;
@@ -1421,6 +1448,2 @@ void ComboSelChangeEA (HWND hwndDlg)
wchar_t name[100];
- wchar_t auxLine[4096];
- wchar_t hyperLink[256] = { 0 };
- int cipherIDs[5];
- int i, cnt = 0;
@@ -1429,77 +1452,3 @@ void ComboSelChangeEA (HWND hwndDlg)
- if (wcscmp (name, L"AES") == 0)
- {
- StringCbPrintfW (hyperLink, sizeof(hyperLink) / 2, GetString ("MORE_INFO_ABOUT"), name);
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("AES_HELP"));
- }
- else if (wcscmp (name, L"Serpent") == 0)
- {
- StringCbPrintfW (hyperLink, sizeof(hyperLink) / 2, GetString ("MORE_INFO_ABOUT"), name);
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("SERPENT_HELP"));
- }
- else if (wcscmp (name, L"Twofish") == 0)
- {
- StringCbPrintfW (hyperLink, sizeof(hyperLink) / 2, GetString ("MORE_INFO_ABOUT"), name);
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("TWOFISH_HELP"));
- }
- else if (wcscmp (name, L"Kuznyechik") == 0)
- {
- StringCbPrintfW (hyperLink, sizeof(hyperLink) / 2, GetString ("MORE_INFO_ABOUT"), name);
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("KUZNYECHIK_HELP"));
- }
- else if (wcscmp (name, L"Camellia") == 0)
- {
- StringCbPrintfW (hyperLink, sizeof(hyperLink) / 2, GetString ("MORE_INFO_ABOUT"), name);
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("CAMELLIA_HELP"));
- }
- else if (EAGetCipherCount (nIndex) > 1)
- {
- // Cascade
- cipherIDs[cnt++] = i = EAGetLastCipher(nIndex);
- while (i = EAGetPreviousCipher(nIndex, i))
- {
- cipherIDs[cnt] = i;
- cnt++;
- }
-
- switch (cnt) // Number of ciphers in the cascade
- {
- case 2:
- StringCbPrintfW (auxLine, sizeof(auxLine), GetString ("TWO_LAYER_CASCADE_HELP"),
- CipherGetName (cipherIDs[1]),
- CipherGetKeySize (cipherIDs[1])*8,
- CipherGetName (cipherIDs[0]),
- CipherGetKeySize (cipherIDs[0])*8);
- break;
-
- case 3:
- StringCbPrintfW (auxLine, sizeof(auxLine), GetString ("THREE_LAYER_CASCADE_HELP"),
- CipherGetName (cipherIDs[2]),
- CipherGetKeySize (cipherIDs[2])*8,
- CipherGetName (cipherIDs[1]),
- CipherGetKeySize (cipherIDs[1])*8,
- CipherGetName (cipherIDs[0]),
- CipherGetKeySize (cipherIDs[0])*8);
- break;
- }
-
- StringCbCopyW (hyperLink, sizeof(hyperLink), GetString ("IDC_LINK_MORE_INFO_ABOUT_CIPHER"));
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), auxLine);
- }
- else
- {
- // No info available for this encryption algorithm
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), L"");
- }
-
-
- // Update hyperlink
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_LINK_MORE_INFO_ABOUT_CIPHER), hyperLink);
- AccommodateTextField (hwndDlg, IDC_LINK_MORE_INFO_ABOUT_CIPHER, FALSE, hUserUnderlineFont);
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("AES_HELP_NEW"));
}
@@ -3778,2 +3727,3 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
case SYSENC_TYPE_PAGE:
+ {
@@ -3781,16 +3731,61 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
- SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("SYSENC_TYPE_PAGE_TITLE"));
-
- SendMessage (GetDlgItem (hwndDlg, IDC_SYSENC_HIDDEN), WM_SETFONT, (WPARAM) hUserBoldFont, (LPARAM) TRUE);
- SendMessage (GetDlgItem (hwndDlg, IDC_SYSENC_NORMAL), WM_SETFONT, (WPARAM) hUserBoldFont, (LPARAM) TRUE);
+ wchar_t finalMsg[8024] = {0};
- DisableIfGpt(GetDlgItem(hwndDlg, IDC_SYSENC_HIDDEN));
+ try
+ {
+ StringCbPrintfW (finalMsg, sizeof(finalMsg),
+ GetString ("SYSENC_TYPE_PAGE_TITLE"),
+ GetSystemDriveLetter ());
+ }
+ catch (Exception &e)
+ {
+ e.Show (hwndDlg);
+ EndMainDlg (MainDlg);
+ return 0;
+ }
- CheckButton (GetDlgItem (hwndDlg, bHiddenOS ? IDC_SYSENC_HIDDEN : IDC_SYSENC_NORMAL));
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), finalMsg);
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("SYSENC_HIDDEN_TYPE_HELP"));
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP_SYSENC_NORMAL), GetString ("SYSENC_NORMAL_TYPE_HELP"));
+ memset (finalMsg, 0, sizeof (finalMsg));
+ try
+ {
+ StringCbPrintfW (finalMsg, sizeof(finalMsg),
+ GetString ("SYSENC_INFO"),
+ GetSystemDriveLetter ());
+ }
+ catch (Exception &e)
+ {
+ e.Show (hwndDlg);
+ EndMainDlg (MainDlg);
+ return 0;
+ }
- ToHyperlink (hwndDlg, IDC_HIDDEN_SYSENC_INFO_LINK);
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), finalMsg);
+ SetWindowTextW (GetDlgItem (hwndDlg, IDT_SYSENC_INFO_2), GetString ("SYSENC_INFO_2"));
+
+ if (bSystemIsGPT)
+ {
+ ShowWindow (GetDlgItem(hwndDlg, IDC_ADVANCE_INTRO), SW_HIDE);
+ ShowWindow (GetDlgItem(hwndDlg, IDC_INFORMATION_TIP), SW_HIDE);
+ }
+ else
+ {
+ EnableWindow (GetDlgItem(hwndDlg, IDC_ADVANCE_INTRO), TRUE);
+ iIconX = GetSystemMetrics (SM_CXSMICON);
+ iIconY = GetSystemMetrics (SM_CYSMICON);
+ hIconTooltip = LoadImage (NULL, MAKEINTRESOURCE (104), IMAGE_ICON, iIconX, iIconY, LR_DEFAULTCOLOR);
+ SendDlgItemMessage (hwndDlg, IDC_INFORMATION_TIP, STM_SETICON, (WPARAM) hIconTooltip, 0);
+
+ hDlgItemTooltip = GetDlgItem (hwndDlg, IDC_INFORMATION_TIP);
+ if (hDlgItemTooltip)
+ {
+ CreateToolTip (hwndDlg, hDlgItemTooltip, GetString ("ADV_FEATURES_INTRO_TOOLTIP"));
+ }
+ else
+ {
+ MessageBox (0, TEXT("Cannot find dialog item"), 0, 0);
+ }
+ }
+
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
@@ -3801,4 +3796,7 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
SetWindowTextW (GetDlgItem (MainDlg, IDCANCEL), GetString ("CANCEL"));
+
+ // Start loading the password dictonary into memory ("need" is just a random word for initializing the process)
+ CheckWord("need");
break;
-
+ }
case SYSENC_HIDDEN_OS_REQ_CHECK_PAGE:
@@ -3837,3 +3835,2 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
-
case SYSENC_PRE_DRIVE_ANALYSIS_PAGE:
@@ -4365,2 +4362,4 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
+ EnableWindow(GetDlgItem(hwndDlg, IDC_VERIFY), FALSE);
+
hPasswordInputField = GetDlgItem (hwndDlg, IDC_PASSWORD);
@@ -4376,7 +4375,7 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
- StringCbPrintfW (OrigKeyboardLayout, sizeof(OrigKeyboardLayout), L"%08X", (DWORD) GetKeyboardLayout (NULL) & 0xFFFF);
+ StringCbPrintfW(OrigKeyboardLayout, sizeof(OrigKeyboardLayout), L"%08X", (DWORD)GetKeyboardLayout(NULL) & 0xFFFF);
- if ((DWORD) GetKeyboardLayout (NULL) != 0x00000409 && (DWORD) GetKeyboardLayout (NULL) != 0x04090409)
+ if ((DWORD)GetKeyboardLayout(NULL) != 0x00000409 && (DWORD)GetKeyboardLayout(NULL) != 0x04090409)
{
- DWORD keybLayout = (DWORD) LoadKeyboardLayout (L"00000409", KLF_ACTIVATE);
+ DWORD keybLayout = (DWORD)LoadKeyboardLayout(L"00000409", KLF_ACTIVATE);
@@ -4384,4 +4383,4 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
{
- Error ("CANT_CHANGE_KEYB_LAYOUT_FOR_SYS_ENCRYPTION", MainDlg);
- EndMainDlg (MainDlg);
+ Error("CANT_CHANGE_KEYB_LAYOUT_FOR_SYS_ENCRYPTION", MainDlg);
+ EndMainDlg(MainDlg);
return 1;
@@ -4391,3 +4390,2 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
-
if (SetTimer (MainDlg, TIMER_ID_KEYB_LAYOUT_GUARD, TIMER_INTERVAL_KEYB_LAYOUT_GUARD, NULL) == 0)
@@ -4398,2 +4396,16 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
}
+
+ ShowWindow(GetDlgItem(hwndDlg, IDC_KEYFILES_ENABLE), SW_HIDE);
+ ShowWindow(GetDlgItem(hwndDlg, IDC_KEY_FILES), SW_HIDE);
+ ShowWindow(GetDlgItem(hwndDlg, IDC_PIM_ENABLE), SW_HIDE);
+
+ ShowWindow(GetDlgItem(hwndDlg, IDC_ADVANCE), SW_SHOW);
+ }
+ else
+ {
+ SetCheckBox (hwndDlg, IDC_PIM_ENABLE, PimEnable);
+
+ SetCheckBox (hwndDlg, IDC_KEYFILES_ENABLE, KeyFilesEnable && !SysEncInEffect());
+ EnableWindow (GetDlgItem (hwndDlg, IDC_KEY_FILES), KeyFilesEnable && !SysEncInEffect());
+ EnableWindow (GetDlgItem (hwndDlg, IDC_KEYFILES_ENABLE), !SysEncInEffect());
}
@@ -4412,7 +4424,7 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
{
- StringCbCopyW (str, sizeof(str), GetString ("PASSWORD_HELP"));
+ StringCbCopyW (str, sizeof(str), GetString ("PASSWORD_HELP_SYSENC"));
}
- SetPassword (hwndDlg, IDC_PASSWORD, szRawPassword);
- SetPassword (hwndDlg, IDC_VERIFY, szVerify);
+ SetPassword(hwndDlg, IDC_PASSWORD, szRawPassword);
+ SetPassword(hwndDlg, IDC_VERIFY, szVerify);
@@ -4420,8 +4432,2 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
- SetCheckBox (hwndDlg, IDC_PIM_ENABLE, PimEnable);
-
- SetCheckBox (hwndDlg, IDC_KEYFILES_ENABLE, KeyFilesEnable && !SysEncInEffect());
- EnableWindow (GetDlgItem (hwndDlg, IDC_KEY_FILES), KeyFilesEnable && !SysEncInEffect());
- EnableWindow (GetDlgItem (hwndDlg, IDC_KEYFILES_ENABLE), !SysEncInEffect());
-
SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), str);
@@ -4433,3 +4439,3 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
else if (WizardMode == WIZARD_MODE_SYS_DEVICE)
- SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("PASSWORD"));
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("CHOOSE_PASSWORD_TITLE"));
else
@@ -4449,3 +4455,36 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
volumePassword.Length = (unsigned __int32) strlen ((char *) volumePassword.Text);
+
+ if(SysEncInEffect ())
+ {
+ /* Random pool parameter is here because random page is removed */
+
+ mouseEntropyGathered = 0xFFFFFFFF;
+ mouseEventsInitialCount = 0;
+ bUseMask = FALSE;
+
+ {
+ HCRYPTPROV hRngProv;
+ if (CryptAcquireContext (&hRngProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
+ {
+ if (CryptGenRandom (hRngProv, sizeof (maskRandPool), maskRandPool))
+ bUseMask = TRUE;
+ CryptReleaseContext (hRngProv, 0);
+ }
+ }
+
+ SetTimer(GetParent(hwndDlg), TIMER_ID_RANDVIEW, TIMER_INTERVAL_RANDVIEW, NULL);
+ hRandPoolSys = GetDlgItem(hwndDlg, IDC_SYS_POOL_CONTENTS);
+ hEntropyBar = GetDlgItem(hwndDlg, IDC_ENTROPY_BAR);
+ SendMessage(hEntropyBar, PBM_SETRANGE32, 0, maxEntropyLevel);
+ SendMessage(hEntropyBar, PBM_SETSTEP, 1, 0);
+ SendMessage(GetDlgItem(hwndDlg, IDC_SYS_POOL_CONTENTS), WM_SETFONT, (WPARAM)hFixedDigitFont, (LPARAM)TRUE);
+
+ /* set default values */
+
+ hash_algo = bSystemIsGPT ? SHA512 : DEFAULT_HASH_ALGORITHM_BOOT;
+ RandSetHashFunction(hash_algo);
+
+ nWipeMode = TC_WIPE_NONE;
+ }
}
@@ -4579,2 +4618,4 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
SetWindowTextW (GetDlgItem (hwndDlg, IDT_RESCUE_DISK_INFO), bSystemIsGPT? GetString ("RESCUE_DISK_EFI_INFO"): GetString ("RESCUE_DISK_INFO"));
+ SetWindowTextW(GetDlgItem(hwndDlg, IDT_RESCUE_DISK_INFO_2), GetString("RESCUE_DISK_INFO_2"));
+
SetCheckBox (hwndDlg, IDC_SKIP_RESCUE_VERIFICATION, bDontVerifyRescueDisk);
@@ -4610,21 +4651,5 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
- /* The 'Back' button must be disabled now because the user could burn a Rescue Disk, then go back, and
- generate a different master key, which would cause the Rescue Disk verification to fail (the result
- would be confusion and bug reports). */
- EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), FALSE);
-
- if (bSystemIsGPT)
- {
- ShowWindow (GetDlgItem (hwndDlg, IDC_DOWNLOAD_CD_BURN_SOFTWARE), SW_HIDE);
- }
- else
- {
- if (IsWindowsIsoBurnerAvailable())
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_DOWNLOAD_CD_BURN_SOFTWARE), GetString ("LAUNCH_WIN_ISOBURN"));
-
- ToHyperlink (hwndDlg, IDC_DOWNLOAD_CD_BURN_SOFTWARE);
-
- if (IsWindowsIsoBurnerAvailable() && !bDontVerifyRescueDisk)
- LaunchWindowsIsoBurner (hwndDlg, szRescueDiskISO);
- }
+ /* The 'Back' button is enabled but user can't go back, instead warning is provided */
+ EnableWindow(GetDlgItem(GetParent(hwndDlg), IDC_PREV), TRUE);
+
}
@@ -4653,20 +4678,72 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
{
- if (nWipeMode == TC_WIPE_1_RAND)
- nWipeMode = TC_WIPE_NONE;
-
- SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("WIPE_MODE_TITLE"));
- SetWindowTextW (GetDlgItem (hwndDlg, IDT_WIPE_MODE_INFO), GetString ("INPLACE_ENC_WIPE_MODE_INFO"));
-
- PopulateWipeModeCombo (GetDlgItem (hwndDlg, IDC_WIPE_MODE),
- SystemEncryptionStatus == SYSENC_STATUS_DECRYPTING && !bInPlaceEncNonSys,
- TRUE,
- FALSE);
+ if (SysEncInEffect ())
+ {
+ /* Wipe mode page is now checklist page */
+ ShowWindow (GetDlgItem (hwndDlg, IDC_WIPE_MODE), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDT_WIPE_MODE), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDT_WIPE_MODE_INFO), SW_HIDE);
+
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_REMEMBER_PASSWORD), GetString ("REMEMBER_PASSWORD"));
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_STORE_RESCUE_DISK), GetString ("STORE_RESCUE_DISK"));
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_BACKUP_DATA), GetString ("BACKUP_DATA"));
+
+ SendMessage(GetDlgItem(hwndDlg, IDC_REMEMBER_PASSWORD), WM_SETFONT, (WPARAM)hUserBoldFont, (LPARAM)TRUE);
+ SendMessage(GetDlgItem(hwndDlg, IDC_STORE_RESCUE_DISK), WM_SETFONT, (WPARAM)hUserBoldFont, (LPARAM)TRUE);
+ SendMessage(GetDlgItem(hwndDlg, IDC_BACKUP_DATA), WM_SETFONT, (WPARAM)hUserBoldFont, (LPARAM)TRUE);
+
+ bChecklistA = FALSE;
+ bChecklistB = FALSE;
+ bChecklistC = FALSE;
+
+ SetWindowTextW(GetDlgItem(GetParent(hwndDlg), IDC_BOX_TITLE), GetString("CHECKLIST_TITLE"));
+
+ SetDlgItemText(hwndDlg, IDC_BROWSE, GetString ("OPEN_PATH_CHECKLIST_PAGE"));
+ SetWindowTextW (GetDlgItem (hwndDlg, IDT_STORE_RESCUE_DISK), GetString ("RESCUE_DISK_CHECKLIST_B"));
+ SetWindowTextW (GetDlgItem (hwndDlg, IDT_REMEMBER_PASSWORD), GetString ("RESCUE_DISK_CHECKLIST_A"));
+ SetWindowTextW (GetDlgItem (hwndDlg, IDT_BACKUP_DATA), GetString ("RESCUE_DISK_CHECKLIST_C"));
+
+ EnableWindow(GetDlgItem(hwndDlg, IDC_REMEMBER_PASSWORD), TRUE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_STORE_RESCUE_DISK), TRUE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BACKUP_DATA), TRUE);
+
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("NEXT"));
+
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), FALSE);
+ }
+ else
+ {
+ /* Hide elements from Checklist page and show Wipe mode page */
+ ShowWindow (GetDlgItem (hwndDlg, IDC_CHECKLIST_A), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_CHECKLIST_B), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_CHECKLIST_C), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_STORE_RESCUE_DISK), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_REMEMBER_PASSWORD), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_BACKUP_DATA), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDT_REMEMBER_PASSWORD), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDT_STORE_RESCUE_DISK), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDT_BACKUP_DATA), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_BROWSE), SW_HIDE);
+ ShowWindow (GetDlgItem (hwndDlg, IDC_RESCUE_DISK_ISO_PATH), SW_HIDE);
+
+ if (nWipeMode == TC_WIPE_1_RAND)
+ nWipeMode = TC_WIPE_NONE;
+
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), GetString ("WIPE_MODE_TITLE"));
+ SetWindowTextW (GetDlgItem (hwndDlg, IDT_WIPE_MODE_INFO), GetString ("INPLACE_ENC_WIPE_MODE_INFO"));
+
+ PopulateWipeModeCombo (GetDlgItem (hwndDlg, IDC_WIPE_MODE),
+ SystemEncryptionStatus == SYSENC_STATUS_DECRYPTING && !bInPlaceEncNonSys,
+ TRUE,
+ FALSE);
- SelectAlgo (GetDlgItem (hwndDlg, IDC_WIPE_MODE), (int *) &nWipeMode);
+ SelectAlgo (GetDlgItem (hwndDlg, IDC_WIPE_MODE), (int *) &nWipeMode);
- SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("NEXT"));
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("NEXT"));
- SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
- EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
- EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
+ SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_PREV), GetString ("PREV"));
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
+ }
}
@@ -4693,3 +4770,3 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
GetString ("SYS_ENCRYPTION_PRETEST_INFO"),
- BootEncObj->GetSystemDriveConfiguration().DriveNumber);
+ GetSystemDriveLetter ());
}
@@ -4717,2 +4794,7 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
+ ShowWindow (GetDlgItem (hwndDlg, IDC_CHECKBOX_PRETEST), SW_SHOW);
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_CHECKBOX_PRETEST), GetString ("PRETEST_CHECKBOX"));
+
+ bCheckboxPretest = FALSE;
+
SetWindowTextW (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), GetString ("ENCRYPT"));
@@ -4721,6 +4803,17 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
- EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
- EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), FALSE);
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), FALSE);
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
EnableWindow (GetDlgItem (GetParent (hwndDlg), IDCANCEL), TRUE);
+ HWND hTooltip;
+ hTooltip = GetDlgItem (GetParent (hwndDlg), IDC_PREV);
+ if (hTooltip)
+ {
+ CreateToolTip (hwndDlg, hTooltip, GetString ("PRETEST_BACK_BUTTON"));
+ }
+ else
+ {
+ MessageBox (0, TEXT ("Cannot find dialog item for tooltip!"), 0, 0);
+ }
+
break;
@@ -4746,4 +4839,5 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
GetString (SystemEncryptionStatus != SYSENC_STATUS_DECRYPTING ? "ENCRYPTION" : "DECRYPTION"));
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString ("SYSENC_ENCRYPTION_PAGE_INFO"));
+
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP),
+ GetString (SystemEncryptionStatus != SYSENC_STATUS_DECRYPTING ? "SYSENC_ENCRYPTION_PAGE_INFO" : "SYSENC_DECRYPTION_PAGE_INFO"));
@@ -4765,4 +4859,2 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
- ToHyperlink (hwndDlg, IDC_MORE_INFO_SYS_ENCRYPTION);
-
if (SystemEncryptionStatus == SYSENC_STATUS_DECRYPTING)
@@ -4782,2 +4874,9 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
+ if (nWipeMode == TC_WIPE_NONE)
+ {
+ ShowWindow (GetDlgItem(hwndDlg, IDC_WIPE_MODE), SW_HIDE);
+ ShowWindow (GetDlgItem(hwndDlg, IDT_FORMAT_OPTIONS), SW_HIDE);
+ ShowWindow (GetDlgItem(hwndDlg, IDT_WIPE_MODE), SW_HIDE);
+ }
+
PostMessage (hwndDlg, TC_APPMSG_PERFORM_POST_SYSENC_WMINIT_TASKS, 0, 0);
@@ -5271,2 +5370,34 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
{
+ if ((HWND)lParam == GetDlgItem (hwndDlg, PASSWORD_METER) && iPasswordStrength == 1)
+ {
+ // we're about to draw the static
+ // set the text colour in (HDC)lParam
+ SetBkMode ((HDC)wParam, TRANSPARENT);
+ SetTextColor ((HDC)wParam, RGB(255, 0, 0)); // password weak red
+ return (BOOL)GetSysColorBrush(COLOR_MENU);
+ }
+
+ if ((HWND)lParam == GetDlgItem (hwndDlg, PASSWORD_METER) && iPasswordStrength == 2)
+ {
+ // we're about to draw the static
+ // set the text colour in (HDC)lParam
+ SetBkMode ((HDC)wParam, TRANSPARENT);
+ SetTextColor ((HDC)wParam, RGB (255, 165, 0)); // password medium orange
+ return (BOOL) GetSysColorBrush (COLOR_MENU);
+ }
+
+ if ((HWND)lParam == GetDlgItem (hwndDlg, PASSWORD_METER) && iPasswordStrength == 3)
+ {
+ SetBkMode ((HDC)wParam, TRANSPARENT);
+ SetTextColor ((HDC)wParam, RGB (218, 218, 0)); // password strong yellow
+ return (BOOL) GetSysColorBrush (COLOR_MENU);
+ }
+
+ if ((HWND)lParam == GetDlgItem (hwndDlg, PASSWORD_METER) && iPasswordStrength == 4)
+ {
+ SetBkMode((HDC)wParam, TRANSPARENT);
+ SetTextColor((HDC)wParam, RGB(50, 205, 50)); // password very strong green
+ return (BOOL) GetSysColorBrush (COLOR_MENU);
+ }
+
if (PimValueChangedWarning && ((HWND)lParam == GetDlgItem(hwndDlg, IDC_PIM_HELP)) )
@@ -5333,2 +5464,18 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
+ if (lw == IDC_ADVANCE_INTRO && nCurPageNo == SYSENC_TYPE_PAGE)
+ {
+ DialogBoxParamW(hInst,
+ MAKEINTRESOURCEW(IDD_ADVANCE_MBR), hwndDlg,
+ (DLGPROC)AdvanceDlgProcIntro, NULL);
+ return 1;
+ }
+
+ if (lw == IDC_ADVANCE && nCurPageNo == PASSWORD_PAGE)
+ {
+ DialogBoxParamW(hInst,
+ MAKEINTRESOURCEW(IDD_ADVANCE), hwndDlg,
+ (DLGPROC)AdvanceDlgProc, NULL);
+ return 1;
+ }
+
if (nCurPageNo == SYSENC_HIDDEN_OS_REQ_CHECK_PAGE && lw == IDC_HIDDEN_SYSENC_INFO_LINK)
@@ -5681,10 +5828,52 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
{
- VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (GetParent (hwndDlg), IDC_NEXT),
- GetDlgItem (hwndDlg, IDC_PASSWORD),
- GetDlgItem (hwndDlg, IDC_VERIFY),
- NULL,
- NULL,
- KeyFilesEnable && FirstKeyFile!=NULL && !SysEncInEffect());
+ // If 'Next' button was clicked (and keyboard layout is not US), don't verify
+ if (!bNextButtonClicked)
+ {
+ VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (GetParent (hwndDlg), IDC_NEXT),
+ GetDlgItem(hCurPage, IDC_PASSWORD),
+ GetDlgItem(hCurPage, IDC_VERIFY),
+ NULL,
+ NULL,
+ KeyFilesEnable && FirstKeyFile != NULL && !SysEncInEffect());
+
+ bNextButtonClicked = FALSE;
+ }
+
volumePassword.Length = (unsigned __int32) strlen ((char *) volumePassword.Text);
+
+ SendMessage (GetDlgItem (hwndDlg, PASSWORD_METER), WM_SETFONT, (WPARAM)hUserBoldFont, (LPARAM)TRUE);
+
+ memset (&tempPassword[0], 0, sizeof (tempPassword));
+
+ if (GetPassword (hCurPage, IDC_PASSWORD, tempPassword, iMaxPasswordLength + 1, FALSE, TRUE))
+ iPasswordStrength = PrintStrongness (tempPassword, strlen (tempPassword));
+ else
+ Error ("ERROR_GETTING_PWD", hwndDlg);
+
+ burn (tempPassword, sizeof (tempPassword));
+ if (iPasswordStrength == very_strong)
+ {
+ SetWindowTextW (GetDlgItem (hwndDlg, PASSWORD_METER), GetString ("VERY_STRONG_PASSWORD"));
+ EnableWindow (GetDlgItem (hwndDlg, IDC_VERIFY), TRUE);
+ }
+ else if (iPasswordStrength == strong)
+ {
+ SetWindowTextW (GetDlgItem (hwndDlg, PASSWORD_METER), GetString ("STRONG_PASSWORD"));
+ EnableWindow (GetDlgItem (hwndDlg, IDC_VERIFY), TRUE);
+ }
+ else if (iPasswordStrength == medium)
+ {
+ EnableWindow (GetDlgItem (hwndDlg, IDC_VERIFY), TRUE);
+ SetWindowTextW (GetDlgItem (hwndDlg, PASSWORD_METER), GetString ("MEDIUM_PASSWORD"));
+ }
+ else if (iPasswordStrength == weak)
+ {
+ EnableWindow (GetDlgItem (hwndDlg, IDC_VERIFY), FALSE);
+ SetWindowTextW (GetDlgItem (hwndDlg, PASSWORD_METER), GetString ("WEAK_PASSWORD"));
+ }
+ else
+ {
+ SetWindowTextW (GetDlgItem (hwndDlg, PASSWORD_METER), GetString ("VERY_WEAK_PASSWORD"));
+ }
return 1;
@@ -5723,2 +5912,28 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
+ if (lw == IDC_CHECKLIST_A)
+ {
+ bChecklistA = GetCheckBox (hwndDlg, IDC_CHECKLIST_A);
+ bChecklistB = GetCheckBox (hwndDlg, IDC_CHECKLIST_B);
+ bChecklistC = GetCheckBox (hwndDlg, IDC_CHECKLIST_C);
+ }
+
+ if (lw == IDC_CHECKLIST_B)
+ {
+ bChecklistA = GetCheckBox (hwndDlg, IDC_CHECKLIST_A);
+ bChecklistB = GetCheckBox (hwndDlg, IDC_CHECKLIST_B);
+ bChecklistC = GetCheckBox (hwndDlg, IDC_CHECKLIST_C);
+ }
+
+ if (lw == IDC_CHECKLIST_C)
+ {
+ bChecklistA = GetCheckBox (hwndDlg, IDC_CHECKLIST_A);
+ bChecklistB = GetCheckBox (hwndDlg, IDC_CHECKLIST_B);
+ bChecklistC = GetCheckBox (hwndDlg, IDC_CHECKLIST_C);
+ }
+
+ if (lw == IDC_CHECKBOX_PRETEST)
+ {
+ bCheckboxPretest = GetCheckBox (hwndDlg, IDC_CHECKBOX_PRETEST);
+ }
+
if (lw == IDC_PIM_ENABLE)
@@ -6052,10 +6267,43 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
- if (nCurPageNo == SYSENC_RESCUE_DISK_BURN_PAGE && lw == IDC_DOWNLOAD_CD_BURN_SOFTWARE)
+ /* The password and rescue checkbox have to be clicked in order to enable the next button */
+ if ((nCurPageNo == SYSENC_WIPE_MODE_PAGE || nCurPageNo == NONSYS_INPLACE_ENC_WIPE_MODE_PAGE) &&
+ (lw == IDC_CHECKLIST_A || lw == IDC_CHECKLIST_B || lw == IDC_CHECKLIST_C))
{
- if (IsWindowsIsoBurnerAvailable())
- LaunchWindowsIsoBurner (hwndDlg, szRescueDiskISO);
- else
- Applink ("isoburning");
+ if (SysEncInEffect ())
+ {
+ if (bChecklistA && bChecklistB && bChecklistC)
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
+ else
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), FALSE);
+ }
+ }
- return 1;
+ if (lw == IDC_BROWSE && (nCurPageNo == SYSENC_WIPE_MODE_PAGE || nCurPageNo == NONSYS_INPLACE_ENC_WIPE_MODE_PAGE))
+ {
+ wchar_t tmpszRescueDiskISO [TC_MAX_PATH+1];
+
+ StringCbCopyW (tmpszRescueDiskISO, sizeof(tmpszRescueDiskISO), szRescueDiskISO);
+
+ //detects the last '\' in order to remove the name of the zip file and save file name
+ for (int i = wcslen(tmpszRescueDiskISO); i > 1; i--)
+ {
+ if (tmpszRescueDiskISO[i] == '\\')
+ {
+ for (int j = i + 1; i < wcslen(tmpszRescueDiskISO); i++)
+ tmpszRescueDiskISO[j] = '\0';
+ break;
+ }
+ }
+
+ if(!BrowseFile (hwndDlg, "RESCUE_DISK_PATH", tmpszRescueDiskISO))
+ return 1;
+
+ return 0;
+ }
+ if (nCurPageNo == SYSENC_PRETEST_RESULT_PAGE && lw == IDC_CHECKBOX_PRETEST)
+ {
+ if (bCheckboxPretest)
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
+ else
+ EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), FALSE);
}
@@ -6373,7 +6621,5 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
SHGetFolderPath (NULL, CSIDL_MYDOCUMENTS, NULL, 0, szRescueDiskISO);
- if (bSystemIsGPT)
- StringCbCatW (szRescueDiskISO, sizeof(szRescueDiskISO), L"\\VeraCrypt Rescue Disk.zip");
- else
- StringCbCatW (szRescueDiskISO, sizeof(szRescueDiskISO), L"\\VeraCrypt Rescue Disk.iso");
+ StringCbCatW (szRescueDiskISO, sizeof(szRescueDiskISO), L"\\VeraCrypt Rescue Disk.zip");
+
if (IsOSAtLeast (WIN_VISTA))
@@ -6661,2 +6907,3 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
+ // East Asian languages are not translated to US keyboard layout so we need to change keyboard layout
if (keybLayout != 0x00000409 && keybLayout != 0x04090409)
@@ -6668,5 +6915,4 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
}
-
+
bKeyboardLayoutChanged = TRUE;
-
wchar_t szTmp [4096];
@@ -6676,17 +6922,16 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
MessageBoxW (MainDlg, szTmp, lpszTitle, MB_ICONWARNING | MB_SETFOREGROUND | MB_TOPMOST);
- }
-
- /* Watch the right Alt key (which is used to enter various characters on non-US keyboards) */
- if (bKeyboardLayoutChanged && !bKeybLayoutAltKeyWarningShown)
- {
- if (GetAsyncKeyState (VK_RMENU) < 0)
+ if (bKeyboardLayoutChanged && !bKeybLayoutAltKeyWarningShown)
{
- bKeybLayoutAltKeyWarningShown = TRUE;
+ if (GetAsyncKeyState (VK_RMENU) < 0)
+ {
+ bKeybLayoutAltKeyWarningShown = TRUE;
- wchar_t szTmp [4096];
- StringCbCopyW (szTmp, sizeof(szTmp), GetString ("ALT_KEY_CHARS_NOT_FOR_SYS_ENCRYPTION"));
- StringCbCatW (szTmp, sizeof(szTmp), L"\n\n");
- StringCbCatW (szTmp, sizeof(szTmp), GetString ("KEYB_LAYOUT_SYS_ENC_EXPLANATION"));
- MessageBoxW (MainDlg, szTmp, lpszTitle, MB_ICONINFORMATION | MB_SETFOREGROUND | MB_TOPMOST);
+
+ wchar_t szTmp [4096];
+ StringCbCopyW (szTmp, sizeof(szTmp), GetString ("ALT_KEY_CHARS_NOT_FOR_SYS_ENCRYPTION"));
+ StringCbCatW (szTmp, sizeof(szTmp), L"\n\n");
+ StringCbCatW (szTmp, sizeof(szTmp), GetString ("KEYB_LAYOUT_SYS_ENC_EXPLANATION"));
+ MessageBoxW (MainDlg, szTmp, lpszTitle, MB_ICONINFORMATION | MB_SETFOREGROUND | MB_TOPMOST);
+ }
}
@@ -6695,3 +6940,2 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
return 1;
-
case TIMER_ID_SYSENC_DRIVE_ANALYSIS_PROGRESS:
@@ -7016,3 +7260,16 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
{
- OpenPageHelp (hwndDlg, nCurPageNo);
+ if (nCurPageNo == SYSENC_RESCUE_DISK_CREATION_PAGE ||
+ nCurPageNo == SYSENC_RESCUE_DISK_BURN_PAGE ||
+ nCurPageNo == SYSENC_RESCUE_DISK_VERIFIED_PAGE)
+ {
+ Applink("rescue");
+ }
+ else if (nCurPageNo == PASSWORD_PAGE)
+ {
+ Applink("passwords");
+ }
+ else
+ {
+ OpenPageHelp(hwndDlg, nCurPageNo);
+ }
return 1;
@@ -7085,3 +7342,3 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
if (!bHiddenOS)
- nNewPageNo = SYSENC_SPAN_PAGE - 1; // Skip irrelevant pages
+ nNewPageNo = PASSWORD_PAGE - 1; // Skip irrelevant pages
}
@@ -7629,2 +7886,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
{
+ if (SysEncInEffect ())
+ {
+ wchar_t tmpPwd[MAX_PASSWORD + 1];
+ GetWindowText (GetDlgItem (hCurPage, IDC_PASSWORD), tmpPwd, iMaxPasswordLength + 1);
+ }
VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (MainDlg, IDC_NEXT),
@@ -7646,3 +7908,3 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
}
- // Check password length (check also done for outer volume which is not the case in TrueCrypt).
+ // Check password length (check also done for outer volume which is not the case in TrueCrypt).
else if (!CheckPasswordLength (hwndDlg, volumePassword.Length, 0, SysEncInEffect(), SysEncInEffect()? hash_algo : 0, FALSE, FALSE))
@@ -7685,3 +7947,2 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
}
-
}
@@ -7706,7 +7967,2 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
- if (SysEncInEffect ())
- {
- nNewPageNo = SYSENC_COLLECTING_RANDOM_DATA_PAGE - 1; // Skip irrelevant pages
- }
-
if (bInPlaceEncNonSys)
@@ -7723,2 +7979,37 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
}
+
+
+ if (SysEncInEffect ())
+ {
+ if (PimEnable)
+ nNewPageNo = PIM_PAGE - 1;
+ else
+ {
+ nNewPageNo = SYSENC_RESCUE_DISK_CREATION_PAGE - 1; // Skip irrelevant pages
+
+ wchar_t tmp[RANDPOOL_DISPLAY_SIZE + 1];
+ if (!bInPlaceEncNonSys)
+ {
+ /* Generate master key and other related data (except the rescue disk) for system encryption. */
+ try
+ {
+ WaitCursor();
+ BootEncObj->PrepareInstallation(!bWholeSysDrive, volumePassword, nVolumeEA, FIRST_MODE_OF_OPERATION_ID, hash_algo, volumePim, L"");
+ }
+ catch (Exception &e)
+ {
+ e.Show(hwndDlg);
+ NormalCursor();
+ return 1;
+ }
+ }
+ KillTimer(hwndDlg, TIMER_ID_RANDVIEW);
+ // Attempt to wipe the GUI field showing portions of randpool
+ wmemset(tmp, L'X', ARRAYSIZE(tmp));
+ tmp[ARRAYSIZE(tmp) - 1] = 0;
+ SetWindowText(hRandPoolSys, tmp);
+ NormalCursor();
+ }
+
+ }
}
@@ -7758,3 +8049,3 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
// Check password length (check also done for outer volume which is not the case in TrueCrypt).
- else if (!CheckPasswordLength (hwndDlg, volumePassword.Length, volumePim, SysEncInEffect(), SysEncInEffect()? hash_algo : 0, TRUE, FALSE))
+ else if (!CheckPasswordLength (hwndDlg, volumePassword.Length, volumePim, SysEncInEffect(), SysEncInEffect()? hash_algo : 0, FALSE, FALSE))
{
@@ -7764,8 +8055,2 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
- if (SysEncInEffect ())
- {
-
- nNewPageNo = SYSENC_COLLECTING_RANDOM_DATA_PAGE - 1; // Skip irrelevant pages
- }
-
if (bInPlaceEncNonSys)
@@ -7780,2 +8065,30 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
}
+
+ if (SysEncInEffect ())
+ {
+ nNewPageNo = SYSENC_RESCUE_DISK_CREATION_PAGE - 1; // Skip irrelevant pages
+
+ wchar_t tmp[RANDPOOL_DISPLAY_SIZE + 1];
+ if (!bInPlaceEncNonSys)
+ {
+ /* Generate master key and other related data (except the rescue disk) for system encryption. */
+ try
+ {
+ WaitCursor();
+ BootEncObj->PrepareInstallation(!bWholeSysDrive, volumePassword, nVolumeEA, FIRST_MODE_OF_OPERATION_ID, hash_algo, volumePim, L"");
+ }
+ catch (Exception &e)
+ {
+ e.Show(hwndDlg);
+ NormalCursor();
+ return 1;
+ }
+ }
+ KillTimer(hwndDlg, TIMER_ID_RANDVIEW);
+ // Attempt to wipe the GUI field showing portions of randpool
+ wmemset(tmp, L'X', ARRAYSIZE(tmp));
+ tmp[ARRAYSIZE(tmp) - 1] = 0;
+ SetWindowText(hRandPoolSys, tmp);
+ NormalCursor();
+ }
}
@@ -8805,2 +9118,22 @@ ovf_end:
}
+
+ if (nCurPageNo == SYSENC_RESCUE_DISK_CREATION_PAGE)
+ {
+ if (SysEncInEffect ())
+ {
+ nNewPageNo = (PimEnable? PIM_PAGE : PASSWORD_PAGE) + 1;
+ }
+ }
+
+ if (nCurPageNo == SYSENC_RESCUE_DISK_BURN_PAGE)
+ {
+ nNewPageNo = SYSENC_RESCUE_DISK_BURN_PAGE + 1; // Stay on the same page
+ Warning("RESCUE_DISK_BACK_BUTTON", hwndDlg);
+ }
+
+ if (nCurPageNo == SYSENC_PRETEST_RESULT_PAGE)
+ {
+ nNewPageNo = SYSENC_PRETEST_RESULT_PAGE + 1; // Stay on the same page
+ }
+
if (nCurPageNo == SYSENC_MULTI_BOOT_MODE_PAGE)
@@ -8930,3 +9263,6 @@ ovf_end:
{
- nNewPageNo = CIPHER_PAGE + 1; // Skip irrelevant pages
+ if (!bHiddenOS)
+ nNewPageNo = SYSENC_TYPE_PAGE + 1; // Skip irrelevant pages
+ else
+ nNewPageNo = CIPHER_PAGE + 1; // Skip irrelevant pages
@@ -10633 +10969,510 @@ static DWORD GetFormatSectorSize ()
}
+
+/* This function is called when advanced dialog in intro page is open */
+BOOL CALLBACK AdvanceDlgProcIntro (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ WORD lw = LOWORD(wParam);
+
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+
+ bHiddenVolHost = bHiddenVol = bHiddenOS;
+
+ SendMessage (GetDlgItem (hwndDlg, IDC_SYSENC_HIDDEN), WM_SETFONT, (WPARAM) hUserBoldFont, (LPARAM) TRUE);
+ SendMessage (GetDlgItem (hwndDlg, IDC_SYSENC_NORMAL), WM_SETFONT, (WPARAM) hUserBoldFont, (LPARAM) TRUE);
+
+ CheckButton (GetDlgItem (hwndDlg, bHiddenOS ? IDC_SYSENC_HIDDEN : IDC_SYSENC_NORMAL));
+
+ return 1;
+ case WM_COMMAND:
+ {
+ if (lw == IDCANCEL)
+ {
+ EndDialog(hwndDlg, lw);
+ return 1;
+ }
+
+ if(lw == IDOK)
+ {
+ if (bHiddenOS)
+ {
+ bWholeSysDrive = FALSE;
+ bHiddenVolDirect = FALSE;
+ }
+ EndDialog(hwndDlg, lw);
+ return 1;
+ }
+
+ if (lw == IDC_SYSENC_HIDDEN)
+ {
+ SendMessage (GetDlgItem (hwndDlg, IDC_SYSENC_NORMAL), BM_SETCHECK, BST_UNCHECKED, 0);
+
+ bHiddenOS = TRUE;
+ bHiddenVol = TRUE;
+ bHiddenVolHost = TRUE;
+ return 1;
+ }
+
+ if (lw == IDC_SYSENC_NORMAL)
+ {
+ SendMessage (GetDlgItem (hwndDlg, IDC_SYSENC_HIDDEN), BM_SETCHECK, BST_UNCHECKED, 0);
+
+ bHiddenOS = FALSE;
+ bHiddenVol = FALSE;
+ bHiddenVolHost = FALSE;
+ return 1;
+ }
+
+ if(lw == IDHELP)
+ {
+ Applink ("hiddensysenc");
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+/* AES, HASH, Pim and Wipe mode can be selected here */
+BOOL CALLBACK AdvanceDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ WORD lw = LOWORD(wParam);
+ WORD hw = HIWORD(wParam);
+ int ea, hid;
+ wchar_t buf[100];
+ BOOL bNTFSallowed = FALSE;
+ BOOL bFATallowed = FALSE;
+ BOOL bEXFATallowed = FALSE;
+ BOOL bReFSallowed = FALSE;
+ BOOL bNoFSallowed = FALSE;
+ hCurPage = hwndDlg;
+
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+ {
+ SetWindowTextW ( GetDlgItem (hwndDlg, IDT_IMPORTANT_NOTE), GetString ("ADV_FEATURES_NOTE"));
+ SetWindowTextW ( GetDlgItem (hwndDlg, IDT_PIM_INFO), GetString ("PIM_INFO"));
+ SetWindowTextW ( GetDlgItem (hwndDlg, IDT_WIPE_INFO), GetString ("WIPE_INFO"));
+
+ /* Encryption algorithms */
+
+ SendMessage(GetDlgItem(hwndDlg, IDC_COMBO_BOX), CB_RESETCONTENT, 0, 0);
+
+ for (ea = EAGetFirst (); ea != 0; ea = EAGetNext (ea))
+ {
+ if (EAIsFormatEnabled (ea) && (!SysEncInEffect () || bSystemIsGPT || EAIsMbrSysEncEnabled (ea)))
+ AddComboPair (GetDlgItem (hwndDlg, IDC_COMBO_BOX), EAGetName (buf, ARRAYSIZE(buf), ea, 1), ea);
+ }
+
+ SelectAlgo (GetDlgItem (hwndDlg, IDC_COMBO_BOX), &nVolumeEA);
+ ComboSelChangeEA (hwndDlg);
+ SetFocus (GetDlgItem (hwndDlg, IDC_COMBO_BOX));
+
+ /* Hash algorithms */
+ if (SysEncInEffect())
+ {
+ RandSetHashFunction(hash_algo);
+ for (hid = FIRST_PRF_ID; hid <= LAST_PRF_ID; hid++)
+ {
+ // Use blake2s for hashing
+ if (((hid == BLAKE2S) || !HashIsDeprecated(hid)) && (bSystemIsGPT || HashForSystemEncryption(hid)))
+ AddComboPair(GetDlgItem(hwndDlg, IDC_COMBO_BOX_HASH_ALGO), HashGetName(hid), hid);
+ }
+ }
+ else
+ {
+ hash_algo = RandGetHashFunction();
+ for (hid = FIRST_PRF_ID; hid <= LAST_PRF_ID; hid++)
+ {
+ if (!HashIsDeprecated(hid))
+ AddComboPair(GetDlgItem(hwndDlg, IDC_COMBO_BOX_HASH_ALGO), HashGetName(hid), hid);
+ }
+ }
+
+ if (CreatingHiddenSysVol())
+ Warning ("HIDDEN_OS_PRE_CIPHER_WARNING", MainDlg);
+
+ SetWindowText(GetDlgItem(hwndDlg, IDC_SHA512_HELP), GetString("SHA512_HELP"));
+ SelectAlgo(GetDlgItem(hwndDlg, IDC_COMBO_BOX_HASH_ALGO), &hash_algo);
+
+ /* file system options */
+ SetTimer(GetParent(hwndDlg), TIMER_ID_RANDVIEW, TIMER_INTERVAL_RANDVIEW, NULL);
+
+ hMasterKey = GetDlgItem(hwndDlg, IDC_DISK_KEY);
+ hHeaderKey = GetDlgItem(hwndDlg, IDC_HEADER_KEY);
+ hRandPool = GetDlgItem(hwndDlg, IDC_RANDOM_BYTES);
+
+ SendMessage(GetDlgItem(hwndDlg, IDC_RANDOM_BYTES), WM_SETFONT, (WPARAM)hFixedDigitFont, (LPARAM)TRUE);
+ SendMessage(GetDlgItem(hwndDlg, IDC_DISK_KEY), WM_SETFONT, (WPARAM)hFixedDigitFont, (LPARAM)TRUE);
+ SendMessage(GetDlgItem(hwndDlg, IDC_HEADER_KEY), WM_SETFONT, (WPARAM)hFixedDigitFont, (LPARAM)TRUE);
+
+ /* Quick/Dynamic */
+
+ if (bHiddenVol)
+ {
+ quickFormat = !bHiddenVolHost;
+ dynamicFormat = FALSE;
+ bSparseFileSwitch = FALSE;
+ }
+ else
+ {
+ if (bDevice)
+ {
+ dynamicFormat = FALSE;
+ bSparseFileSwitch = FALSE;
+ }
+ else
+ {
+ wchar_t root[TC_MAX_PATH];
+ DWORD fileSystemFlags = 0;
+
+ /* Check if the host file system supports sparse files */
+
+ if (GetVolumePathName (szFileName, root, array_capacity (root)))
+ {
+ GetVolumeInformation (root, NULL, 0, NULL, NULL, &fileSystemFlags, NULL, 0);
+ bSparseFileSwitch = fileSystemFlags & FILE_SUPPORTS_SPARSE_FILES;
+ }
+ else
+ bSparseFileSwitch = FALSE;
+ if (!bSparseFileSwitch)
+ {
+ dynamicFormat = FALSE;
+ }
+ }
+ }
+ SendMessage (GetDlgItem (hwndDlg, IDC_SHOW_KEYS), BM_SETCHECK, showKeys ? BST_CHECKED : BST_UNCHECKED, 0);
+ SetWindowText (GetDlgItem (hwndDlg, IDC_RANDOM_BYTES), showKeys ? L"" : L"******************************** ");
+ SetWindowText (GetDlgItem (hwndDlg, IDC_HEADER_KEY), showKeys ? L"" : L"******************************** ");
+ SetWindowText (GetDlgItem (hwndDlg, IDC_DISK_KEY), showKeys ? L"" : L"******************************** ");
+
+ SendMessage(GetDlgItem(hwndDlg, IDC_CLUSTERSIZE), CB_RESETCONTENT, 0, 0);
+ AddComboPairW(GetDlgItem(hwndDlg, IDC_CLUSTERSIZE), GetString("DEFAULT"), 0);
+ SendMessage(GetDlgItem(hwndDlg, IDC_CLUSTERSIZE), CB_SETCURSEL, 0, 0);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_CLUSTERSIZE), TRUE);
+
+ /* Filesystems */
+ bNTFSallowed = FALSE;
+ bFATallowed = FALSE;
+ bEXFATallowed = FALSE;
+ bReFSallowed = FALSE;
+ bNoFSallowed = FALSE;
+
+ SendMessage(GetDlgItem(hwndDlg, IDC_FILESYS), CB_RESETCONTENT, 0, 0);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_FILESYS), TRUE);
+
+ uint64 dataAreaSize = GetVolumeDataAreaSize (bHiddenVol && !bHiddenVolHost, nVolumeSize);
+
+ if (!CreatingHiddenSysVol())
+ {
+ if (dataAreaSize >= TC_MIN_NTFS_FS_SIZE && dataAreaSize <= TC_MAX_NTFS_FS_SIZE)
+ {
+ AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), L"NTFS", FILESYS_NTFS);
+ bNTFSallowed = TRUE;
+ }
+
+ if (dataAreaSize >= TC_MIN_FAT_FS_SIZE && dataAreaSize <= TC_MAX_FAT_SECTOR_COUNT * GetFormatSectorSize())
+ {
+ AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), L"FAT", FILESYS_FAT);
+ bFATallowed = TRUE;
+ }
+
+ //exFAT support added starting from Vista SP1
+ if (IsOSVersionAtLeast (WIN_VISTA, 1) && dataAreaSize >= TC_MIN_EXFAT_FS_SIZE && dataAreaSize <= TC_MAX_EXFAT_FS_SIZE)
+ {
+ AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), L"exFAT", FILESYS_EXFAT);
+ bEXFATallowed = TRUE;
+ }
+
+ //ReFS write support activated by default starting from Windows 10
+ //We don't support it yet for the creation of hidden volumes
+ if ((!bHiddenVolHost) && IsOSVersionAtLeast (WIN_10, 0) && dataAreaSize >= TC_MIN_REFS_FS_SIZE && dataAreaSize <= TC_MAX_REFS_FS_SIZE)
+ {
+ AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), L"ReFS", FILESYS_REFS);
+ bReFSallowed = TRUE;
+ }
+ }
+ else
+ {
+ // We're creating a hidden volume for a hidden OS, so we don't need to format it with
+ // any filesystem (the entire OS will be copied to the hidden volume sector by sector).
+ EnableWindow (GetDlgItem (hwndDlg, IDC_FILESYS), FALSE);
+ EnableWindow (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), FALSE);
+ }
+ if (!bHiddenVolHost)
+ {
+ AddComboPairW(GetDlgItem(hwndDlg, IDC_FILESYS), GetString("NONE"), FILESYS_NONE);
+ bNoFSallowed = TRUE;
+ }
+ if (fileSystem == FILESYS_NONE) // If no file system has been previously selected
+ {
+ // Set default file system
+
+ if (bFATallowed && !(nNeedToStoreFilesOver4GB == 1 && (bNTFSallowed || bEXFATallowed || bReFSallowed)))
+ fileSystem = FILESYS_FAT;
+ else if (bEXFATallowed)
+ fileSystem = FILESYS_EXFAT;
+ else if (bNTFSallowed)
+ fileSystem = FILESYS_NTFS;
+ else if (bReFSallowed)
+ fileSystem = FILESYS_REFS;
+ else if (bNoFSallowed)
+ fileSystem = FILESYS_NONE;
+ else
+ {
+ AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), L"---", 0);
+ }
+ }
+
+ SendMessage(GetDlgItem(hwndDlg, IDC_FILESYS), CB_SETCURSEL, 0, 0);
+ SelectAlgo(GetDlgItem(hwndDlg, IDC_FILESYS), (int *)&fileSystem);
+
+ /* PIM and Wipe mode */
+ SetCheckBox(hwndDlg, IDC_PIM_ENABLE, PimEnable);
+
+ PopulateWipeModeCombo(GetDlgItem(hwndDlg, IDC_WIPE_MODE),
+ SystemEncryptionStatus == SYSENC_STATUS_DECRYPTING && !bInPlaceEncNonSys,
+ TRUE,
+ FALSE);
+ SelectAlgo(GetDlgItem(hwndDlg, IDC_WIPE_MODE), (int *)&nWipeMode);
+ SetFocus(GetDlgItem(GetParent(hwndDlg), IDOK));
+ }
+ return 1;
+ case WM_COMMAND:
+ if (lw == IDCANCEL)
+ {
+ EndDialog(hwndDlg, lw);
+ return 1;
+ }
+ if (lw == IDOK)
+ {
+ /* Save hash and encryption algo */
+ LPARAM nIndex;
+ nIndex = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETCURSEL, 0, 0);
+ nVolumeEA = (int) SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETITEMDATA, nIndex, 0);
+
+ if (!bSystemIsGPT && SysEncInEffect ()
+ && EAGetCipherCount (nVolumeEA) > 1) // Cascade?
+ {
+ if (AskWarnNoYes ("CONFIRM_CASCADE_FOR_SYS_ENCRYPTION", hwndDlg) == IDNO)
+ return 1;
+
+ if (!bHiddenOS)
+ Info ("NOTE_CASCADE_FOR_SYS_ENCRYPTION", hwndDlg);
+ }
+
+ nIndex = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX_HASH_ALGO), CB_GETCURSEL, 0, 0);
+ hash_algo = (int) SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX_HASH_ALGO), CB_GETITEMDATA, nIndex, 0);
+
+ RandSetHashFunction (hash_algo);
+
+ /* Save PIM and Wipe mode */
+ nWipeMode = (WipeAlgorithmId)SendMessage(GetDlgItem(hwndDlg, IDC_WIPE_MODE),
+ CB_GETITEMDATA,
+ SendMessage(GetDlgItem(hwndDlg, IDC_WIPE_MODE), CB_GETCURSEL, 0, 0),
+ 0);
+
+ PimEnable = GetCheckBox(hwndDlg, IDC_PIM_ENABLE);
+ SetCheckBox(hwndDlg, IDC_PIM_ENABLE, PimEnable);
+
+ EndDialog(hwndDlg, lw);
+ return 1;
+ }
+ if (lw == IDC_CIPHER_TEST)
+ {
+ LPARAM nIndex;
+ int c;
+
+ nIndex = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETCURSEL, 0, 0);
+ nVolumeEA = (int) SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETITEMDATA, nIndex, 0);
+
+ for (c = EAGetLastCipher (nVolumeEA); c != 0; c = EAGetPreviousCipher (nVolumeEA, c))
+ {
+ DialogBoxParamW (hInst, MAKEINTRESOURCEW (IDD_CIPHER_TEST_DLG),
+ GetParent (hwndDlg), (DLGPROC) CipherTestDialogProc, (LPARAM) c);
+ }
+
+ return 1;
+ }
+
+ if (lw == IDC_BENCHMARK)
+ {
+ // Reduce CPU load
+ bFastPollEnabled = FALSE;
+ bRandmixEnabled = FALSE;
+
+ DialogBoxParamW (hInst,
+ MAKEINTRESOURCEW (IDD_BENCHMARK_DLG), hwndDlg,
+ (DLGPROC) BenchmarkDlgProc, (LPARAM) bSystemIsGPT);
+
+ bFastPollEnabled = TRUE;
+ bRandmixEnabled = TRUE;
+ return 1;
+ }
+
+ if (lw == IDC_WIPE_MODE && hw == CBN_SELCHANGE)
+ {
+ Warning ("WIPE_WARNING", hwndDlg);
+ return 1;
+ }
+
+ if (hw == CBN_SELCHANGE && lw == IDC_COMBO_BOX)
+ {
+ ComboSelChangeEA (hwndDlg);
+ SetWindowTextW (GetDlgItem (hCurPage, IDC_BENCHMARK), GetString ("IDC_BENCHMARK"));
+ return 1;
+ }
+
+ if (hw == CBN_SELCHANGE && lw == IDC_COMBO_BOX_HASH_ALGO)
+ {
+ ShowWindow (GetDlgItem (hwndDlg, IDT_HASH_ALGO), SW_SHOW);
+ if (SysEncInEffect())
+ {
+ HWND hHashAlgoItem = GetDlgItem (hCurPage, IDC_COMBO_BOX_HASH_ALGO);
+ int selectedAlgo = (int)SendMessage (hHashAlgoItem, CB_GETITEMDATA, SendMessage (hHashAlgoItem, CB_GETCURSEL, 0, 0), 0);
+
+ if (!bSystemIsGPT && !HashForSystemEncryption (selectedAlgo))
+ {
+ hash_algo = DEFAULT_HASH_ALGORITHM_BOOT;
+ RandSetHashFunction (DEFAULT_HASH_ALGORITHM_BOOT);
+ Info ("ALGO_NOT_SUPPORTED_FOR_SYS_ENCRYPTION", MainDlg);
+ SelectAlgo (GetDlgItem (hCurPage, IDC_COMBO_BOX_HASH_ALGO), &hash_algo);
+ }
+ }
+ return 1;
+ }
+
+ if (lw == IDC_PIM_ENABLE)
+ {
+ PimEnable = GetCheckBox (hwndDlg, IDC_PIM_ENABLE);
+ if (!PimEnable)
+ volumePim = 0;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+void
+AddComboPairW (HWND hComboBox, const wchar_t *lpszItem, int value)
+{
+ LPARAM nIndex;
+ nIndex = SendMessageW(hComboBox, CB_ADDSTRING, 0, (LPARAM)lpszItem);
+ nIndex = SendMessage(hComboBox, CB_SETITEMDATA, nIndex, (LPARAM)value);
+}
+
+/* Acording to NIST, only a blacklist check and at least 8 character should be compulsary, no special character check... */
+int PrintStrongness (char input[], unsigned int length)
+{
+ unsigned int n = length;
+ int iReturnValue = 0;
+ if (n < 10)
+ {
+ burn (input, sizeof(input));
+ return iReturnValue = weak;
+ }
+ else if (CheckWord(input))
+ {
+ burn (input, sizeof(input));
+ return iReturnValue = weak;
+ }
+ //Tetermine the strength of the passsord
+ if ((n >= 13))
+ {
+ iReturnValue = very_strong;
+ }
+ //if 3 out of 4 paramters are true
+ else if (n >= 10)
+ {
+ iReturnValue = strong;
+ }
+ //if 2 out of 4 values are true
+ else if (n >= 8)
+ {
+ iReturnValue = medium;
+ }
+ else
+ {
+ iReturnValue = weak;
+ }
+ burn (input, sizeof(input));
+ return iReturnValue;
+}
+
+/* Check if password is in list
+Credits go Martin York from https://codereview.stackexchange.com/questions/52702/how-to-search-for-a-word-in-a-sorted-text-file-efficiently */
+BOOL CheckWord (char* search)
+{
+
+ bool isWordInDict(std::string const& word);
+ {
+ struct MyDict : std::set<std::string>
+ {
+ typedef std::set<std::string>::const_iterator const_iterator;
+ MyDict()
+ {
+ wchar_t path[TC_MAX_PATH];
+ wchar_t tmp[TC_MAX_PATH];
+ wchar_t destFileName[TC_MAX_PATH] = L"password1000000.txt";
+
+ if (GetModuleFileName (NULL, path, ARRAYSIZE (path)) == 0)
+ {
+ Error ("ERROR_GETTING_PATH", MainDlg);
+ }
+
+ StringCbCopyW(tmp, ARRAYSIZE(tmp), path);
+
+ //detects the last '\' in order to remove the name of the exe file. Afterwards add .txt file in the path
+ for (int i = wcslen(path); i > 1; i--)
+ {
+ if (tmp[i] == '\\')
+ {
+ for(unsigned int j = i + 1; j < wcslen(path); j++)
+ {
+ tmp[j] = '\0';
+ }
+ break;
+ }
+ }
+ StringCbCatW(tmp, sizeof(tmp), destFileName);
+
+ std::ifstream fin(tmp);
+ std::copy(std::istream_iterator<std::string>(fin), std::istream_iterator<std::string>(),
+ std::inserter(*this, end()));
+ }
+ };
+ static const MyDict dict;
+ MyDict::const_iterator find = dict.find(search);
+
+ return find != dict.end();
+ }
+}
+
+/* Credits go to Barmak Shemirani from https://stackoverflow.com/questions/31407492/c-tooltip-function-for-checkbox */
+void CreateToolTip(HWND hWndParent, HWND hControlItem, PTSTR pszText)
+{
+ if (!hControlItem || !hWndParent || !pszText)
+ return;
+
+ HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,
+ WS_POPUP | TTS_NOFADE | TTS_ALWAYSTIP /*| TTS_BALLOON*/,
+ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
+ hWndParent, NULL, GetModuleHandle(NULL), NULL);
+
+ if (!hwndTip)
+ return;
+
+ TOOLINFO toolInfo = { 0 };
+ toolInfo.cbSize = sizeof(toolInfo);
+ toolInfo.hwnd = hWndParent;
+ toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
+ toolInfo.uId = (UINT_PTR)hControlItem;
+ toolInfo.lpszText = pszText;
+ GetClientRect(hWndParent, &toolInfo.rect);
+ if (!SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo))
+ {
+ MessageBox(0, TEXT("TTM_ADDTOOL failed\nWrong project manifest!"), 0, 0);
+ }
+}
diff --git a/src/Format/Tcformat.h b/src/Format/Tcformat.h
index f9328afd..a8237521 100644
--- a/src/Format/Tcformat.h
+++ b/src/Format/Tcformat.h
@@ -106,2 +106,10 @@ extern volatile int NonSysInplaceEncStatus;
+BOOL CALLBACK AdvanceDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+BOOL CALLBACK FinishDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+void AddComboPairW (HWND hComboBox, const wchar_t *lpszItem, int value);
+int PrintStrongness (char* input, unsigned int length);
+BOOL CheckWord (char search[]);
+BOOL CALLBACK AdvanceDlgProcIntro (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
+void CreateToolTip (HWND hWndParent, HWND hControlItem, PTSTR pszText);
+
#ifdef __cplusplus
diff --git a/src/Release/Setup Files/Product64.wxs b/src/Release/Setup Files/Product64.wxs
index e20fd1dc..2f43edd1 100644
--- a/src/Release/Setup Files/Product64.wxs
+++ b/src/Release/Setup Files/Product64.wxs
@@ -869,5 +869,2 @@
</Component>
- <Component Id="cmp960F36632D3FB602421D1195E4EB6FE1" Guid="{321F49A5-8A1B-4881-A32D-12EDA99D1B85}">
- <File Id="fil324009D5856BF4C5270D40F1EC4110EB" KeyPath="yes" Source="$(sys.CURRENTDIR)\docs\html\en\RIPEMD-160.html" DiskId="1" />
- </Component>
<Component Id="cmpB4C7B1A7A3EC0CB2DE805AC5CC5FC0D7" Guid="{4534E8B2-114E-4173-AE3E-75E0D96EB573}">
@@ -1385,3 +1382,2 @@
<ComponentRef Id="cmpFB2313AB16EF2467366ED136C0E61CE6" />
- <ComponentRef Id="cmp960F36632D3FB602421D1195E4EB6FE1" />
<ComponentRef Id="cmpB4C7B1A7A3EC0CB2DE805AC5CC5FC0D7" />
@@ -1708,2 +1704,2 @@
-</Wix> \ No newline at end of file
+</Wix>
diff --git a/src/Release/Setup Files/password1000000.txt b/src/Release/Setup Files/password1000000.txt
new file mode 100644
index 00000000..e6e50bf5
--- /dev/null
+++ b/src/Release/Setup Files/password1000000.txt
@@ -0,0 +1,999999 @@
+123456
+password
+12345678
+qwerty
+123456789
+12345
+1234
+111111
+1234567
+dragon
+123123
+baseball
+abc123
+football
+monkey
+letmein
+696969
+shadow
+master
+666666
+qwertyuiop
+123321
+mustang
+1234567890
+michael
+654321
+pussy
+superman
+1qaz2wsx
+7777777
+fuckyou
+121212
+000000
+qazwsx
+123qwe
+killer
+trustno1
+jordan
+jennifer
+zxcvbnm
+asdfgh
+hunter
+buster
+soccer
+harley
+batman
+andrew
+tigger
+sunshine
+iloveyou
+fuckme
+2000
+charlie
+robert
+thomas
+hockey
+ranger
+daniel
+starwars
+klaster
+112233
+george
+asshole
+computer
+michelle
+jessica
+pepper
+1111
+zxcvbn
+555555
+11111111
+131313
+freedom
+777777
+pass
+fuck
+maggie
+159753
+aaaaaa
+ginger
+princess
+joshua
+cheese
+amanda
+summer
+love
+ashley
+6969
+nicole
+chelsea
+biteme
+matthew
+access
+yankees
+987654321
+dallas
+austin
+thunder
+taylor
+matrix
+william
+corvette
+hello
+martin
+heather
+secret
+fucker
+merlin
+diamond
+1234qwer
+gfhjkm
+hammer
+silver
+222222
+88888888
+anthony
+justin
+test
+bailey
+q1w2e3r4t5
+patrick
+internet
+scooter
+orange
+11111
+golfer
+cookie
+richard
+samantha
+bigdog
+guitar
+jackson
+whatever
+mickey
+chicken
+sparky
+snoopy
+maverick
+phoenix
+camaro
+sexy
+peanut
+morgan
+welcome
+falcon
+cowboy
+ferrari
+samsung
+andrea
+smokey
+steelers
+joseph
+mercedes
+dakota
+arsenal
+eagles
+melissa
+boomer
+booboo
+spider
+nascar
+monster
+tigers
+yellow
+xxxxxx
+123123123
+gateway
+marina
+diablo
+bulldog
+qwer1234
+compaq
+purple
+hardcore
+banana
+junior
+hannah
+123654
+porsche
+lakers
+iceman
+money
+cowboys
+987654
+london
+tennis
+999999
+ncc1701
+coffee
+scooby
+0000
+miller
+boston
+q1w2e3r4
+fuckoff
+brandon
+yamaha
+chester
+mother
+forever
+johnny
+edward
+333333
+oliver
+redsox
+player
+nikita
+knight
+fender
+barney
+midnight
+please
+brandy
+chicago
+badboy
+iwantu
+slayer
+rangers
+charles
+angel
+flower
+bigdaddy
+rabbit
+wizard
+bigdick
+jasper
+enter
+rachel
+chris
+steven
+winner
+adidas
+victoria
+natasha
+1q2w3e4r
+jasmine
+winter
+prince
+panties
+marine
+ghbdtn
+fishing
+cocacola
+casper
+james
+232323
+raiders
+888888
+marlboro
+gandalf
+asdfasdf
+crystal
+87654321
+12344321
+sexsex
+golden
+blowme
+bigtits
+8675309
+panther
+lauren
+angela
+bitch
+spanky
+thx1138
+angels
+madison
+winston
+shannon
+mike
+toyota
+blowjob
+jordan23
+canada
+sophie
+Password
+apples
+dick
+tiger
+razz
+123abc
+pokemon
+qazxsw
+55555
+qwaszx
+muffin
+johnson
+murphy
+cooper
+jonathan
+liverpoo
+david
+danielle
+159357
+jackie
+1990
+123456a
+789456
+turtle
+horny
+abcd1234
+scorpion
+qazwsxedc
+101010
+butter
+carlos
+password1
+dennis
+slipknot
+qwerty123
+booger
+asdf
+1991
+black
+startrek
+12341234
+cameron
+newyork
+rainbow
+nathan
+john
+1992
+rocket
+viking
+redskins
+butthead