diff options
author | Unit 193 <unit193@ubuntu.com> | 2019-10-30 18:53:24 -0400 |
---|---|---|
committer | Unit 193 <unit193@ubuntu.com> | 2019-10-30 18:53:24 -0400 |
commit | 734c77de757ba52ddfb27162282017d558391c57 (patch) | |
tree | 32c444a144f89c8ac5f95a451039c161b4489a46 | |
parent | 745d1dd3562eb7c1e698216adc0dba41ab1af500 (diff) | |
parent | 84b90dad681d5b87a56d46eea1cb16cb6fc930a7 (diff) | |
download | veracrypt-734c77de757ba52ddfb27162282017d558391c57.tar.bz2 veracrypt-734c77de757ba52ddfb27162282017d558391c57.tar.xz veracrypt-734c77de757ba52ddfb27162282017d558391c57.tar.zst |
Update upstream source from tag 'upstream/1.24-Hotfix1'
Update to upstream version '1.24-Hotfix1'
with Debian dir 81c826ac3ce88e5c57255264841065ff464d0522
101 files changed, 2642 insertions, 517 deletions
diff --git a/Translations/Language.ar.xml b/Translations/Language.ar.xml index 10a9b20..3a67693 100644 --- a/Translations/Language.ar.xml +++ b/Translations/Language.ar.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="ar" name="العربية" en-name="Arabic" version="0.2.0" translators="Ahmad Gharbeia, Khaled Hosny, Ali Khojah" /> <font lang="ar" class="normal" size="11" face="default" /> <font lang="ar" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.be.xml b/Translations/Language.be.xml index ea688b6..24d6229 100644 --- a/Translations/Language.be.xml +++ b/Translations/Language.be.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="be" name="Беларуская" en-name="Belarusian" version="0.1.0" translators="Aleg Azarousky" /> <font lang="be" class="normal" size="11" face="default" /> <font lang="be" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.bg.xml b/Translations/Language.bg.xml index 76967b8..fd4d892 100644 --- a/Translations/Language.bg.xml +++ b/Translations/Language.bg.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="bg" name="Български" en-name="Bulgarian" version="0.1.0" translators="Lachezar Gorchev" /> <font lang="bg" class="normal" size="11" face="default" /> <font lang="bg" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.ca.xml b/Translations/Language.ca.xml index 8921978..d814b08 100644 --- a/Translations/Language.ca.xml +++ b/Translations/Language.ca.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="ca" name="Català" en-name="Catalan" version="0.1.0" translators="CESICAT, Centre de Seguretat de la Informació de Catalunya" /> <font lang="ca" class="normal" size="11" face="default" /> <font lang="ca" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.cs.xml b/Translations/Language.cs.xml index 983c672..cb894ad 100644 --- a/Translations/Language.cs.xml +++ b/Translations/Language.cs.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="cs" name="Čeština" en-name="Czech" version="1.1.0" translators="Vítek Moser, Lagardere" /> <font lang="cs" class="normal" size="11" face="default" /> <font lang="cs" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.da.xml b/Translations/Language.da.xml index ea2f3ab..d21d0f3 100644 --- a/Translations/Language.da.xml +++ b/Translations/Language.da.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="da" name="Dansk" en-name="Danish" version="0.1.0" translators="Lasse Bond" /> <font lang="da" class="normal" size="11" face="default" /> <font lang="da" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.de.xml b/Translations/Language.de.xml index 940a8bb..95563cc 100644 --- a/Translations/Language.de.xml +++ b/Translations/Language.de.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <!-- 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 --> diff --git a/Translations/Language.el.xml b/Translations/Language.el.xml index 8e03627..e58e53f 100644 --- a/Translations/Language.el.xml +++ b/Translations/Language.el.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="el" name="Ελληνικά" en-name="Greek" version="0.1.0" translators="Βασίλης Κοσμίδης" /> <font lang="el" class="normal" size="11" face="default" /> <font lang="el" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.es.xml b/Translations/Language.es.xml index 56e2c43..c958e46 100644 --- a/Translations/Language.es.xml +++ b/Translations/Language.es.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="es" name="Español" en-name="Spanish" version="1.0.0" translators="Juan Antonio Auñón Ochando" /> <font lang="es" class="normal" size="11" face="default" /> <font lang="es" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.et.xml b/Translations/Language.et.xml index 9c68cbe..3e15269 100644 --- a/Translations/Language.et.xml +++ b/Translations/Language.et.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="et" name="Eesti" en-name="Estonian" version="0.1.0" translators="Maiko Mõtsar" /> <font lang="et" class="normal" size="11" face="vaikimisi" /> <font lang="et" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.eu.xml b/Translations/Language.eu.xml index 77a913f..e014524 100644 --- a/Translations/Language.eu.xml +++ b/Translations/Language.eu.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="eu" name="Euskara" en-name="Basque" version="1.0.0" translators="Ander Genua" /> <font lang="eu" class="normal" size="11" face="default" /> <font lang="eu" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.fa.xml b/Translations/Language.fa.xml index 7efc4e8..5c51f4c 100644 --- a/Translations/Language.fa.xml +++ b/Translations/Language.fa.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="fa" name="فارسي" en-name="Persian" version="0.1.0" translators="Ali Bitazar, Rodabeh Sarmadi" /> <font lang="fa" class="normal" size="11" face="default" /> <font lang="fa" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.fi.xml b/Translations/Language.fi.xml index 2f1930b..8b15fb0 100644 --- a/Translations/Language.fi.xml +++ b/Translations/Language.fi.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="fi" name="Suomi" en-name="Finnish" version="0.2.0" translators="Matti Ruhanen" /> <font lang="fi" class="normal" size="11" face="default" /> <font lang="fi" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.fr.xml b/Translations/Language.fr.xml index d506054..7623dc5 100644 --- a/Translations/Language.fr.xml +++ b/Translations/Language.fr.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="fr" name="Français" en-name="French" version="0.3.0" translators="Stéphane S., Olivier M., Thierry T" /> <font lang="fr" class="normal" size="11" face="default" /> <font lang="fr" class="bold" size="13" face="Arial" /> @@ -1111,7 +1111,7 @@ <entry lang="fr" key="KEYB_LAYOUT_SYS_ENC_EXPLANATION">Note : Le mot de passe devra être saisi dans l’environnement de préamorçage (avant le démarrage de windows) où les dispositions de clavier non-américain ne sont pas disponibles. Aussi, le mot de passe doit toujours être saisi en utilisant la disposition du clavier Américain. Mais il est important de noter qu’il n’est PAS nécessaire de posséder un vrai clavier américain. VeraCrypt assure automatiquement que vous pouvez saisir en toute sécurité votre mot de passe (maintenant et dans l’environnement de préamorçage) même si vous ne possédez pas un vrai clavier américain.</entry> <entry lang="fr" key="RESCUE_DISK_INFO">Avant de pouvoir chiffrer la partition/disque, vous devez créer un disque de sauvegarde VeraCrypt (VRD), dont les buts sont :\n\n- Si le chargeur de démarrage de VeraCrypt, la clé principale ou d’autres données critiques sont endommagées, le VRD permet de les restaurer (remarquez que vous devrez toujours entrer le mot de passe correct).\n\n- Si Windows est endommagé et ne peut pas démarrer, VRD vous permet toujours de déchiffrer la partition/disque avant le démarrage de Windows.\n\n- Le VRD contiendra une sauvegarde du contenu actuel de la première plage du disque (qui contient en général un chargeur de système ou le gestionnaire de démarrage) et vous permettra de le restaurer si necessaire.\n\n L’image ISO du disque de récupération VeraCrypt sera créée à l’emplacement spécifié ci-dessous.</entry> <entry lang="fr" key="RESCUE_DISK_WIN_ISOBURN_PRELAUNCH_NOTE">Après avoir cliqué sur OK, le logiciel de gravage d’image Microsoft sera lancé. Utilisez-le pour graver l’image ISO du disque de récupération VeraCrypt sur un CD ou un DVD.\n\nAprès cela, revenez à l’assistant de création de volumes VeraCrypt et suivez les instructions.</entry> - <entry lang="fr" key="RESCUE_DISK_BURN_INFO">L’image de la disque de secours a été créée et stockée dans le fichier : \n%s\n\nMainteant vous avez besoin de le graver sur un CD ou un DVD.\n\n%lsAprès l’avoir gravé, cliquez sur suivant pour vérifier qu’il a été gravé correctement.</entry> + <entry lang="fr" key="RESCUE_DISK_BURN_INFO">L’image de la disque de secours a été créée et stockée dans le fichier : \n%s\n\nMaintenant vous avez besoin de le graver sur un CD ou un DVD.\n\n%lsAprès l’avoir gravé, cliquez sur suivant pour vérifier qu’il a été gravé correctement.</entry> <entry lang="fr" key="RESCUE_DISK_BURN_INFO_NO_CHECK">L’image de la disque de secours a été créée et stockée dans le fichier : \n%s\n\nVous devriez maintenant graver l’image sur un CD/DVD ou la déplacer vers un emplacement sécurisé pour une utilisation ultérieure.\n\n%lsCliquez sur "Suivant" pour continuer.</entry> <entry lang="fr" key="RESCUE_DISK_BURN_INFO_NONWIN_ISO_BURNER">IMPORTANT : Le fichier doit être écrit sur le CD/DVD sous forme d’image ISO (pas dans un fichier individuel). Pour plus d’informations sur la façon de le faire, veuillez vous reporter à la documentation de votre logiciel de gravure de CD/DVD. Si vous n’avez pas de logiciel de gravure de CD/DVD cliquez sur le lien ci-dessous pour télécharger un logiciel gratuit.\n\n</entry> <entry lang="fr" key="LAUNCH_WIN_ISOBURN">Lancez le logiciel de gravure d’image disque de Microsoft</entry> diff --git a/Translations/Language.hu.xml b/Translations/Language.hu.xml index 2471c5e..3d1e2ba 100644 --- a/Translations/Language.hu.xml +++ b/Translations/Language.hu.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="hu" name="Magyar" en-name="Hungarian" version="2018.03.06" translators="Nyul Balazs > Szaki" /> <font lang="hu" class="normal" size="11" face="default" /> <font lang="hu" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.id.xml b/Translations/Language.id.xml index 39687e0..09abd4d 100644 --- a/Translations/Language.id.xml +++ b/Translations/Language.id.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="id" name="Bahasa Indonesia" en-name="Indonesian" version="0.1.0" translators="Tajuddin N. F." /> <font lang="id" class="normal" size="11" face="default" /> <font lang="id" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.it.xml b/Translations/Language.it.xml index 2924866..bf3e5b8 100644 --- a/Translations/Language.it.xml +++ b/Translations/Language.it.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="it" name="Italiano" en-name="Italian" version="1.0.1" translators="Maurizio Ballo, Consiglio Gaetano" /> <font lang="it" class="normal" size="11" face="default" /> <font lang="it" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.ja.xml b/Translations/Language.ja.xml index 3f709b3..a2444f7 100644 --- a/Translations/Language.ja.xml +++ b/Translations/Language.ja.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="ja" name="日本語" en-name="Japanese" version="1.0.0" translators="OGOSHI Masayuki" /> <font lang="ja" class="normal" size="12" face="MS UI Gothic" /> <font lang="ja" class="bold" size="16" face="MS UI Gothic" /> diff --git a/Translations/Language.ka.xml b/Translations/Language.ka.xml index 6d721d1..b1ba09c 100644 --- a/Translations/Language.ka.xml +++ b/Translations/Language.ka.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="ka" name="ქართული" en-name="Georgian" version="0.1.0" translators="Kakha Lomiashvili" /> <font lang="ka" class="normal" size="12" face="Arial" /> <font lang="ka" class="bold" size="12" face="Arial" /> diff --git a/Translations/Language.ko.xml b/Translations/Language.ko.xml index f01ee36..df30837 100644 --- a/Translations/Language.ko.xml +++ b/Translations/Language.ko.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="ko" name="한국어" en-name="Korean" version="0.1.1" translators="Kieaer, Herbert Shin" /> <font lang="ko" class="normal" size="11" face="돋움" /> <font lang="ko" class="bold" size="13" face="맑은 고딕" /> diff --git a/Translations/Language.lv.xml b/Translations/Language.lv.xml index fe3d59b..1b0aaff 100644 --- a/Translations/Language.lv.xml +++ b/Translations/Language.lv.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="lv" name="Latviešu" en-name="Latvian" version="0.1.0" translators="Edmunds Melkers" /> <font lang="lv" class="normal" size="11" face="default" /> <font lang="lv" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.my.xml b/Translations/Language.my.xml index eaffa07..fbe824b 100644 --- a/Translations/Language.my.xml +++ b/Translations/Language.my.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="my" name="မြန်မာ" en-name="Burmese" version="1.0.0" translators="Zaw Myo Htet" /> <font lang="my" class="normal" size="11" face="Myanmar3" /> <font lang="my" class="bold" size="13" face="Myanmar3" /> diff --git a/Translations/Language.nl.xml b/Translations/Language.nl.xml index b830d39..833fcac 100644 --- a/Translations/Language.nl.xml +++ b/Translations/Language.nl.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="nl" name="Nederlands" en-name="Dutch" version="0.2.3" translators="Jan van der Wal, Peter Tak" /> <font lang="nl" class="normal" size="11" face="default" /> diff --git a/Translations/Language.nn.xml b/Translations/Language.nn.xml index 920826e..68888d9 100644 --- a/Translations/Language.nn.xml +++ b/Translations/Language.nn.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="nn" name="Norsk Nynorsk" en-name="Norwegian (Nynorsk)" version="0.1.0" translators="Kjell Rune Helland" /> <font lang="nn" class="normal" size="11" face="default" /> <font lang="nn" class="bold" size="13" face="Arial " /> diff --git a/Translations/Language.pl.xml b/Translations/Language.pl.xml index f0f6667..26e3ad5 100644 --- a/Translations/Language.pl.xml +++ b/Translations/Language.pl.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="pl" name="Polski" en-name="Polish" version="1.0.0" translators="Mirek Druchowicz, Janusz Zamecki, Sobiesław Antolak, Begina Felicysym" /> <font lang="pl" class="normal" size="11" face="default" /> <font lang="pl" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.pt-br.xml b/Translations/Language.pt-br.xml index 9aa4a36..055c809 100644 --- a/Translations/Language.pt-br.xml +++ b/Translations/Language.pt-br.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="pt-br" name="Português-Brasil" en-name="Portuguese (Brazil)" version="0.1.0" translators="Thiago C. L. Mendes, Lecidio S. Alencar , Lucas C. Ferreira" /> <font lang="pt-br" class="normal" size="11" face="padrão" /> <font lang="pt-br" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.ro.xml b/Translations/Language.ro.xml index 9d5d148..23079f9 100644 --- a/Translations/Language.ro.xml +++ b/Translations/Language.ro.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version="1.24"> + <localization prog-version="1.24-Hotfix1"> <language langid="ro" name="Română" en-name="Romanian" version="1.0.0" translators="Barna Cosmin Marian" /> <font lang="ro" class="normal" size="11" face="default" /> <font lang="ro" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.ru.xml b/Translations/Language.ru.xml index d49b38e..8654042 100644 --- a/Translations/Language.ru.xml +++ b/Translations/Language.ru.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="ru" name="Русский" en-name="Russian" version="1.0.5" translators="Dmitry Yerokhin" /> <font lang="ru" class="normal" size="11" face="default" /> <font lang="ru" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.sk.xml b/Translations/Language.sk.xml index 00f32fa..667c3c3 100644 --- a/Translations/Language.sk.xml +++ b/Translations/Language.sk.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="sk" name="Slovenčina" en-name="Slovak" version="0.1.0" translators="Kamil David" /> <font lang="sk" class="normal" size="11" face="default" /> <font lang="sk" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.sl.xml b/Translations/Language.sl.xml index da2102d..472ec9e 100644 --- a/Translations/Language.sl.xml +++ b/Translations/Language.sl.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="sl" name="Slovenščina" en-name="Slovenian" version="0.1.0" translators="Erik David Salam" /> <font lang="sl" class="normal" size="11" face="default" /> <font lang="sl" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.sv.xml b/Translations/Language.sv.xml index ac4581f..c41439e 100644 --- a/Translations/Language.sv.xml +++ b/Translations/Language.sv.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="sv" name="Svenska" en-name="Swedish" version="1.0.0" translators="Peter Runesson" /> <font lang="sv" class="normal" size="11" face="default" /> <font lang="sv" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.th.xml b/Translations/Language.th.xml index b497a9b..002c383 100644 --- a/Translations/Language.th.xml +++ b/Translations/Language.th.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="th" name="ภาษาไทย" en-name="Thai" version="0.0.0" translators=""/> <font lang="th" class="normal" size="11" face="default" /> <font lang="th" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.tr.xml b/Translations/Language.tr.xml index e75ae62..ba076b2 100644 --- a/Translations/Language.tr.xml +++ b/Translations/Language.tr.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="tr" name="Türkçe" en-name="Turkish" version="0.1.0" translators="Ali İskender Turan, Zeynel Abidin Öztürk" /> <font lang="tr" class="normal" size="11" face="default" /> <font lang="tr" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.uk.xml b/Translations/Language.uk.xml index 8dcac52..2db1033 100644 --- a/Translations/Language.uk.xml +++ b/Translations/Language.uk.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="uk" name="Українська" en-name="Ukrainian" version="1.0.0" translators="Kravchuk Olexandr, Babchuk Volodymyr" /> <font lang="uk" class="normal" size="11" face="default" /> <font lang="uk" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.uz.xml b/Translations/Language.uz.xml index 1a95f1e..619c31b 100644 --- a/Translations/Language.uz.xml +++ b/Translations/Language.uz.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="uz" name="Ўзбекча" en-name="Uzbek (Cyrillic)" version="0.1.0" translators="Abdurauf Azizov, Dmitry Yerokhin" /> <font lang="uz" class="normal" size="11" face="default" /> <font lang="uz" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.vi.xml b/Translations/Language.vi.xml index 2e791e5..d105bac 100644 --- a/Translations/Language.vi.xml +++ b/Translations/Language.vi.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="vi" name="Tiếng Việt" en-name="Vietnamese" version="0.1.0" translators="Nguyễn Kim Huy" /> <font lang="vi" class="normal" size="11" face="default" /> <font lang="vi" class="bold" size="13" face="Arial" /> diff --git a/Translations/Language.zh-cn.xml b/Translations/Language.zh-cn.xml index 60df236..c8db1dd 100644 --- a/Translations/Language.zh-cn.xml +++ b/Translations/Language.zh-cn.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="zh-cn" name="简体中文" en-name="Chinese (Simplified)" version="1.0.0" translators="Barney Li and Zhangjintao" /> <font lang="zh-cn" class="normal" size="11" face="Tahoma" /> <font lang="zh-cn" class="bold" size="14" face="Tahoma" /> diff --git a/Translations/Language.zh-hk.xml b/Translations/Language.zh-hk.xml index 52441d7..f7cc26d 100644 --- a/Translations/Language.zh-hk.xml +++ b/Translations/Language.zh-hk.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="zh-hk" name="繁體中文" en-name="Chinese (Hong Kong)" version="0.1.0" translators="PUN Chi Ho" /> <font lang="zh-hk" class="normal" size="11" face="Arial" /> <font lang="zh-hk" class="bold" size="14" face="Arial" /> diff --git a/Translations/Language.zh-tw.xml b/Translations/Language.zh-tw.xml index 408121e..c437e8b 100644 --- a/Translations/Language.zh-tw.xml +++ b/Translations/Language.zh-tw.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <VeraCrypt> - <localization prog-version= "1.24"> + <localization prog-version= "1.24-Hotfix1"> <language langid="zh-tw" name="繁體中文" en-name="Chinese (Taiwan)" version="0.1.0" translators="Barney Li, Simon Ma, ChangMing Hsu" /> <font lang="zh-tw" class="normal" size="12" face="MingLiU" /> <font lang="zh-tw" class="bold" size="15" face="MingLiU" /> diff --git a/doc/chm/VeraCrypt User Guide.chm b/doc/chm/VeraCrypt User Guide.chm Binary files differindex 74e0666..7315ec2 100644 --- a/doc/chm/VeraCrypt User Guide.chm +++ b/doc/chm/VeraCrypt User Guide.chm diff --git a/doc/html/Command Line Usage.html b/doc/html/Command Line Usage.html index 6ef668f..8c86460 100644 --- a/doc/html/Command Line Usage.html +++ b/doc/html/Command Line Usage.html @@ -37,7 +37,7 @@ <h1>Command Line Usage</h1> <p>Note that this section applies to the Windows version of VeraCrypt. For information on command line usage applying to the <strong>Linux and Mac OS X versions</strong>, please run: veracrypt –h</p> -<table border="1" cellspacing="0" cellpadding="0"> +<table border="1" cellspacing="0" cellpadding="1"> <tbody> <tr> <td><em>/help</em> or <em>/?</em></td> @@ -176,6 +176,10 @@ Note that turning the password cache off will not clear it (use /w to clear the <p>Please note that this switch may be present several times in the command line in order to specify multiple mount options (e.g.: /m rm /m ts)</p> </td> </tr> +<tr> +<td><em>/DisableDeviceUpdate</em> </td> +<td>Disables periodic internel check on devices connected to the system that is used for handling favorites identified with VolumeID and replace it with on-demande checks.</td> +</tr> </tbody> </table> <h4>VeraCrypt Format.exe (VeraCrypt Volume Creation Wizard):</h4> diff --git a/doc/html/Release Notes.html b/doc/html/Release Notes.html index be813c6..09e5d1e 100644 --- a/doc/html/Release Notes.html +++ b/doc/html/Release Notes.html @@ -39,6 +39,39 @@ <strong>Note to users who created volumes with 1.17 version of VeraCrypt or earlier: </strong><br/> <span style="color:#ff0000;">To avoid hinting whether your volumes contain a hidden volume or not, or if you depend on plausible deniability when using hidden volumes/OS, then you must recreate both the outer and hidden volumes including system encryption and hidden OS, discarding existing volumes created prior to 1.18a version of VeraCrypt.</span></li> </p> + +<p><strong style="text-align:left">1.24-Hotfix1 </strong>(October 27<sup>rd</sup>, 2019):</p> +<ul> +<li><strong>Windows:</strong> +<ul> +<li>Fix 1.24 regression that caused system favorites not to mount at boot if VeraCrypt freshly installed.</li> +<li>Fix failure to encrypt system if the current Windows username contains a Unicode non-ASCII character.</li> +<li>Make VeraCrypt Expander able to resume expansion of volumes whose previous expansion was aborted before it finishes.</li> +<li>Add "Quick Expand" option to VeraCrypt Expander to accelarate the expansion of large file containers.</li> +<li>Add several robustness checks and validation in case of system encryption to better handle some corner cases.</li> +<li>Minor UI and documentation changes.</li> +</ul> +</li> +<li><strong>Linux:</strong> +<ul> +<li>Workaround gcc 4.4.7 bug under CentOS 6 that caused VeraCrypt built under CentOS 6 to crash when Whirlpool hash is used.</li> +<li>Fix "incorrect password attempt" written to /var/log/auth.log when mounting volumes.</li> +<li>Fix dropping file in UI not showing its correct path , specifically under GTK-3.</li> +<li>Add missing JitterEntropy implementation/</li> +</ul> +</li> +<li><strong>MacOSX:</strong> +<ul> +<li>Fix some devices and partitions not showing in the device selection dialog under OSX 10.13 and newer.</li> +<li>Fix keyboard tab navigation between password fields in "Volume Password" page of volume creation wizard.</li> +<li>Add missing JitterEntropy implementation/</li> +<li>Support APFS filesystem for creation volumes.</li> +<li>Support Dark Mode.</li> +</ul> +</li> +</ul> + + <p><strong style="text-align:left">1.24 </strong>(October 6<sup>th</sup>, 2019):</p> <ul> <li><strong>All OSs:</strong> diff --git a/src/Boot/Windows/BootCommon.h b/src/Boot/Windows/BootCommon.h index 3bbd09b..b77b880 100644 --- a/src/Boot/Windows/BootCommon.h +++ b/src/Boot/Windows/BootCommon.h @@ -17,7 +17,7 @@ #include "BootDefs.h" // The user will be advised to upgrade the rescue disk if upgrading from the following or any previous version -#define TC_RESCUE_DISK_UPGRADE_NOTICE_MAX_VERSION 0x0122 +#define TC_RESCUE_DISK_UPGRADE_NOTICE_MAX_VERSION 0x0123 #define TC_BOOT_LOADER_AREA_SIZE (TC_BOOT_LOADER_AREA_SECTOR_COUNT * TC_SECTOR_SIZE_BIOS) diff --git a/src/Build/CMakeLists.txt b/src/Build/CMakeLists.txt index e59cf7a..422d3c8 100644 --- a/src/Build/CMakeLists.txt +++ b/src/Build/CMakeLists.txt @@ -10,6 +10,11 @@ elseif ( NOT DEFINED NOGUI ) MESSAGE(FATAL_ERROR "NOGUI variable MUST BE set to TRUE if building 'Console' version, 'FALSE' otherwise") endif() +# - Set version of the package +set( FULL_VERSION "1.24-Hotfix1" ) +set( VERSION "1.24.7" ) +set( RELEASE "1" ) + # - Set PROJECT_NAME and CONFLICT_PACKAGE values if (NOGUI) set( PROJECT_NAME "veracrypt-console" ) @@ -53,21 +58,22 @@ endif( ) # - Detect OSX, CentOS, Debian, Ubuntu or openSUSE platform of the build system # The following variable(s) will be set -# $PLATFORM Debian Ubuntu CentOS openSUSE +# $PLATFORM Debian Ubuntu CentOS openSUSE (TODO) # $PLATFORM_VERSION # 9.x 16.04 7.X 42.3 # 10.X 18.04 8.X 15.0 +# ... ... ... ... # $DISTRO_NAME ${PLATFORM}-${PLATFORM_VERSION} if ( UNIX ) # /etc/debian_version exists for both Debian and Ubuntu - if(EXISTS "/etc/debian_version") + if(EXISTS "/etc/debian_version") set ( PLATFORM "Debian" ) # Read lsb-release to get flavour name and flavour release version (only supported one for now is Ubuntu) if(EXISTS "/etc/lsb-release") - + file(READ "/etc/lsb-release" LSB_RELEASE_ID) string(REGEX MATCH "DISTRIB_ID=([a-zA-Z0-9 /\\.]+)" _ ${LSB_RELEASE_ID}) set(FULL_FLAVOUR ${CMAKE_MATCH_1}) @@ -83,22 +89,18 @@ if ( UNIX ) else() file(READ "/etc/debian_version" DEBIAN_RELEASE) - string(REGEX MATCH "[a-zA-Z0-9 /\\.]+" _ ${DEBIAN_RELEASE}) + string(REGEX MATCH "([0-9]+\\.[0-9]+)" _ ${DEBIAN_RELEASE}) set(PLATFORM_VERSION ${CMAKE_MATCH_1}) - if( PLATFORM_VERSION STREQUAL "stretch/sid" ) - set( PLATFORM_VERSION "9" ) - endif( PLATFORM_VERSION STREQUAL "stretch/sid" ) - endif() # Get debian release version elseif(EXISTS "/etc/debian_version") - + file(READ "/etc/debian_version" DEBIAN_RELEASE) - string(REGEX MATCH "[a-zA-Z0-9 /\\.]+" _ ${DEBIAN_RELEASE}) + string(REGEX MATCH "([0-9]+\\.[0-9]+)" _ ${DEBIAN_RELEASE}) set(PLATFORM_VERSION ${CMAKE_MATCH_1}) - + endif() # Get centos release version @@ -158,30 +160,24 @@ if ( PLATFORM STREQUAL "Debian" OR PLATFORM STREQUAL "Ubuntu" ) elseif (SUFFIX STREQUAL "64") SET(ARCHITECTURE amd64) endif() - else(NOT DPKG_CMD) + else( ) execute_process(COMMAND dpkg --print-architecture OUTPUT_VARIABLE ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE) - endif(NOT DPKG_CMD) + endif( ) elseif ( ( PLATFORM STREQUAL "CentOS" ) OR ( PLATFORM STREQUAL "openSUSE" ) ) execute_process(COMMAND arch OUTPUT_VARIABLE ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE) -elseif ( PLATFORM STREQUAL "OSX" ) +else () - if ( UNIVERSAL ) - set ( ARCHITECTURE "Univesal-Binary" ) - else ( UNIVERSAL ) - # arch reports Intel using the i386 label rather than intel - # We use uname -m instead - execute_process(COMMAND uname -m OUTPUT_VARIABLE ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE) - endif( UNIVERSAL ) + MESSAGE(FATAL_ERROR "Unrecognized / unsupported distribution") endif ( ) MESSAGE ( STATUS "Architecture = ${ARCHITECTURE}" ) # - Create installation folder directory at install time # This won't lead to the files being actually installed (in CMAKE_INSTALL_PREFIX) -# unless "cmake --build . --target install" is executed, which is not the case here/ +# unless "cmake --build . --target install" is executed, which is not the case here. # # Doing things like the following # - install(DIRECTORY ${VERACRYPT_BUILD_DIR}/usr DESTINATION /) @@ -215,21 +211,6 @@ set(CPACK_PACKAGING_INSTALL_PREFIX "/usr") file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Packaging) # creates the Packaging directory under build directory when CMake generates the build system -# - We excute 'grep VERSION_STRING ../../Common/Tcdefs.h | head -n 1' to get the line which include 'VERSION_STRING' -# Then we delete all first characters from the beginning of the line until the first '"' to get the version in the format : "X.YYY..." -# Then, we remove the leading and trailing '"' characters -# Then, we retrieve the 'version' and the 'release' -# Finally, we replace '-' in the release if it exists with a '.' because CPack does not like '-' in the release -execute_process(COMMAND grep VERSION_STRING "$ENV{SOURCEPATH}/Common/Tcdefs.h" - COMMAND head -n 1 - OUTPUT_VARIABLE FULL_VERSION_LINE OUTPUT_STRIP_TRAILING_WHITESPACE) -string(REGEX REPLACE "^[^\"]+" "" FULL_VERSION ${FULL_VERSION_LINE}) -string(REGEX REPLACE "\"" "" FULL_VERSION ${FULL_VERSION}) -string(REPLACE "." ";" FULL_VERSION_LIST ${FULL_VERSION}) -list(GET FULL_VERSION_LIST 0 VERSION) -list(GET FULL_VERSION_LIST 1 RELEASE) -string(REPLACE "-" "." RELEASE ${RELEASE}) - set( VENDOR "IDRIX" ) set( LICENSE "VeraCrypt License" ) set( CONTACT "VeraCrypt Team <veracrypt@idrix.fr>" ) @@ -261,16 +242,27 @@ if ( ( PLATFORM STREQUAL "Debian" ) OR ( PLATFORM STREQUAL "Ubuntu" ) ) set( CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_PACKAGE_RELEASE} ) set( CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCHITECTURE} ) # mandatory - set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.0-0v5, libfuse2, dmsetup") + # Link against gtk3 version of wxWidgets if >= Debian 10 or >= Ubuntu 18.04 + # Otherwise, link against gtk2 version of wxWidgets + if ( ( ( PLATFORM STREQUAL "Debian" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "10" ) ) + OR ( ( PLATFORM STREQUAL "Ubuntu" ) AND ( PLATFORM_VERSION VERSION_GREATER_EQUAL "18.04" ) ) ) + + set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.0-gtk3-0v5, libfuse2, dmsetup" ) + + else () + + set( CPACK_DEBIAN_PACKAGE_DEPENDS "libwxgtk3.0-0v5, libfuse2, dmsetup" ) + + endif() set( CPACK_DEBIAN_PACKAGE_MAINTAINER ${CONTACT} ) # mandatory set( CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY} ) # mandatory set( CPACK_DEBIAN_ARCHIVE_TYPE "gnutar") # mandatory set( CPACK_DEBIAN_COMPRESSION_TYPE "gzip") # mandatory set( CPACK_DEBIAN_PACKAGE_PRIORITY "optional" ) # mandatory - set( CPACK_DEBIAN_PACKAGE_SECTION "libs" ) # recommended, to do, Section relative to Debian sections (https://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections) + set( CPACK_DEBIAN_PACKAGE_SECTION "libs" ) # recommended, Section relative to Debian sections (https://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections) set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA ${DEBIAN_PREINST};${DEBIAN_POSTINST};${DEBIAN_PRERM};${DEBIAN_POSTRM}) - set(CPACK_DEBIAN_PACKAGE_CONFLICTS ${CONFLICT_PACKAGE}) + set(CPACK_DEBIAN_PACKAGE_CONFLICTS "${CONFLICT_PACKAGE}") elseif ( ( PLATFORM STREQUAL "CentOS" ) OR ( PLATFORM STREQUAL "openSUSE" ) ) @@ -293,9 +285,16 @@ elseif ( ( PLATFORM STREQUAL "CentOS" ) OR ( PLATFORM STREQUAL "openSUSE" ) ) set( CPACK_RPM_PACKAGE_AUTOREQ "no" ) # disable automatic shared libraries dependency detection (most of the time buggy) if ( PLATFORM STREQUAL "CentOS" ) - set( CPACK_RPM_PACKAGE_REQUIRES "fuse, device-mapper, gtk3") + + if ( DEFINED WITHGTK3 AND WITHGTK3 ) + set( CPACK_RPM_PACKAGE_REQUIRES "fuse, device-mapper, gtk3" ) + else () + set( CPACK_RPM_PACKAGE_REQUIRES "fuse, device-mapper, gtk2" ) + endif() + elseif ( PLATFORM STREQUAL "openSUSE" ) - # TODO + + set( CPACK_RPM_PACKAGE_REQUIRES "fuse, device-mapper, gtk2" ) endif() set( CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE ${RPM_PRERM}) # optional diff --git a/src/Build/Include/Makefile.inc b/src/Build/Include/Makefile.inc index b39021d..ba166b6 100644 --- a/src/Build/Include/Makefile.inc +++ b/src/Build/Include/Makefile.inc @@ -14,12 +14,16 @@ $(NAME): $(NAME).a clean: @echo Cleaning $(NAME) - rm -f $(APPNAME) $(NAME).a $(OBJS) $(OBJSEX) $(OBJS:.o=.d) *.gch + rm -f $(APPNAME) $(NAME).a $(OBJS) $(OBJSEX) $(OBJSNOOPT) $(OBJS:.o=.d) $(OBJSEX:.oo=.d) $(OBJSNOOPT:.o0=.d) *.gch %.o: %.c @echo Compiling $(<F) $(CC) $(CFLAGS) -c $< -o $@ +%.o0: %.c + @echo Compiling $(<F) + $(CC) $(CFLAGS) -O0 -c $< -o $@ + %.o: %.cpp @echo Compiling $(<F) $(CXX) $(CXXFLAGS) -c $< -o $@ @@ -64,10 +68,10 @@ TR_SED_BIN := tr '\n' ' ' | tr -s ' ' ',' | sed -e 's/^,//g' -e 's/,$$/n/' | tr # Dependencies --include $(OBJS:.o=.d) $(OBJSEX:.oo=.d) +-include $(OBJS:.o=.d) $(OBJSEX:.oo=.d) $(OBJSNOOPT:.o0=.d) -$(NAME).a: $(OBJS) $(OBJSEX) +$(NAME).a: $(OBJS) $(OBJSEX) $(OBJSNOOPT) @echo Updating library $@ - $(AR) $(AFLAGS) -rcu $@ $(OBJS) $(OBJSEX) + $(AR) $(AFLAGS) -rcu $@ $(OBJS) $(OBJSEX) $(OBJSNOOPT) $(RANLIB) $@ diff --git a/src/Build/Resources/MacOSX/Info.plist.legacy.xml b/src/Build/Resources/MacOSX/Info.plist.legacy.xml new file mode 100644 index 0000000..4874768 --- /dev/null +++ b/src/Build/Resources/MacOSX/Info.plist.legacy.xml @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> +<plist version="0.9"> +<dict> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + + <key>CFBundleIdentifier</key> + <string>org.idrix.VeraCrypt</string> + + <key>UTExportedTypeDeclarations</key> + <array> + <dict> + <key>UTTypeIdentifier</key> + <string>org.idrix.veracrypt.hc</string> + + <key>UTTypeDescription</key> + <string>VeraCrypt Container File</string> + + <key>UTTypeConformsTo</key> + <array> + <string>public.data</string> + </array> + + <key>UTTypeTagSpecification</key> + <dict> + <key>public.filename-extension</key> + <array> + <string>hc</string> + <string>tc</string> + </array> + + <key>public.mime-type</key> + <string>application/veracrypt</string> + </dict> + </dict> + </array> + + <key>CFBundleDocumentTypes</key> + <array> + <dict> + <key>CFBundleTypeIconFile</key> + <string>VeraCrypt_Volume.icns</string> + <key>CFBundleTypeName</key> + <string>VeraCrypt Container File</string> + <key>CFBundleTypeRole</key> + <string>Viewer</string> + <key>LSHandlerRank</key> + <string>Owner</string> + <key>LSItemContentTypes</key> + <array> + <!-- my app supports files with my custom extension (see UTExportedTypeDeclarations) --> + <string>org.idrix.veracrypt.hc</string> + </array> + </dict> + </array> + + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + + <key>CFBundleExecutable</key> + <string>VeraCrypt</string> + + <key>CFBundleIconFile</key> + <string>VeraCrypt.icns</string> + + <key>CFBundleName</key> + <string>VeraCrypt</string> + + <key>CFBundlePackageType</key> + <string>APPL</string> + + <key>CFBundleSignature</key> + <string>TRUE</string> + + <key>CFBundleVersion</key> + <string>1.24.7</string> + + <key>CFBundleShortVersionString</key> + <string>_VERSION_</string> + + <key>CFBundleLongVersionString</key> + <string>VeraCrypt _VERSION_</string> + + <key>LSArchitecturePriority</key> + <array> + <string>x86_64</string> + <string>i386</string> + </array> + + <key>LSMinimumSystemVersion</key> + <string>10.7.0</string> + + <key>LSRequiresCarbon</key> + <false/> + + <key>CSResourcesFileMapped</key> + <true/> + + <key>NSHighResolutionCapable</key> + <true/> + + <key>NSPrincipalClass</key> + <string>NSApplication</string> +</dict> +</plist> diff --git a/src/Build/Resources/MacOSX/Info.plist.xml b/src/Build/Resources/MacOSX/Info.plist.xml index 14b6960..47f70f6 100644 --- a/src/Build/Resources/MacOSX/Info.plist.xml +++ b/src/Build/Resources/MacOSX/Info.plist.xml @@ -74,7 +74,7 @@ <string>TRUE</string> <key>CFBundleVersion</key> - <string>1.24.6</string> + <string>1.24.7</string> <key>CFBundleShortVersionString</key> <string>_VERSION_</string> @@ -82,14 +82,8 @@ <key>CFBundleLongVersionString</key> <string>VeraCrypt _VERSION_</string> - <key>LSArchitecturePriority</key> - <array> - <string>x86_64</string> - <string>i386</string> - </array> - <key>LSMinimumSystemVersion</key> - <string>10.7.0</string> + <string>10.9.0</string> <key>LSRequiresCarbon</key> <false/> diff --git a/src/Build/Tools/MacOSX/yasm b/src/Build/Tools/MacOSX/yasm Binary files differindex d17889a..d17889a 100644..100755 --- a/src/Build/Tools/MacOSX/yasm +++ b/src/Build/Tools/MacOSX/yasm diff --git a/src/Build/build_cmake_deb.sh b/src/Build/build_cmake_deb.sh index c809894..3be23dd 100644..100755 --- a/src/Build/build_cmake_deb.sh +++ b/src/Build/build_cmake_deb.sh @@ -20,6 +20,7 @@ make || exit 1 make install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1 echo "Building console version of VeraCrypt for DEB using system wxWidgets" + # This is to avoid " Error: Unable to initialize GTK+, is DISPLAY set properly?" # when building over SSH without X11 Forwarding # export DISPLAY=:0.0 @@ -29,13 +30,14 @@ make NOGUI=1 || exit 1 make NOGUI=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/Console" || exit 1 echo "Creating VeraCrypt DEB packages" + # -DCPACK_RPM_PACKAGE_DEBUG=TRUE for debugging cpack DEB # -DCPACK_RPM_PACKAGE_DEBUG=TRUE for debugging cpack DEB -mkdir $PARENTDIR/VeraCrypt_Packaging - -cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/GUI" -DNOGUI=FALSE || exit 1 -cpack --config $PARENTDIR/VeraCrypt_Packaging/CPackConfig.cmake || exit 1 +mkdir -p $PARENTDIR/VeraCrypt_Packaging/GUI +mkdir -p $PARENTDIR/VeraCrypt_Packaging/Console -cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/Console" -DNOGUI=TRUE || exit 1 -cpack --config $PARENTDIR/VeraCrypt_Packaging/CPackConfig.cmake || exit 1
\ No newline at end of file +cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/GUI -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/GUI" -DNOGUI=FALSE || exit 1 +cpack --config $PARENTDIR/VeraCrypt_Packaging/GUI/CPackConfig.cmake || exit 1 +cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/Console -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/Console" -DNOGUI=TRUE || exit 1 +cpack --config $PARENTDIR/VeraCrypt_Packaging/Console/CPackConfig.cmake || exit 1 diff --git a/src/Build/build_cmake_opensuse.sh b/src/Build/build_cmake_opensuse.sh new file mode 100644 index 0000000..340440a --- /dev/null +++ b/src/Build/build_cmake_opensuse.sh @@ -0,0 +1,71 @@ +#!/bin/sh + +# Errors should cause script to exit +set -e + +# Absolute path to this script +export SCRIPT=$(readlink -f "$0") +# Absolute path this script is in +export SCRIPTPATH=$(dirname "$SCRIPT") +# Source directory which contains the Makefile +export SOURCEPATH=$(readlink -f "$SCRIPTPATH/..") +# Directory where the VeraCrypt has been checked out +export PARENTDIR=$(readlink -f "$SCRIPTPATH/../../..") + +# The sources of wxWidgets 3.0.4 must be extracted to the parent directory +export WX_ROOT=$PARENTDIR/wxWidgets-3.0.4 +echo "Using wxWidgets sources in $WX_ROOT" + +cd $SOURCEPATH + +echo "Building GUI version of VeraCrypt for RPM using wxWidgets static libraries" + +# This will be the temporary wxWidgets directory +export WX_BUILD_DIR=$PARENTDIR/wxBuildGui + +# To build wxWidgets using GTK-2 +make WXSTATIC=1 wxbuild || exit 1 +ln -s $WX_BUILD_DIR/lib $WX_BUILD_DIR/lib64 +make WXSTATIC=1 clean || exit 1 +make WXSTATIC=1 || exit 1 +make WXSTATIC=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1 + +# Uncomment below and comment lines above to reuse existing wxWidgets build +# make WXSTATIC=1 clean || exit 1 +# make WXSTATIC=1 || exit 1 +# make WXSTATIC=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1 + +echo "Building console version of VeraCrypt for RPM using wxWidgets static libraries" + +# This is to avoid " Error: Unable to initialize GTK+, is DISPLAY set properly?" +# when building over SSH without X11 Forwarding +# export DISPLAY=:0.0 + +# This will be the temporary wxWidgets directory +export WX_BUILD_DIR=$PARENTDIR/wxBuildConsole + +# To build wxWidgets using GTK-2 +make WXSTATIC=1 NOGUI=1 wxbuild || exit 1 +ln -s $WX_BUILD_DIR/lib $WX_BUILD_DIR/lib64 +make WXSTATIC=1 NOGUI=1 clean || exit 1 +make WXSTATIC=1 NOGUI=1 || exit 1 +make WXSTATIC=1 NOGUI=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/Console" || exit 1 + +# Uncomment below and comment lines above to reuse existing wxWidgets build +# make WXSTATIC=1 NOGUI=1 clean || exit 1 +# make WXSTATIC=1 NOGUI=1 || exit 1 +# make WXSTATIC=1 NOGUI=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/Console" || exit 1 + +echo "Creating VeraCrypt RPM packages " + +# -DCPACK_RPM_PACKAGE_DEBUG=TRUE for debugging cpack RPM +# -DCPACK_RPM_PACKAGE_DEBUG=TRUE for debugging cpack RPM + +mkdir -p $PARENTDIR/VeraCrypt_Packaging/GUI +mkdir -p $PARENTDIR/VeraCrypt_Packaging/Console + +# wxWidgets was built using GTK-2 +cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/GUI -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/GUI" -DWITHGTK3=TRUE -DNOGUI=FALSE || exit 1 +cpack --config $PARENTDIR/VeraCrypt_Packaging/GUI/CPackConfig.cmake || exit 1 +cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/Console -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/Console" -DWITHGTK3=TRUE -DNOGUI=TRUE || exit 1 +cpack --config $PARENTDIR/VeraCrypt_Packaging/Console/CPackConfig.cmake|| exit 1 diff --git a/src/Build/build_cmake_rpm.sh b/src/Build/build_cmake_rpm_gtk2.sh index 218d63c..38c66a9 100644 --- a/src/Build/build_cmake_rpm.sh +++ b/src/Build/build_cmake_rpm_gtk2.sh @@ -23,12 +23,13 @@ echo "Building GUI version of VeraCrypt for RPM using wxWidgets static libraries # This will be the temporary wxWidgets directory export WX_BUILD_DIR=$PARENTDIR/wxBuildGui -make WXSTATIC=1 WITHGTK3=1 wxbuild || exit 1 -make WXSTATIC=1 clean || exit 1 -make WXSTATIC=1 || exit 1 +# To build wxWidgets using GTK-2 +make WXSTATIC=1 wxbuild || exit 1 +make WXSTATIC=1 clean || exit 1 +make WXSTATIC=1 || exit 1 make WXSTATIC=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1 -# Uncomment below and comment line above to reuse existing wxWidgets build +# Uncomment below and comment lines above to reuse existing wxWidgets build # make WXSTATIC=1 clean || exit 1 # make WXSTATIC=1 || exit 1 # make WXSTATIC=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1 @@ -42,9 +43,10 @@ echo "Building console version of VeraCrypt for RPM using wxWidgets static libra # This will be the temporary wxWidgets directory export WX_BUILD_DIR=$PARENTDIR/wxBuildConsole -make WXSTATIC=1 WITHGTK3=1 NOGUI=1 wxbuild || exit 1 -make WXSTATIC=1 NOGUI=1 clean || exit 1 -make WXSTATIC=1 NOGUI=1 || exit 1 +# To build wxWidgets using GTK-2 +make WXSTATIC=1 NOGUI=1 wxbuild || exit 1 +make WXSTATIC=1 NOGUI=1 clean || exit 1 +make WXSTATIC=1 NOGUI=1 || exit 1 make WXSTATIC=1 NOGUI=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/Console" || exit 1 # Uncomment below and comment lines above to reuse existing wxWidgets build @@ -53,13 +55,15 @@ make WXSTATIC=1 NOGUI=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/Console" || # make WXSTATIC=1 NOGUI=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/Console" || exit 1 echo "Creating VeraCrypt RPM packages " + # -DCPACK_RPM_PACKAGE_DEBUG=TRUE for debugging cpack RPM # -DCPACK_RPM_PACKAGE_DEBUG=TRUE for debugging cpack RPM -mkdir $PARENTDIR/VeraCrypt_Packaging - -cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/GUI" -DNOGUI=FALSE || exit 1 -cpack --config $PARENTDIR/VeraCrypt_Packaging/CPackConfig.cmake || exit 1 +mkdir -p $PARENTDIR/VeraCrypt_Packaging/GUI +mkdir -p $PARENTDIR/VeraCrypt_Packaging/Console -cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/Console" -DNOGUI=TRUE || exit 1 -cpack --config $PARENTDIR/VeraCrypt_Packaging/CPackConfig.cmake|| exit 1 +# wxWidgets was built using GTK-2 +cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/GUI -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/GUI" -DWITHGTK3=FALSE -DNOGUI=FALSE || exit 1 +cpack --config $PARENTDIR/VeraCrypt_Packaging/GUI/CPackConfig.cmake || exit 1 +cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/Console -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/Console" -DWITHGTK3=FALSE -DNOGUI=TRUE || exit 1 +cpack --config $PARENTDIR/VeraCrypt_Packaging/Console/CPackConfig.cmake || exit 1 diff --git a/src/Build/build_cmake_rpm_gtk3.sh b/src/Build/build_cmake_rpm_gtk3.sh new file mode 100644 index 0000000..97091ce --- /dev/null +++ b/src/Build/build_cmake_rpm_gtk3.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +# Errors should cause script to exit +set -e + +# Absolute path to this script +export SCRIPT=$(readlink -f "$0") +# Absolute path this script is in +export SCRIPTPATH=$(dirname "$SCRIPT") +# Source directory which contains the Makefile +export SOURCEPATH=$(readlink -f "$SCRIPTPATH/..") +# Directory where the VeraCrypt has been checked out +export PARENTDIR=$(readlink -f "$SCRIPTPATH/../../..") + +# The sources of wxWidgets 3.0.4 must be extracted to the parent directory +export WX_ROOT=$PARENTDIR/wxWidgets-3.0.4 +echo "Using wxWidgets sources in $WX_ROOT" + +cd $SOURCEPATH + +echo "Building GUI version of VeraCrypt for RPM using wxWidgets static libraries" + +# This will be the temporary wxWidgets directory +export WX_BUILD_DIR=$PARENTDIR/wxBuildGui + +# To build wxWidgets using GTK-3 +make WXSTATIC=1 WITHGTK3=1 wxbuild || exit 1 +make WXSTATIC=1 clean || exit 1 +make WXSTATIC=1 || exit 1 +make WXSTATIC=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1 + +# Uncomment below and comment lines above to reuse existing wxWidgets build +# make WXSTATIC=1 clean || exit 1 +# make WXSTATIC=1 || exit 1 +# make WXSTATIC=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/GUI" || exit 1 + +echo "Building console version of VeraCrypt for RPM using wxWidgets static libraries" + +# This is to avoid " Error: Unable to initialize GTK+, is DISPLAY set properly?" +# when building over SSH without X11 Forwarding +# export DISPLAY=:0.0 + +# This will be the temporary wxWidgets directory +export WX_BUILD_DIR=$PARENTDIR/wxBuildConsole + +# To build wxWidgets using GTK-3 +make WXSTATIC=1 WITHGTK3=1 NOGUI=1 wxbuild || exit 1 +make WXSTATIC=1 NOGUI=1 clean || exit 1 +make WXSTATIC=1 NOGUI=1 || exit 1 +make WXSTATIC=1 NOGUI=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/Console" || exit 1 + +# Uncomment below and comment lines above to reuse existing wxWidgets build +# make WXSTATIC=1 NOGUI=1 clean || exit 1 +# make WXSTATIC=1 NOGUI=1 || exit 1 +# make WXSTATIC=1 NOGUI=1 install DESTDIR="$PARENTDIR/VeraCrypt_Setup/Console" || exit 1 + +echo "Creating VeraCrypt RPM packages " + +# -DCPACK_RPM_PACKAGE_DEBUG=TRUE for debugging cpack RPM +# -DCPACK_RPM_PACKAGE_DEBUG=TRUE for debugging cpack RPM + +mkdir -p $PARENTDIR/VeraCrypt_Packaging/GUI +mkdir -p $PARENTDIR/VeraCrypt_Packaging/Console + +# wxWidgets was built using GTK-3 +cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/GUI -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/GUI" -DWITHGTK3=TRUE -DNOGUI=FALSE || exit 1 +cpack --config $PARENTDIR/VeraCrypt_Packaging/GUI/CPackConfig.cmake || exit 1 +cmake -H$SCRIPTPATH -B$PARENTDIR/VeraCrypt_Packaging/Console -DVERACRYPT_BUILD_DIR="$PARENTDIR/VeraCrypt_Setup/Console" -DWITHGTK3=TRUE -DNOGUI=TRUE || exit 1 +cpack --config $PARENTDIR/VeraCrypt_Packaging/Console/CPackConfig.cmake|| exit 1 diff --git a/src/Build/build_veracrypt_freebsd.sh b/src/Build/build_veracrypt_freebsd.sh index 6dc594c..6dc594c 100644..100755 --- a/src/Build/build_veracrypt_freebsd.sh +++ b/src/Build/build_veracrypt_freebsd.sh diff --git a/src/Build/build_veracrypt_linux.sh b/src/Build/build_veracrypt_linux.sh index 013103b..013103b 100644..100755 --- a/src/Build/build_veracrypt_linux.sh +++ b/src/Build/build_veracrypt_linux.sh diff --git a/src/Build/build_veracrypt_linux_no_sse2.sh b/src/Build/build_veracrypt_linux_no_sse2.sh index 2f78418..2f78418 100644..100755 --- a/src/Build/build_veracrypt_linux_no_sse2.sh +++ b/src/Build/build_veracrypt_linux_no_sse2.sh diff --git a/src/Build/build_veracrypt_macosx.sh b/src/Build/build_veracrypt_macosx.sh index 233afb2..70a94c4 100644..100755 --- a/src/Build/build_veracrypt_macosx.sh +++ b/src/Build/build_veracrypt_macosx.sh @@ -1,5 +1,5 @@ # -# Copyright (c) 2013-2017 IDRIX +# Copyright (c) 2013-2019 IDRIX # Governed by the Apache License 2.0 the full text of which is contained # in the file License.txt included in VeraCrypt binary and source # code distribution packages. @@ -12,22 +12,22 @@ SOURCEPATH=$(cd "$(dirname "$SCRIPTPATH/../.")"; pwd) # directory where the VeraCrypt project has been checked out PARENTDIR=$(cd "$(dirname "$SCRIPTPATH/../../../.")"; pwd) -# the sources of wxWidgets 3.0.3 must be extracted to the parent directory -export WX_ROOT=$PARENTDIR/wxWidgets-3.0.4 +# the sources of wxWidgets 3.1.2 must be extracted to the parent directory (for night mode) +export WX_ROOT=$PARENTDIR/wxWidgets-3.1.2 echo "Using wxWidgets sources in $WX_ROOT" # this will be the temporary wxWidgets directory -export WX_BUILD_DIR=$PARENTDIR/wxBuild - -# define the SDK version to use. We use 10.7 by default -export VC_OSX_TARGET=10.7 -echo "Using MacOSX SDK $VC_OSX_TARGET" +export WX_BUILD_DIR=$PARENTDIR/wxBuild-3.1.2 +# define the SDK version to use and OSX minimum target. We target 10.9 by default +export VC_OSX_TARGET=10.9 +export VC_OSX_SDK=10.14 +echo "Using MacOSX SDK $VC_OSX_SDK" cd $SOURCEPATH echo "Building VeraCrypt" -make WXSTATIC=1 wxbuild && make WXSTATIC=1 clean && make WXSTATIC=1 && make WXSTATIC=1 package +make WXSTATIC=FULL wxbuild && make WXSTATIC=FULL clean && make WXSTATIC=FULL && make WXSTATIC=FULL package # Uncomment below and comment line above to reuse existing wxWidgets build -# make WXSTATIC=1 clean && make WXSTATIC=1 && make WXSTATIC=1 package
\ No newline at end of file +# make WXSTATIC=FULL clean && make WXSTATIC=FULL && make WXSTATIC=FULL package
\ No newline at end of file diff --git a/src/Build/build_veracrypt_macosx_legacy.sh b/src/Build/build_veracrypt_macosx_legacy.sh new file mode 100755 index 0000000..70226f2 --- /dev/null +++ b/src/Build/build_veracrypt_macosx_legacy.sh @@ -0,0 +1,33 @@ +# +# Copyright (c) 2013-2017 IDRIX +# Governed by the Apache License 2.0 the full text of which is contained +# in the file License.txt included in VeraCrypt binary and source +# code distribution packages. +# + +# Absolute path this script is in +SCRIPTPATH=$(cd "$(dirname "$0")"; pwd) +# source directory which contains the Makefile +SOURCEPATH=$(cd "$(dirname "$SCRIPTPATH/../.")"; pwd) +# directory where the VeraCrypt project has been checked out +PARENTDIR=$(cd "$(dirname "$SCRIPTPATH/../../../.")"; pwd) + +# the sources of wxWidgets 3.1.2 must be extracted to the parent directory +export WX_ROOT=$PARENTDIR/wxWidgets-3.1.2 +echo "Using wxWidgets sources in $WX_ROOT" +# this will be the temporary wxWidgets directory +export WX_BUILD_DIR=$PARENTDIR/wxBuild + +# define the SDK version to use. We use 10.7 by default +export VC_OSX_TARGET=10.7 +export VC_OSX_SDK=10.9 +echo "Using MacOSX SDK $VC_OSX_TARGET" + + +cd $SOURCEPATH + +echo "Building VeraCrypt" +make WXSTATIC=FULL wxbuild && make WXSTATIC=FULL clean && make WXSTATIC=FULL && make WXSTATIC=FULL package + +# Uncomment below and comment line above to reuse existing wxWidgets build +# make WXSTATIC=FULL clean && make WXSTATIC=FULL && make WXSTATIC=FULL package diff --git a/src/Common/BootEncryption.cpp b/src/Common/BootEncryption.cpp index 4061bde..583a8cb 100644 --- a/src/Common/BootEncryption.cpp +++ b/src/Common/BootEncryption.cpp @@ -1030,7 +1030,7 @@ namespace VeraCrypt static EfiBoot EfiBootInst; - BootEncryption::BootEncryption (HWND parent, bool postOOBE) + BootEncryption::BootEncryption (HWND parent, bool postOOBE, bool setBootNext) : DriveConfigValid (false), ParentWindow (parent), RealSystemDriveSizeValid (false), @@ -1041,7 +1041,8 @@ namespace VeraCrypt SelectedEncryptionAlgorithmId (0), SelectedPrfAlgorithmId (0), VolumeHeaderValid (false), - PostOOBEMode (postOOBE) + PostOOBEMode (postOOBE), + SetBootNext (setBootNext) { HiddenOSCandidatePartition.IsGPT = FALSE; HiddenOSCandidatePartition.Number = (size_t) -1; @@ -2364,6 +2365,35 @@ namespace VeraCrypt WriteConfigInteger (configFile, configContent, "AuthorizeRetry", authorizeRetry); WriteConfigInteger (configFile, configContent, "DcsBmlLockFlags", bmlLockFlags); WriteConfigInteger (configFile, configContent, "DcsBmlDriver", bmlDriverEnabled); + + string fieldValue; + if (IsPostExecFileField(actionSuccessValue, fieldValue) && (0 == _stricmp(fieldValue.c_str(), "\\EFI\\Microsoft\\Boot\\bootmgfw.efi"))) + { + // fix wrong configuration file since bootmgfw.efi is now a copy of VeraCrypt and if we don't fix the DcsProp + // file, veraCrypt bootloader will call itself + // We first check if bootmgfw.efi is original Microsoft one. If yes, we don't do anything, otherwise we set the field to bootmgfw_ms.vc + unsigned __int64 loaderSize = 0; + bool bModifiedMsBoot = true; + EfiBootInst.GetFileSize(L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi", loaderSize); + + if (loaderSize > 32768) + { + std::vector<byte> bootLoaderBuf ((size_t) loaderSize); + + EfiBootInst.ReadFile(L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi", &bootLoaderBuf[0], (DWORD) loaderSize); + + // look for bootmgfw.efi identifiant string + const char* g_szMsBootString = "bootmgfw.pdb"; + if (BufferHasPattern (bootLoaderBuf.data (), (size_t) loaderSize, g_szMsBootString, strlen (g_szMsBootString))) + { + bModifiedMsBoot = false; + } + } + + if (bModifiedMsBoot) + actionSuccessValue = "postexec file(EFI\\Microsoft\\Boot\\bootmgfw_ms.vc)"; + } + WriteConfigString (configFile, configContent, "ActionSuccess", actionSuccessValue.c_str()); // Write unmodified values @@ -2396,12 +2426,62 @@ namespace VeraCrypt return bRet; } + BOOL EfiBootConf::IsPostExecFileField (const string& fieldValue, string& filePath) + { + BOOL bRet = FALSE; + filePath = ""; + + if (!fieldValue.empty() && strlen (fieldValue.c_str())) + { + string copieValue = fieldValue; + std::transform(copieValue.begin(), copieValue.end(), copieValue.begin(), ::tolower); + + if (strstr (copieValue.c_str(), "postexec") && strstr (copieValue.c_str(), "file(")) + { + char c; + const char* ptr = strstr (copieValue.c_str(), "file("); + + filePath = "\\"; + ptr += 5; + while ((c = *ptr)) + { + if (c == ')') + break; + if (c == '/') + c = '\\'; + filePath += c; + ptr++; + } + + if (c == ')') + bRet = TRUE; + else + filePath = ""; + } + } + + return bRet; + } + + BOOL EfiBootConf::IsPostExecFileField (const string& fieldValue, wstring& filePath) + { + string aPath; + BOOL bRet = IsPostExecFileField (fieldValue, aPath); + if (bRet) + filePath = wstring(aPath.begin(), aPath.end()); + else + filePath = L""; + + return bRet; + } + static const wchar_t* EfiVarGuid = L"{8BE4DF61-93CA-11D2-AA0D-00E098032B8C}"; void - GetVolumeESP(wstring& path) + GetVolumeESP(wstring& path, wstring& bootVolumePath) { static wstring g_EspPath; + static wstring g_BootVolumePath; static bool g_EspPathInitialized = false; if (!g_EspPathInitialized) @@ -2422,17 +2502,29 @@ namespace VeraCrypt res = NtQuerySystemInformationPtr((SYSTEM_INFORMATION_CLASS)SYSPARTITIONINFORMATION, tempBuf, sizeof(tempBuf), &len); if (res != S_OK) { + /* try to convert the returned NTSTATUS to a WIN32 system error using RtlNtStatusToDosError */ + RtlNtStatusToDosErrorFn RtlNtStatusToDosErrorPtr = (RtlNtStatusToDosErrorFn) GetProcAddress (GetModuleHandle (L"ntdll.dll"), "RtlNtStatusToDosError"); + if (RtlNtStatusToDosErrorPtr) + { + ULONG win32err = RtlNtStatusToDosErrorPtr (res); + if (win32err != ERROR_MR_MID_NOT_FOUND) + res = (NTSTATUS) win32err; + } + SetLastError (res); throw SystemException (SRC_POS); } PUNICODE_STRING pStr = (PUNICODE_STRING) tempBuf; + + g_BootVolumePath = pStr->Buffer; g_EspPath = L"\\\\?"; g_EspPath += &pStr->Buffer[7]; g_EspPathInitialized = true; } path = g_EspPath; + bootVolumePath = g_BootVolumePath; } std::string ReadESPFile (LPCWSTR szFilePath, bool bSkipUTF8BOM) @@ -2442,9 +2534,9 @@ namespace VeraCrypt ByteArray fileContent; DWORD dwSize = 0, dwOffset = 0; - std::wstring pathESP; + std::wstring pathESP, bootVolumePath; - GetVolumeESP(pathESP); + GetVolumeESP(pathESP, bootVolumePath); if (szFilePath[0] != L'\\') pathESP += L"\\"; File f(pathESP + szFilePath, true); @@ -2473,7 +2565,7 @@ namespace VeraCrypt ByteArray fileContent; DWORD dwSize = dwDataLen, dwOffset = 0; - std::wstring pathESP; + std::wstring pathESP, bootVolumePath; if (bAddUTF8BOM) { @@ -2481,7 +2573,7 @@ namespace VeraCrypt dwOffset = 3; } - GetVolumeESP(pathESP); + GetVolumeESP(pathESP, bootVolumePath); if (szFilePath[0] != L'\\') pathESP += L"\\"; @@ -2500,42 +2592,13 @@ namespace VeraCrypt ZeroMemory (&sdn, sizeof (sdn)); ZeroMemory (&partInfo, sizeof (partInfo)); m_bMounted = false; - bBootVolumePathSelected = false; + bDeviceInfoValid = false; } - void EfiBoot::SelectBootVolumeESP() { - NTSTATUS res; - ULONG len; - memset(tempBuf, 0, sizeof(tempBuf)); - - // Load NtQuerySystemInformation function point - if (!NtQuerySystemInformationPtr) - { - NtQuerySystemInformationPtr = (NtQuerySystemInformationFn) GetProcAddress (GetModuleHandle (L"ntdll.dll"), "NtQuerySystemInformation"); - if (!NtQuerySystemInformationPtr) - throw SystemException (SRC_POS); - } - - res = NtQuerySystemInformationPtr((SYSTEM_INFORMATION_CLASS)SYSPARTITIONINFORMATION, tempBuf, sizeof(tempBuf), &len); - if (res != S_OK) - { - SetLastError (res); - throw SystemException (SRC_POS); - } - - PUNICODE_STRING pStr = (PUNICODE_STRING) tempBuf; - BootVolumePath = pStr->Buffer; - - EfiBootPartPath = L"\\\\?"; - EfiBootPartPath += &pStr->Buffer[7]; - - bBootVolumePathSelected = true; - } + void EfiBoot::PrepareBootPartition(bool bDisableException) { + + GetVolumeESP (EfiBootPartPath, BootVolumePath); - void EfiBoot::PrepareBootPartition() { - if (!bBootVolumePathSelected) { - SelectBootVolumeESP(); - } std::wstring devicePath = L"\\\\?\\GLOBALROOT"; devicePath += BootVolumePath; Device dev(devicePath.c_str(), TRUE); @@ -2546,18 +2609,22 @@ namespace VeraCrypt } catch (...) { - throw; + if (!bDisableException) + throw; } - bool bSuccess = dev.IoCtl(IOCTL_STORAGE_GET_DEVICE_NUMBER, NULL, 0, &sdn, sizeof(sdn)) - && dev.IoCtl(IOCTL_DISK_GET_PARTITION_INFO_EX, NULL, 0, &partInfo, sizeof(partInfo)); - DWORD dwLastError = GetLastError (); - dev.Close(); - if (!bSuccess) + if (dev.IsOpened()) { - SetLastError (dwLastError); - throw SystemException(SRC_POS); - } + bDeviceInfoValid = dev.IoCtl(IOCTL_STORAGE_GET_DEVICE_NUMBER, NULL, 0, &sdn, sizeof(sdn)) + && dev.IoCtl(IOCTL_DISK_GET_PARTITION_INFO_EX, NULL, 0, &partInfo, sizeof(partInfo)); + DWORD dwLastError = GetLastError (); + dev.Close(); + if (!bDeviceInfoValid && !bDisableException) + { + SetLastError (dwLastError); + throw SystemException(SRC_POS); + } + } } bool EfiBoot::IsEfiBoot() { @@ -2615,98 +2682,107 @@ namespace VeraCrypt } } - void EfiBoot::SetStartExec(wstring description, wstring execPath, uint16 statrtOrderNum , wchar_t* type, uint32 attr) { + void EfiBoot::SetStartExec(wstring description, wstring execPath, bool setBootNext, uint16 statrtOrderNum , wchar_t* type, uint32 attr) { SetPrivilege(SE_SYSTEM_ENVIRONMENT_NAME, TRUE); // Check EFI if (!IsEfiBoot()) { throw ErrorException(L"can not detect EFI environment", SRC_POS); } - uint32 varSize = 56; - varSize += ((uint32) description.length()) * 2 + 2; - varSize += ((uint32) execPath.length()) * 2 + 2; - byte *startVar = new byte[varSize]; - byte *pVar = startVar; - - // Attributes (1b Active, 1000b - Hidden) - *(uint32 *)pVar = attr; - pVar += sizeof(uint32); - - // Size Of device path + file path - *(uint16 *)pVar = (uint16)(50 + execPath.length() * 2 + 2); - pVar += sizeof(uint16); - - // description - for (uint32 i = 0; i < description.length(); i++) { - *(uint16 *)pVar = description[i]; + if (bDeviceInfoValid) + { + uint32 varSize = 56; + varSize += ((uint32) description.length()) * 2 + 2; + varSize += ((uint32) execPath.length()) * 2 + 2; + byte *startVar = new byte[varSize]; + byte *pVar = startVar; + + // Attributes (1b Active, 1000b - Hidden) + *(uint32 *)pVar = attr; + pVar += sizeof(uint32); + + // Size Of device path + file path + *(uint16 *)pVar = (uint16)(50 + execPath.length() * 2 + 2); + pVar += sizeof(uint16); + + // description + for (uint32 i = 0; i < description.length(); i++) { + *(uint16 *)pVar = description[i]; + pVar += sizeof(uint16); + } + *(uint16 *)pVar = 0; pVar += sizeof(uint16); - } - *(uint16 *)pVar = 0; - pVar += sizeof(uint16); - /* EFI_DEVICE_PATH_PROTOCOL (HARDDRIVE_DEVICE_PATH \ FILE_PATH \ END) */ + /* EFI_DEVICE_PATH_PROTOCOL (HARDDRIVE_DEVICE_PATH \ FILE_PATH \ END) */ - // Type - *(byte *)pVar = 0x04; - pVar += sizeof(byte); + // Type + *(byte *)pVar = 0x04; + pVar += sizeof(byte); - // SubType - *(byte *)pVar = 0x01; - pVar += sizeof(byte); + // SubType + *(byte *)pVar = 0x01; + pVar += sizeof(byte); - // HDD dev path length - *(uint16 *)pVar = 0x2A; // 42 - pVar += sizeof(uint16); + // HDD dev path length + *(uint16 *)pVar = 0x2A; // 42 + pVar += sizeof(uint16); - // PartitionNumber - *(uint32 *)pVar = (uint32)partInfo.PartitionNumber; - pVar += sizeof(uint32); + // PartitionNumber + *(uint32 *)pVar = (uint32)partInfo.PartitionNumber; + pVar += sizeof(uint32); - // PartitionStart - *(uint64 *)pVar = partInfo.StartingOffset.QuadPart >> 9; - pVar += sizeof(uint64); + // PartitionStart + *(uint64 *)pVar = partInfo.StartingOffset.QuadPart >> 9; + pVar += sizeof(uint64); - // PartitiontSize - *(uint64 *)pVar = partInfo.PartitionLength.QuadPart >> 9; - pVar += sizeof(uint64); + // PartitiontSize + *(uint64 *)pVar = partInfo.PartitionLength.QuadPart >> 9; + pVar += sizeof(uint64); - // GptGuid - memcpy(pVar, &partInfo.Gpt.PartitionId, 16); - pVar += 16; + // GptGuid + memcpy(pVar, &partInfo.Gpt.PartitionId, 16); + pVar += 16; - // MbrType - *(byte *)pVar = 0x02; - pVar += sizeof(byte); + // MbrType + *(byte *)pVar = 0x02; + pVar += sizeof(byte); - // SigType - *(byte *)pVar = 0x02; - pVar += sizeof(byte); + // SigType + *(byte *)pVar = 0x02; + pVar += sizeof(byte); - // Type and sub type 04 04 (file path) - *(uint16 *)pVar = 0x0404; - pVar += sizeof(uint16); + // Type and sub type 04 04 (file path) + *(uint16 *)pVar = 0x0404; + pVar += sizeof(uint16); - // SizeOfFilePath ((CHAR16)FullPath.length + sizeof(EndOfrecord marker) ) - *(uint16 *)pVar = (uint16)(execPath.length() * 2 + 2 + sizeof(uint32)); - pVar += sizeof(uint16); + // SizeOfFilePath ((CHAR16)FullPath.length + sizeof(EndOfrecord marker) ) + *(uint16 *)pVar = (uint16)(execPath.length() * 2 + 2 + sizeof(uint32)); + pVar += sizeof(uint16); - // FilePath - for (uint32 i = 0; i < execPath.length(); i++) { - *(uint16 *)pVar = execPath[i]; + // FilePath + for (uint32 i = 0; i < execPath.length(); i++) { + *(uint16 *)pVar = execPath[i]; + pVar += sizeof(uint16); + } + *(uint16 *)pVar = 0; pVar += sizeof(uint16); - } - *(uint16 *)pVar = 0; - pVar += sizeof(uint16); - // EndOfrecord - *(uint32 *)pVar = 0x04ff7f; - pVar += sizeof(uint32); + // EndOfrecord + *(uint32 *)pVar = 0x04ff7f; + pVar += sizeof(uint32); - // Set variable - wchar_t varName[256]; - StringCchPrintfW(varName, ARRAYSIZE (varName), L"%s%04X", type == NULL ? L"Boot" : type, statrtOrderNum); - SetFirmwareEnvironmentVariable(varName, EfiVarGuid, startVar, varSize); - delete [] startVar; + // Set variable + wchar_t varName[256]; + StringCchPrintfW(varName, ARRAYSIZE (varName), L"%s%04X", type == NULL ? L"Boot" : type, statrtOrderNum); + + // only set value if it doesn't already exist + byte* existingVar = new byte[varSize]; + DWORD existingVarLen = GetFirmwareEnvironmentVariableW (varName, EfiVarGuid, existingVar, varSize); + if ((existingVarLen != varSize) || (0 != memcmp (existingVar, startVar, varSize))) + SetFirmwareEnvironmentVariable(varName, EfiVarGuid, startVar, varSize); + delete [] startVar; + delete [] existingVar; + } // Update order wstring order = L"Order"; @@ -2725,12 +2801,15 @@ namespace VeraCrypt // Create new entry if absent if (startOrderNumPos == UINT_MAX) { - for (uint32 i = startOrderLen / 2; i > 0; --i) { - startOrder[i] = startOrder[i - 1]; + if (bDeviceInfoValid) + { + for (uint32 i = startOrderLen / 2; i > 0; --i) { + startOrder[i] = startOrder[i - 1]; + } + startOrder[0] = statrtOrderNum; + startOrderLen += 2; + startOrderUpdate = true; } - startOrder[0] = statrtOrderNum; - startOrderLen += 2; - startOrderUpdate = true; } else if (startOrderNumPos > 0) { for (uint32 i = startOrderNumPos; i > 0; --i) { startOrder[i] = startOrder[i - 1]; @@ -2743,22 +2822,131 @@ namespace VeraCrypt SetFirmwareEnvironmentVariable(order.c_str(), EfiVarGuid, startOrder, startOrderLen); } - // set BootNext value - wstring next = L"Next"; - next.insert(0, type == NULL ? L"Boot" : type); + if (setBootNext) + { + // set BootNext value + wstring next = L"Next"; + next.insert(0, type == NULL ? L"Boot" : type); + + SetFirmwareEnvironmentVariable(next.c_str(), EfiVarGuid, &statrtOrderNum, 2); + + } + } + + bool EfiBoot::CompareFiles (const wchar_t* fileName1, const wchar_t* fileName2) + { + bool bRet = false; + File f1 (fileName1, true); + File f2 (fileName2, true); + + if (f1.IsOpened() && f2.IsOpened()) + { + try + { + DWORD size1, size2; + f1.GetFileSize (size1); + f2.GetFileSize (size2); + + if (size1 == size2) + { + // same size, so now we compare content + std::vector<byte> file1Buf (8096); + std::vector<byte> file2Buf (8096); + DWORD remainingBytes = size1, dataToRead; + + while (remainingBytes) + { + dataToRead = VC_MIN (remainingBytes, (DWORD) file1Buf.size()); + DWORD f1Bytes = f1.Read (file1Buf.data(), dataToRead); + DWORD f2Bytes = f2.Read (file2Buf.data(), dataToRead); + + if ((f1Bytes != f2Bytes) || memcmp (file1Buf.data(), file2Buf.data(), (size_t) f1Bytes)) + { + break; + } + else + { + remainingBytes -= f1Bytes; + } + } + + if (0 == remainingBytes) + { + // content is the same + bRet = true; + } + } + } + catch (...) {} + } + + f1.Close(); + f2.Close(); + + return bRet; + } + + bool EfiBoot::CompareFileData (const wchar_t* fileName, const byte* data, DWORD size) + { + bool bRet = false; + + File f(fileName, true); + if (f.IsOpened ()) + { + try + { + // check if the file has the same content + // if yes, don't perform any write operation to avoid changing its timestamp + DWORD existingSize = 0; + + f.GetFileSize(existingSize); + + if (existingSize == size) + { + std::vector<byte> fileBuf (8096); + DWORD remainingBytes = size, dataOffset = 0, dataToRead; - SetFirmwareEnvironmentVariable(next.c_str(), EfiVarGuid, &statrtOrderNum, 2); + while (remainingBytes) + { + dataToRead = VC_MIN (remainingBytes, (DWORD) fileBuf.size()); + dataToRead = f.Read (fileBuf.data(), dataToRead); + if (memcmp (data + dataOffset, fileBuf.data(), (size_t) dataToRead)) + { + break; + } + else + { + dataOffset += dataToRead; + remainingBytes -= dataToRead; + } + } + + if (0 == remainingBytes) + { + // content is the same + bRet = true; + } + } + } + catch (...){} + } + + f.Close(); + + return bRet; } void EfiBoot::SaveFile(const wchar_t* name, byte* data, DWORD size) { wstring path = EfiBootPartPath; path += name; - File f(path, false, true); - f.Write(data, size); - f.Close(); - + if (!CompareFileData (path.c_str(), data, size)) + { + File f(path, false, true); + f.Write(data, size); + f.Close(); + } } bool EfiBoot::FileExists(const wchar_t* name) { @@ -2797,7 +2985,10 @@ namespace VeraCrypt } else targetPath = targetName; - throw_sys_if (!::CopyFileW (path.c_str(), targetPath.c_str(), FALSE)); + + // if both files are the same, we don't perform copy operation + if (!CompareFiles (path.c_str(), targetPath.c_str())) + throw_sys_if (!::CopyFileW (path.c_str(), targetPath.c_str(), FALSE)); } BOOL EfiBoot::RenameFile(const wchar_t* name, const wchar_t* nameNew, BOOL bForce) { @@ -2805,7 +2996,16 @@ namespace VeraCrypt path += name; wstring pathNew = EfiBootPartPath; pathNew += nameNew; - return MoveFileExW(path.c_str(), pathNew.c_str(), bForce? MOVEFILE_REPLACE_EXISTING : 0); + + BOOL bRet; + if (CompareFiles (path.c_str(), pathNew.c_str())) + { + // files identical. Delete source file only + bRet = DeleteFile (path.c_str()); + } + else + bRet = MoveFileExW(path.c_str(), pathNew.c_str(), bForce? MOVEFILE_REPLACE_EXISTING : 0); + return bRet; } BOOL EfiBoot::DelFile(const wchar_t* name) { @@ -2955,20 +3155,69 @@ namespace VeraCrypt if (bForInstall) { + /* Before updating files, we check first if they already have the expected content. If yes, then we don't perform + * any write operation to avoid modifying file timestamps Unnecessarily. + */ + bool bSkipWrite = false; + wchar_t wszBuffer [2 * TC_MAX_PATH] = {0}; wstring szPathParam = L"\""; szPathParam += szInstallPath; szPathParam += L"\""; - WritePrivateProfileStringW (L"SetupConfig", L"ReflectDrivers", szPathParam.c_str(), szSetupconfigLocation); + if ( (0 < GetPrivateProfileStringW (L"SetupConfig", L"ReflectDrivers", L"", wszBuffer, ARRAYSIZE (wszBuffer), szSetupconfigLocation)) + && (_wcsicmp (wszBuffer, szInstallPath) == 0) + ) + { + bSkipWrite = true; + } + + if (!bSkipWrite) + WritePrivateProfileStringW (L"SetupConfig", L"ReflectDrivers", szPathParam.c_str(), szSetupconfigLocation); + + bSkipWrite = false; szPathParam = GetProgramConfigPath (L"SetupComplete.cmd"); - FILE* scriptFile = _wfopen (szPathParam.c_str(), L"w"); + + wstring wszExpectedValue = L"\""; + wszExpectedValue += szInstallPath; + wszExpectedValue += L"\\VeraCrypt.exe\" /PostOOBE"; + + FILE* scriptFile = _wfopen (szPathParam.c_str(), L"r"); if (scriptFile) { - fwprintf (scriptFile, L"\"%s\\VeraCrypt.exe\" /PostOOBE\n", szInstallPath); + long fileSize = _filelength (_fileno (scriptFile)); + if (fileSize < (2 * TC_MAX_PATH)) + { + fgetws (wszBuffer, ARRAYSIZE (wszBuffer), scriptFile); + + if (wszBuffer[wcslen (wszBuffer) - 1] == L'\n') + wszBuffer[wcslen (wszBuffer) - 1] = 0; + + bSkipWrite = (0 == _wcsicmp (wszBuffer, wszExpectedValue.c_str())); + } fclose (scriptFile); + } - WritePrivateProfileStringW (L"SetupConfig", L"PostOOBE", szPathParam.c_str(), szSetupconfigLocation); + if (!bSkipWrite) + { + scriptFile = _wfopen (szPathParam.c_str(), L"w"); + if (scriptFile) + { + fwprintf (scriptFile, L"%s\n", wszExpectedValue.c_str()); + fclose (scriptFile); + } + } + + bSkipWrite = false; + + if ( (0 < GetPrivateProfileStringW (L"SetupConfig", L"PostOOBE", L"", wszBuffer, ARRAYSIZE (wszBuffer), szSetupconfigLocation)) + && (_wcsicmp (wszBuffer, szPathParam.c_str()) == 0) + ) + { + bSkipWrite = true; } + + if (!bSkipWrite) + WritePrivateProfileStringW (L"SetupConfig", L"PostOOBE", szPathParam.c_str(), szSetupconfigLocation); } else { @@ -3063,7 +3312,7 @@ namespace VeraCrypt if (!DcsInfoImg) throw ErrorException(L"Out of resource DcsInfo", SRC_POS); - EfiBootInst.PrepareBootPartition(); + EfiBootInst.PrepareBootPartition(PostOOBEMode); try { @@ -3076,8 +3325,15 @@ namespace VeraCrypt if (preserveUserConfig) { - bool bModifiedMsBoot = true; - EfiBootInst.GetFileSize(L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi", loaderSize); + bool bModifiedMsBoot = true, bMissingMsBoot = false;; + if (EfiBootInst.FileExists (L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi")) + EfiBootInst.GetFileSize(L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi", loaderSize); + else + bMissingMsBoot = true; + + // restore boot menu entry in case of PostOOBE + if (PostOOBEMode) + EfiBootInst.SetStartExec(L"VeraCrypt BootLoader (DcsBoot)", L"\\EFI\\VeraCrypt\\DcsBoot.efi", SetBootNext); if (EfiBootInst.FileExists (L"\\EFI\\Microsoft\\Boot\\bootmgfw_ms.vc")) { @@ -3120,37 +3376,40 @@ namespace VeraCrypt EfiBootConf conf; if (EfiBootInst.ReadConfig (L"\\EFI\\VeraCrypt\\DcsProp", conf) && strlen (conf.actionSuccessValue.c_str())) { - string actionValue = conf.actionSuccessValue; - std::transform(actionValue.begin(), actionValue.end(), actionValue.begin(), ::tolower); - - if (strstr (actionValue.c_str(), "postexec") && strstr (actionValue.c_str(), "file(")) + wstring loaderPath; + if (EfiBootConf::IsPostExecFileField (conf.actionSuccessValue, loaderPath)) { - char c; - const char* ptr = strstr (actionValue.c_str(), "file("); - ptr += 5; - wstring loaderPath = L"\\"; - while ((c = *ptr)) + // check that it is not bootmgfw.efi + if ( (0 != _wcsicmp (loaderPath.c_str(), L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi")) + && (EfiBootInst.FileExists (loaderPath.c_str())) + ) { - if (c == ')' || c == ' ') - break; - loaderPath += (wchar_t) c; - ptr++; + // look for bootmgfw.efi identifiant string + EfiBootInst.GetFileSize(loaderPath.c_str(), loaderSize); + std::vector<byte> bootLoaderBuf ((size_t) loaderSize); + + EfiBootInst.ReadFile(loaderPath.c_str(), &bootLoaderBuf[0], (DWORD) loaderSize); + + // look for bootmgfw.efi identifiant string + if (BufferHasPattern (bootLoaderBuf.data (), (size_t) loaderSize, g_szMsBootString, strlen (g_szMsBootString))) + { + bFound = true; + EfiBootInst.RenameFile(loaderPath.c_str(), L"\\EFI\\Microsoft\\Boot\\bootmgfw_ms.vc", TRUE); + } } - bFound = true; - EfiBootInst.RenameFile(loaderPath.c_str(), L"\\EFI\\Microsoft\\Boot\\bootmgfw_ms.vc", TRUE); } } - if (!bFound) + if (!bFound && !PostOOBEMode) throw ErrorException ("WINDOWS_EFI_BOOT_LOADER_MISSING", SRC_POS); } } - if (PostOOBEMode) - { + if (PostOOBEMode && EfiBootInst.FileExists (L"\\EFI\\VeraCrypt\\DcsBoot.efi")) + { // check if bootmgfw.efi has been set again to Microsoft version // if yes, replace it with our bootloader after it was copied to bootmgfw_ms.vc - if (!bModifiedMsBoot) + if (!bModifiedMsBoot || bMissingMsBoot) EfiBootInst.CopyFile (L"\\EFI\\VeraCrypt\\DcsBoot.efi", L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi"); if (EfiBootInst.FileExists (szStdEfiBootloader)) @@ -3244,50 +3503,65 @@ namespace VeraCrypt } else { - byte bootLoaderBuf[TC_BOOT_LOADER_AREA_SIZE - TC_BOOT_ENCRYPTION_VOLUME_HEADER_SIZE] = {0}; - CreateBootLoaderInMemory (bootLoaderBuf, sizeof (bootLoaderBuf), false, hiddenOSCreation); + try + { + byte bootLoaderBuf[TC_BOOT_LOADER_AREA_SIZE - TC_BOOT_ENCRYPTION_VOLUME_HEADER_SIZE] = {0}; + CreateBootLoaderInMemory (bootLoaderBuf, sizeof (bootLoaderBuf), false, hiddenOSCreation); - // Write MBR - byte mbr[TC_SECTOR_SIZE_BIOS]; + // Write MBR + byte mbr[TC_SECTOR_SIZE_BIOS]; - device.SeekAt (0); - device.Read (mbr, sizeof (mbr)); + device.SeekAt (0); + device.Read (mbr, sizeof (mbr)); - if (preserveUserConfig && BufferContainsString (mbr, sizeof (mbr), TC_APP_NAME)) - { - uint16 version = BE16 (*(uint16 *) (mbr + TC_BOOT_SECTOR_VERSION_OFFSET)); - if (version != 0) + if (preserveUserConfig && BufferContainsString (mbr, sizeof (mbr), TC_APP_NAME)) { - bootLoaderBuf[TC_BOOT_SECTOR_USER_CONFIG_OFFSET] = mbr[TC_BOOT_SECTOR_USER_CONFIG_OFFSET]; - memcpy (bootLoaderBuf + TC_BOOT_SECTOR_USER_MESSAGE_OFFSET, mbr + TC_BOOT_SECTOR_USER_MESSAGE_OFFSET, TC_BOOT_SECTOR_USER_MESSAGE_MAX_LENGTH); - - if (bootLoaderBuf[TC_BOOT_SECTOR_USER_CONFIG_OFFSET] & TC_BOOT_USER_CFG_FLAG_DISABLE_PIM) + uint16 version = BE16 (*(uint16 *) (mbr + TC_BOOT_SECTOR_VERSION_OFFSET)); + if (version != 0) { - if (pim >= 0) + bootLoaderBuf[TC_BOOT_SECTOR_USER_CONFIG_OFFSET] = mbr[TC_BOOT_SECTOR_USER_CONFIG_OFFSET]; + memcpy (bootLoaderBuf + TC_BOOT_SECTOR_USER_MESSAGE_OFFSET, mbr + TC_BOOT_SECTOR_USER_MESSAGE_OFFSET, TC_BOOT_SECTOR_USER_MESSAGE_MAX_LENGTH); + + if (bootLoaderBuf[TC_BOOT_SECTOR_USER_CONFIG_OFFSET] & TC_BOOT_USER_CFG_FLAG_DISABLE_PIM) { - memcpy (bootLoaderBuf + TC_BOOT_SECTOR_PIM_VALUE_OFFSET, &pim, TC_BOOT_SECTOR_PIM_VALUE_SIZE); + if (pim >= 0) + { + memcpy (bootLoaderBuf + TC_BOOT_SECTOR_PIM_VALUE_OFFSET, &pim, TC_BOOT_SECTOR_PIM_VALUE_SIZE); + } + else + memcpy (bootLoaderBuf + TC_BOOT_SECTOR_PIM_VALUE_OFFSET, mbr + TC_BOOT_SECTOR_PIM_VALUE_OFFSET, TC_BOOT_SECTOR_PIM_VALUE_SIZE); } - else - memcpy (bootLoaderBuf + TC_BOOT_SECTOR_PIM_VALUE_OFFSET, mbr + TC_BOOT_SECTOR_PIM_VALUE_OFFSET, TC_BOOT_SECTOR_PIM_VALUE_SIZE); } } - } - memcpy (mbr, bootLoaderBuf, TC_MAX_MBR_BOOT_CODE_SIZE); + // perform actual write only if content is different + if (memcmp (mbr, bootLoaderBuf, TC_MAX_MBR_BOOT_CODE_SIZE)) + { + memcpy (mbr, bootLoaderBuf, TC_MAX_MBR_BOOT_CODE_SIZE); - device.SeekAt (0); - device.Write (mbr, sizeof (mbr)); + device.SeekAt (0); + device.Write (mbr, sizeof (mbr)); - byte mbrVerificationBuf[TC_SECTOR_SIZE_BIOS]; - device.SeekAt (0); - device.Read (mbrVerificationBuf, sizeof (mbr)); + byte mbrVerificationBuf[TC_SECTOR_SIZE_BIOS]; + device.SeekAt (0); + device.Read (mbrVerificationBuf, sizeof (mbr)); - if (memcmp (mbr, mbrVerificationBuf, sizeof (mbr)) != 0) - throw ErrorException ("ERROR_MBR_PROTECTED", SRC_POS); + if (memcmp (mbr, mbrVerificationBuf, sizeof (mbr)) != 0) + throw ErrorException ("ERROR_MBR_PROTECTED", SRC_POS); + } - // Write boot loader - device.SeekAt (TC_SECTOR_SIZE_BIOS); - device.Write (bootLoaderBuf + TC_SECTOR_SIZE_BIOS, sizeof (bootLoaderBuf) - TC_SECTOR_SIZE_BIOS); + if (!PostOOBEMode) + { + // Write boot loader + device.SeekAt (TC_SECTOR_SIZE_BIOS); + device.Write (bootLoaderBuf + TC_SECTOR_SIZE_BIOS, sizeof (bootLoaderBuf) - TC_SECTOR_SIZE_BIOS); + } + } + catch (...) + { + if (!PostOOBEMode) + throw; + } } if (!IsAdmin() && IsUacSupported()) @@ -3441,16 +3715,23 @@ namespace VeraCrypt if (!DcsInfoImg) throw ParameterIncorrect (SRC_POS); - char szTmpPath[MAX_PATH + 1], szTmpFilePath[MAX_PATH + 1]; - if (!GetTempPathA (MAX_PATH, szTmpPath)) + WCHAR szTmpPath[MAX_PATH + 1], szTmpFilePath[MAX_PATH + 1]; + if (!GetTempPathW (MAX_PATH, szTmpPath)) throw SystemException (SRC_POS); - if (!GetTempFileNameA (szTmpPath, "_vrd", 0, szTmpFilePath)) + if (!GetTempFileNameW (szTmpPath, L"_vrd", 0, szTmpFilePath)) throw SystemException (SRC_POS); - finally_do_arg (char*, szTmpFilePath, { DeleteFileA (finally_arg);}); + finally_do_arg (WCHAR*, szTmpFilePath, { DeleteFileW (finally_arg);}); int ierr; - zip_t* z = zip_open (szTmpFilePath, ZIP_CREATE | ZIP_TRUNCATE | ZIP_CHECKCONS, &ierr); + + // convert szTmpFilePath to UTF-8 since this is what zip_open expected + char szUtf8Path[2*MAX_PATH + 1]; + int utf8Len = WideCharToMultiByte (CP_UTF8, 0, szTmpFilePath, -1, szUtf8Path, sizeof (szUtf8Path), NULL, NULL); + if (utf8Len <= 0) + throw SystemException (SRC_POS); + + zip_t* z = zip_open (szUtf8Path, ZIP_CREATE | ZIP_TRUNCATE | ZIP_CHECKCONS, &ierr); if (!z) throw ParameterIncorrect (SRC_POS); @@ -3542,7 +3823,7 @@ namespace VeraCrypt z = NULL; // read the zip data from the temporary file - FILE* ftmpFile = fopen (szTmpFilePath, "rb"); + FILE* ftmpFile = _wfopen (szTmpFilePath, L"rb"); if (!ftmpFile) throw ParameterIncorrect (SRC_POS); @@ -4230,24 +4511,27 @@ namespace VeraCrypt EfiBootConf conf; if (EfiBootInst.ReadConfig (L"\\EFI\\VeraCrypt\\DcsProp", conf) && strlen (conf.actionSuccessValue.c_str())) { - string actionValue = conf.actionSuccessValue; - std::transform(actionValue.begin(), actionValue.end(), actionValue.begin(), ::tolower); - - if (strstr (actionValue.c_str(), "postexec") && strstr (actionValue.c_str(), "file(")) + wstring loaderPath; + if (EfiBootConf::IsPostExecFileField (conf.actionSuccessValue, loaderPath)) { - char c; - const char* ptr = strstr (actionValue.c_str(), "file("); - ptr += 5; - wstring loaderPath = L"\\"; - while ((c = *ptr)) + // check that it is not bootmgfw_ms.vc or bootmgfw.efi + if ( (0 != _wcsicmp (loaderPath.c_str(), L"\\EFI\\Microsoft\\Boot\\bootmgfw_ms.vc")) + && (0 != _wcsicmp (loaderPath.c_str(), L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi")) + ) { - if (c == ')' || c == ' ') - break; - loaderPath += (wchar_t) c; - ptr++; - } + const char* g_szMsBootString = "bootmgfw.pdb"; + unsigned __int64 loaderSize = 0; + EfiBootInst.GetFileSize(loaderPath.c_str(), loaderSize); + std::vector<byte> bootLoaderBuf ((size_t) loaderSize); - EfiBootInst.RenameFile(loaderPath.c_str(), L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi", TRUE); + EfiBootInst.ReadFile(loaderPath.c_str(), &bootLoaderBuf[0], (DWORD) loaderSize); + + // look for bootmgfw.efi identifiant string + if (BufferHasPattern (bootLoaderBuf.data (), (size_t) loaderSize, g_szMsBootString, strlen (g_szMsBootString))) + { + EfiBootInst.RenameFile(loaderPath.c_str(), L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi", TRUE); + } + } } } } @@ -4567,6 +4851,16 @@ namespace VeraCrypt if (registerService) { + // check if service already exists. + // If yes then start it immediatly after reinstalling it + bool bAlreadyExists = false; + SC_HANDLE service = OpenService (scm, TC_SYSTEM_FAVORITES_SERVICE_NAME, GENERIC_READ); + if (service) + { + bAlreadyExists = true; + CloseServiceHandle (service); + } + try { RegisterSystemFavoritesService (FALSE, noFileHandling); @@ -4577,11 +4871,19 @@ namespace VeraCrypt { wchar_t appPath[TC_MAX_PATH]; throw_sys_if (!GetModuleFileName (NULL, appPath, ARRAYSIZE (appPath))); - + /* explicitely specify VeraCrypt.exe as the file to copy and don't rely + * on the fact we will be always called by VeraCrypt.exe because it's not + * always true. + */ + wchar_t* ptr = wcsrchr (appPath, L'\\'); + if (ptr) + ptr[1] = 0; + StringCchCatW (appPath, ARRAYSIZE (appPath), _T(TC_APP_NAME) L".exe"); + throw_sys_if (!CopyFile (appPath, servicePath.c_str(), FALSE)); } - SC_HANDLE service = CreateService (scm, + service = CreateService (scm, TC_SYSTEM_FAVORITES_SERVICE_NAME, _T(TC_APP_NAME) L" System Favorites", SERVICE_ALL_ACCESS, @@ -4601,6 +4903,10 @@ namespace VeraCrypt description.lpDescription = L"Mounts VeraCrypt system favorite volumes."; ChangeServiceConfig2 (service, SERVICE_CONFIG_DESCRIPTION, &description); + // start the service immediatly if it already existed before + if (bAlreadyExists) + StartService (service, 0, NULL); + CloseServiceHandle (service); try @@ -4642,6 +4948,30 @@ namespace VeraCrypt } } + bool BootEncryption::IsSystemFavoritesServiceRunning () + { + bool bRet = false; + SC_HANDLE scm = OpenSCManager (NULL, NULL, SC_MANAGER_CONNECT); + if (scm) + { + SC_HANDLE service = OpenService(scm, TC_SYSTEM_FAVORITES_SERVICE_NAME, GENERIC_READ); + if (service) + { + SERVICE_STATUS status; + if (QueryServiceStatus(service, &status)) + { + bRet = (status.dwCurrentState == SERVICE_RUNNING); + } + + CloseServiceHandle(service); + } + + CloseServiceHandle (scm); + } + + return bRet; + } + void BootEncryption::UpdateSystemFavoritesService () { SC_HANDLE scm = OpenSCManager (NULL, NULL, SC_MANAGER_ALL_ACCESS); diff --git a/src/Common/BootEncryption.h b/src/Common/BootEncryption.h index 0b5fe4f..a94f191 100644 --- a/src/Common/BootEncryption.h +++ b/src/Common/BootEncryption.h @@ -29,6 +29,10 @@ typedef NTSTATUS (WINAPI *NtQuerySystemInformationFn)( PULONG ReturnLength ); +typedef ULONG (WINAPI *RtlNtStatusToDosErrorFn)( + NTSTATUS Status +); + using namespace std; namespace VeraCrypt @@ -189,9 +193,11 @@ namespace VeraCrypt BOOL Load (const wchar_t* fileName); void Load (char* configContent); BOOL Save (const wchar_t* fileName, HWND hwnd); + static BOOL IsPostExecFileField (const string& szFieldValue, string& filePath); + static BOOL IsPostExecFileField (const string& szFieldValue, wstring& filePath); }; - void GetVolumeESP(wstring& path); + void GetVolumeESP(wstring& path, wstring& bootVolumePath); std::string ReadESPFile (LPCWSTR szFilePath, bool bSkipUTF8BOM); void WriteESPFile (LPCWSTR szFilePath, LPBYTE pbData, DWORD dwDataLen, bool bAddUTF8BOM); @@ -199,16 +205,18 @@ namespace VeraCrypt public: EfiBoot(); - void PrepareBootPartition(); + void PrepareBootPartition(bool bDisableException = false); bool IsEfiBoot(); void DeleteStartExec(uint16 statrtOrderNum = 0xDC5B, wchar_t* type = NULL); - void SetStartExec(wstring description, wstring execPath, uint16 statrtOrderNum = 0xDC5B, wchar_t* type = NULL, uint32 attr = 1); + void SetStartExec(wstring description, wstring execPath, bool setBootNext = true, uint16 statrtOrderNum = 0xDC5B, wchar_t* type = NULL, uint32 attr = 1); void SaveFile(const wchar_t* name, byte* data, DWORD size); void GetFileSize(const wchar_t* name, unsigned __int64& size); void ReadFile(const wchar_t* name, byte* data, DWORD size); void CopyFile(const wchar_t* name, const wchar_t* targetName); bool FileExists(const wchar_t* name); + static bool CompareFiles (const wchar_t* fileName1, const wchar_t* fileName2); + static bool CompareFileData (const wchar_t* fileName, const byte* data, DWORD size); BOOL RenameFile(const wchar_t* name, const wchar_t* nameNew, BOOL bForce); BOOL DelFile(const wchar_t* name); @@ -217,23 +225,22 @@ namespace VeraCrypt BOOL UpdateConfig (const wchar_t* name, int pim, int hashAlgo, HWND hwndDlg); BOOL WriteConfig (const wchar_t* name, bool preserveUserConfig, int pim, int hashAlgo, const char* passPromptMsg, HWND hwndDlg); BOOL DelDir(const wchar_t* name); - void SelectBootVolumeESP(); - PSTORAGE_DEVICE_NUMBER GetStorageDeviceNumber () { return &sdn;} + PSTORAGE_DEVICE_NUMBER GetStorageDeviceNumber () { if (bDeviceInfoValid) return &sdn; else { SetLastError (ERROR_INVALID_DRIVE); throw SystemException(SRC_POS);}} protected: bool m_bMounted; std::wstring EfiBootPartPath; STORAGE_DEVICE_NUMBER sdn; PARTITION_INFORMATION_EX partInfo; + bool bDeviceInfoValid; WCHAR tempBuf[1024]; - bool bBootVolumePathSelected; std::wstring BootVolumePath; }; class BootEncryption { public: - BootEncryption (HWND parent, bool postOOBE = false); + BootEncryption (HWND parent, bool postOOBE = false, bool setBootNext = false); ~BootEncryption (); enum FilterType @@ -285,6 +292,7 @@ namespace VeraCrypt void RegisterFilterDriver (bool registerDriver, FilterType filterType); void RegisterSystemFavoritesService (BOOL registerService); void RegisterSystemFavoritesService (BOOL registerService, BOOL noFileHandling); + bool IsSystemFavoritesServiceRunning (); void UpdateSystemFavoritesService (); void RenameDeprecatedSystemLoaderBackup (); bool RestartComputer (BOOL bShutdown = FALSE); @@ -344,6 +352,7 @@ namespace VeraCrypt bool RescueVolumeHeaderValid; bool VolumeHeaderValid; bool PostOOBEMode; + bool SetBootNext; }; } @@ -361,6 +370,7 @@ namespace VeraCrypt #define VC_SYSTEM_FAVORITES_SERVICE_ARG_SKIP_MOUNT L"/SkipMount" #define VC_SYSTEM_FAVORITES_SERVICE_CONFIG_DONT_UPDATE_LOADER 0x1 +#define VC_SYSTEM_FAVORITES_SERVICE_CONFIG_FORCE_SET_BOOTNEXT 0x2 #define VC_WINDOWS_UPGRADE_POSTOOBE_CMDLINE_OPTION L"/PostOOBE" diff --git a/src/Common/Dlgcode.c b/src/Common/Dlgcode.c index 08e2499..2439c10 100644 --- a/src/Common/Dlgcode.c +++ b/src/Common/Dlgcode.c @@ -11142,7 +11142,7 @@ void InconsistencyResolved (char *techInfo) } -void ReportUnexpectedState (char *techInfo) +void ReportUnexpectedState (const char *techInfo) { wchar_t finalMsg[8024]; diff --git a/src/Common/Dlgcode.h b/src/Common/Dlgcode.h index 3df6822..f17ce22 100644 --- a/src/Common/Dlgcode.h +++ b/src/Common/Dlgcode.h @@ -473,7 +473,7 @@ BOOL CALLBACK CloseTCWindowsEnum( HWND hwnd, LPARAM lParam); BOOL CALLBACK FindTCWindowEnum (HWND hwnd, LPARAM lParam); BYTE *MapResource (wchar_t *resourceType, int resourceId, PDWORD size); void InconsistencyResolved (char *msg); -void ReportUnexpectedState (char *techInfo); +void ReportUnexpectedState (const char *techInfo); BOOL SelectMultipleFiles (HWND hwndDlg, const char *stringId, wchar_t *lpszFileName, size_t cbFileName, BOOL keepHistory); BOOL SelectMultipleFilesNext (wchar_t *lpszFileName, size_t cbFileName); void OpenOnlineHelp (); diff --git a/src/Common/Tcdefs.h b/src/Common/Tcdefs.h index ae1c57c..b9f3756 100644 --- a/src/Common/Tcdefs.h +++ b/src/Common/Tcdefs.h @@ -55,7 +55,7 @@ extern unsigned short _rotl16(unsigned short value, unsigned char shift); #define TC_APP_NAME "VeraCrypt" // Version displayed to user -#define VERSION_STRING "1.24" +#define VERSION_STRING "1.24-Hotfix1" #ifdef VC_EFI_CUSTOM_MODE #define VERSION_STRING_SUFFIX "-CustomEFI" @@ -67,7 +67,7 @@ extern unsigned short _rotl16(unsigned short value, unsigned char shift); #define VERSION_NUM 0x0124 // Release date -#define TC_STR_RELEASE_DATE L"October 6, 2019" +#define TC_STR_RELEASE_DATE L"October 27, 2019" #define TC_RELEASE_DATE_YEAR 2019 #define TC_RELEASE_DATE_MONTH 10 diff --git a/src/Core/RandomNumberGenerator.cpp b/src/Core/RandomNumberGenerator.cpp index fffd948..70c4649 100644 --- a/src/Core/RandomNumberGenerator.cpp +++ b/src/Core/RandomNumberGenerator.cpp @@ -46,6 +46,16 @@ namespace VeraCrypt throw_sys_sub_if (read (random, buffer, buffer.Size()) == -1 && errno != EAGAIN, L"/dev/random"); AddToPool (buffer); + + /* use JitterEntropy library to get good quality random bytes based on CPU timing jitter */ + if (JitterRngCtx) + { + ssize_t rndLen = jent_read_entropy (JitterRngCtx, (char*) buffer.Ptr(), buffer.Size()); + if (rndLen > 0) + { + AddToPool (buffer); + } + } } #endif } @@ -80,6 +90,12 @@ namespace VeraCrypt ScopeLock lock (AccessMutex); size_t bufferLen = buffer.Size(), loopLen; byte* pbBuffer = buffer.Get(); + + // Initialize JitterEntropy RNG for this call + if (0 == jent_entropy_init ()) + { + JitterRngCtx = jent_entropy_collector_alloc (1, 0); + } // Poll system for data AddSystemDataToPool (fast); @@ -127,6 +143,12 @@ namespace VeraCrypt pbBuffer += loopLen; } + + if (JitterRngCtx) + { + jent_entropy_collector_free (JitterRngCtx); + JitterRngCtx = NULL; + } } shared_ptr <Hash> RandomNumberGenerator::GetHash () @@ -232,4 +254,5 @@ namespace VeraCrypt size_t RandomNumberGenerator::ReadOffset; bool RandomNumberGenerator::Running = false; size_t RandomNumberGenerator::WriteOffset; + struct rand_data *RandomNumberGenerator::JitterRngCtx = NULL; } diff --git a/src/Core/RandomNumberGenerator.h b/src/Core/RandomNumberGenerator.h index 2d1d314..6df31ae 100644 --- a/src/Core/RandomNumberGenerator.h +++ b/src/Core/RandomNumberGenerator.h @@ -16,6 +16,7 @@ #include "Platform/Platform.h" #include "Volume/Hash.h" #include "Common/Random.h" +#include "Crypto/jitterentropy.h" namespace VeraCrypt { @@ -53,6 +54,7 @@ namespace VeraCrypt static size_t ReadOffset; static bool Running; static size_t WriteOffset; + static struct rand_data *JitterRngCtx; }; } diff --git a/src/Core/Unix/CoreService.cpp b/src/Core/Unix/CoreService.cpp index 77d55b2..5eca15d 100644 --- a/src/Core/Unix/CoreService.cpp +++ b/src/Core/Unix/CoreService.cpp @@ -13,6 +13,7 @@ #include "CoreService.h" #include <fcntl.h> #include <sys/wait.h> +#include <stdio.h> #include "Platform/FileStream.h" #include "Platform/MemoryStream.h" #include "Platform/Serializable.h" @@ -288,6 +289,41 @@ namespace VeraCrypt request.FastElevation = !ElevatedServiceAvailable; request.ApplicationExecutablePath = Core->GetApplicationExecutablePath(); + // Test if the user has an active "sudo" session. + // This is only done under Linux / FreeBSD by executing the command 'sudo -n uptime'. + // In case a "sudo" session is active, the result of the command contains the string 'load average'. + // Otherwise, the result contains "sudo: a password is required". + // This may not work on all OSX versions because of a bug in sudo in its version 1.7.10, + // therefore we keep the old behaviour of sending a 'dummy' password under OSX. + // See : https://superuser.com/questions/902826/why-does-sudo-n-on-mac-os-x-always-return-0 + +#if defined(TC_LINUX ) || defined (TC_FREEBSD) + + // Set to false to force the 'WarningEvent' to be raised in case of and elevation exception. + request.FastElevation = false; + + std::vector<char> buffer(128, 0); + std::string result; + + FILE* pipe = popen("sudo -n uptime 2>&1 | grep 'load average' | wc -l", "r"); // We redirect stderr to stdout (2>&1) to be able to catch the result of the command + if (pipe) + { + while (!feof(pipe)) + { + if (fgets(buffer.data(), 128, pipe) != nullptr) + result += buffer.data(); + } + + fflush(pipe); + pclose(pipe); + pipe = NULL; + + if (!result.empty() && strlen(result.c_str()) != 0 && !memcmp(result.c_str(), "0", 1)) + { + (*AdminPasswordCallback) (request.AdminPassword); + } + } +#endif while (!ElevatedServiceAvailable) { try @@ -396,6 +432,7 @@ namespace VeraCrypt vector <char> adminPassword (request.AdminPassword.size() + 1); int timeout = 6000; + // 'request.FastElevation' is always false under Linux / FreeBSD if (request.FastElevation) { string dummyPassword = "dummy\n"; @@ -457,6 +494,7 @@ namespace VeraCrypt outPipe->Close(); errPipe.Close(); + // 'request.FastElevation' is always false under Linux / FreeBSD if (request.FastElevation) { // Prevent defunct process diff --git a/src/Core/VolumeCreator.h b/src/Core/VolumeCreator.h index 4f56308..6b8f143 100644 --- a/src/Core/VolumeCreator.h +++ b/src/Core/VolumeCreator.h @@ -45,6 +45,7 @@ namespace VeraCrypt Ext3, Ext4, MacOsExt, + APFS, UFS }; diff --git a/src/Crypto/Whirlpool.c b/src/Crypto/Whirlpool.c index 35188c6..9452951 100644 --- a/src/Crypto/Whirlpool.c +++ b/src/Crypto/Whirlpool.c @@ -643,6 +643,20 @@ static const uint64 Whirlpool_C[8*256+R] = { void WhirlpoolTransform(uint64 *digest, const uint64 *block) { #if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE +#if defined(__GNUC__) && (CRYPTOPP_GCC_VERSION <= 40407) + /* workaround for gcc 4.4.7 bug under CentOS which causes crash + * in inline assembly. + * This dummy check that is always false since "block" is aligned. + */ + uint64 lb = (uint64) block; + if (lb % 16) + { + TC_THROW_FATAL_EXCEPTION; + } +#endif +#endif + +#if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE if (HasISSE()) { #ifdef __GNUC__ diff --git a/src/Crypto/jitterentropy-base-user.h b/src/Crypto/jitterentropy-base-user.h index cbb2f47..04c1936 100644 --- a/src/Crypto/jitterentropy-base-user.h +++ b/src/Crypto/jitterentropy-base-user.h @@ -88,7 +88,7 @@ static VC_INLINE void jent_get_nstime(__u64 *out) #define EAX_EDX_RET(val, low, high) "=A" (val) #endif -static VC_INLINE void jent_get_nstime(__u64 *out) +VC_INLINE void jent_get_nstime(__u64 *out) { DECLARE_ARGS(val, low, high); asm volatile("rdtsc" : EAX_EDX_RET(val, low, high)); @@ -97,7 +97,10 @@ static VC_INLINE void jent_get_nstime(__u64 *out) #endif -static VC_INLINE void *jent_zalloc(size_t len) +#ifdef _MSC_VER +static +#endif +VC_INLINE void *jent_zalloc(size_t len) { void *tmp = NULL; tmp = TCalloc(len); @@ -111,7 +114,10 @@ static VC_INLINE void *jent_zalloc(size_t len) return tmp; } -static VC_INLINE void jent_zfree(void *ptr, unsigned int len) +#ifdef _MSC_VER +static +#endif +VC_INLINE void jent_zfree(void *ptr, unsigned int len) { if (len % 8) burn(ptr, len); @@ -123,7 +129,10 @@ static VC_INLINE void jent_zfree(void *ptr, unsigned int len) TCfree(ptr); } -static VC_INLINE int jent_fips_enabled(void) +#ifdef _MSC_VER +static +#endif +VC_INLINE int jent_fips_enabled(void) { return 0; } diff --git a/src/Crypto/jitterentropy-base.c b/src/Crypto/jitterentropy-base.c index c05f0c3..50544ac 100644 --- a/src/Crypto/jitterentropy-base.c +++ b/src/Crypto/jitterentropy-base.c @@ -57,7 +57,11 @@ #pragma optimize( "", off ) #pragma warning(disable:4242 4244 4334) /* disable warnings on the original code */ #else -#pragma GCC optimize ("O0") +#if defined(__clang__) + #pragma clang optimize off +#elif defined (__GNUC__) + #pragma GCC optimize ("O0") +#endif #endif #include "jitterentropy.h" diff --git a/src/ExpandVolume/DlgExpandVolume.cpp b/src/ExpandVolume/DlgExpandVolume.cpp index c1acd76..ab76d1b 100644 --- a/src/ExpandVolume/DlgExpandVolume.cpp +++ b/src/ExpandVolume/DlgExpandVolume.cpp @@ -49,6 +49,8 @@ #define TIMER_ID_RANDVIEW 0xff #define TIMER_INTERVAL_RANDVIEW 50 +BOOL bSeManageVolumeNameSet = FALSE; + // see definition of enum EV_FileSystem const wchar_t * szFileSystemStr[4] = {L"RAW",L"FAT",L"NTFS",L"EXFAT"}; @@ -117,6 +119,20 @@ uint64 GetSizeBoxMultiplier(HWND hwndDlg) return Muliplier[i]; } +void HandleQuickExpanddCheckBox (HWND hwndDlg) +{ + if (IsButtonChecked (GetDlgItem (hwndDlg, IDC_INIT_NEWSPACE))) + { + EnableWindow (GetDlgItem (hwndDlg, IDC_QUICKEXPAND), FALSE); + SendDlgItemMessage (hwndDlg, IDC_QUICKEXPAND, BM_SETCHECK, BST_UNCHECKED, 0); + } + else + { + EnableWindow (GetDlgItem (hwndDlg, IDC_QUICKEXPAND), TRUE); + } +} + + BOOL CALLBACK ExpandVolSizeDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { static EXPAND_VOL_THREAD_PARAMS *pVolExpandParam; @@ -164,6 +180,12 @@ BOOL CALLBACK ExpandVolSizeDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARA SetWindowText (GetDlgItem (hwndDlg, IDT_NEW_SIZE), L""); GetSpaceString(szHostFreeStr,sizeof(szHostFreeStr),pVolExpandParam->hostSizeFree,FALSE); StringCbPrintfW (szTemp,sizeof(szTemp),L"%s available on host drive", szHostFreeStr); + + if (!pVolExpandParam->bDisableQuickExpand) + { + ShowWindow (GetDlgItem (hwndDlg, IDC_QUICKEXPAND), SW_SHOW); + HandleQuickExpanddCheckBox (hwndDlg); + } } SetWindowText (GetDlgItem (hwndDlg, IDC_EXPAND_VOLUME_NEWSIZE), szTemp); @@ -179,7 +201,7 @@ BOOL CALLBACK ExpandVolSizeDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARA { StringCbPrintfW (szTemp, sizeof(szTemp),L"Please specify the new size of the VeraCrypt volume (must be at least %I64u KB larger than the current size).",TC_MINVAL_FS_EXPAND/1024); } - SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), szTemp); + SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), szTemp); } return 0; @@ -197,6 +219,7 @@ BOOL CALLBACK ExpandVolSizeDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARA wchar_t szTemp[4096]; pVolExpandParam->bInitFreeSpace = IsButtonChecked (GetDlgItem (hwndDlg, IDC_INIT_NEWSPACE)); + pVolExpandParam->bQuickExpand = IsButtonChecked (GetDlgItem (hwndDlg, IDC_QUICKEXPAND)); if (!pVolExpandParam->bIsDevice) // for devices new size is set by calling function { GetWindowText (GetDlgItem (hwndDlg, IDC_SIZEBOX), szTemp, ARRAYSIZE (szTemp)); @@ -207,6 +230,23 @@ BOOL CALLBACK ExpandVolSizeDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARA return 1; } + if (lw == IDC_INIT_NEWSPACE && !pVolExpandParam->bDisableQuickExpand) + { + HandleQuickExpanddCheckBox (hwndDlg); + return 1; + } + + if (lw == IDC_QUICKEXPAND && IsButtonChecked (GetDlgItem (hwndDlg, IDC_QUICKEXPAND))) + { + // If quick expand selected, then we warn about security issue + if (MessageBoxW (hwndDlg, L"WARNING: You should use Quick Expand only in the following cases:\n\n1) The device where the file container is located contains no sensitive data and you do not need plausible deniability.\n2) The device where the file container is located has already been securely and fully encrypted.\n\nAre you sure you want to use Quick Expand?", + lpszTitle, YES_NO|MB_ICONWARNING|MB_DEFBUTTON2) == IDNO) + { + SendDlgItemMessage (hwndDlg, IDC_QUICKEXPAND, BM_SETCHECK, BST_UNCHECKED, 0); + return 1; + } + } + return 0; } @@ -393,6 +433,7 @@ BOOL CALLBACK ExpandVolProgressDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, L // tell the volume transform thread to terminate bVolTransformThreadCancel = TRUE; } + NormalCursor (); EndDialog (hwndDlg, lw); return 1; } @@ -402,6 +443,7 @@ BOOL CALLBACK ExpandVolProgressDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, L if (bVolTransformStarted) { // TransformThreadFunction finished -> OK button is now exit + NormalCursor (); EndDialog (hwndDlg, lw); } else @@ -561,7 +603,6 @@ void ExpandVolumeWizard (HWND hwndDlg, wchar_t *lpszVolume) if (KeyFilesEnable && FirstKeyFile) KeyFilesApply (hwndDlg, &VolumePassword, FirstKeyFile, lpszVolume); - WaitCursor (); OpenVolumeThreadParam threadParam; threadParam.context = &expandVol; @@ -691,6 +732,8 @@ void ExpandVolumeWizard (HWND hwndDlg, wchar_t *lpszVolume) EXPAND_VOL_THREAD_PARAMS VolExpandParam; VolExpandParam.bInitFreeSpace = (bIsLegacy && bIsDevice) ? FALSE:TRUE; + VolExpandParam.bQuickExpand = FALSE; + VolExpandParam.bDisableQuickExpand = bIsDevice; VolExpandParam.szVolumeName = lpszVolume; VolExpandParam.FileSystem = volFSType; VolExpandParam.pVolumePassword = &VolumePassword; @@ -702,6 +745,17 @@ void ExpandVolumeWizard (HWND hwndDlg, wchar_t *lpszVolume) VolExpandParam.newSize = hostSize; VolExpandParam.hostSizeFree = hostSizeFree; + // disable Quick Expand if the file is sparse or compressed + if (!bIsDevice) + { + DWORD dwFileAttrib = GetFileAttributesW (lpszVolume); + if (INVALID_FILE_ATTRIBUTES != dwFileAttrib) + { + if (dwFileAttrib & (FILE_ATTRIBUTE_COMPRESSED | FILE_ATTRIBUTE_SPARSE_FILE)) + VolExpandParam.bDisableQuickExpand = TRUE; + } + } + while (1) { uint64 newVolumeSize; @@ -717,7 +771,7 @@ void ExpandVolumeWizard (HWND hwndDlg, wchar_t *lpszVolume) if ( !bIsDevice ) { - if ( newVolumeSize < hostSize + TC_MINVAL_FS_EXPAND) + if ( (newVolumeSize < hostSize + TC_MINVAL_FS_EXPAND) && ((hostSize == volSize) || (newVolumeSize != hostSize) || ((hostSize - volSize) < TC_MINVAL_FS_EXPAND))) { StringCbPrintfW(szTmp,sizeof(szTmp),L"New volume size too small, must be at least %I64u kB larger than the current size.",TC_MINVAL_FS_EXPAND/BYTES_PER_KB); MessageBoxW (hwndDlg, szTmp, lpszTitle, MB_OK | MB_ICONEXCLAMATION ); @@ -737,6 +791,18 @@ void ExpandVolumeWizard (HWND hwndDlg, wchar_t *lpszVolume) MessageBoxW (hwndDlg, L"!\n",lpszTitle, MB_OK | MB_ICONEXCLAMATION ); continue; } + + if (VolExpandParam.bQuickExpand && !bSeManageVolumeNameSet) + { + if (!SetPrivilege (SE_MANAGE_VOLUME_NAME, TRUE)) + { + MessageBoxW (hwndDlg, L"Error: Failed to get necessary privileges to enable Quick Expand!\nPlease uncheck Quick Expand option and try again.",lpszTitle, MB_OK | MB_ICONEXCLAMATION ); + VolExpandParam.bQuickExpand = FALSE; + continue; + } + + bSeManageVolumeNameSet = TRUE; + } } if ( newVolumeSize > TC_MAX_VOLUME_SIZE ) diff --git a/src/ExpandVolume/ExpandVolume.c b/src/ExpandVolume/ExpandVolume.c index 5a476ba..ec78a36 100644 --- a/src/ExpandVolume/ExpandVolume.c +++ b/src/ExpandVolume/ExpandVolume.c @@ -492,7 +492,7 @@ error: Remarks: a lot of code is from TrueCrypt 'Common\Password.c' :: ChangePwd() */ -static int ExpandVolume (HWND hwndDlg, wchar_t *lpszVolume, Password *pVolumePassword, int VolumePkcs5, int VolumePim, uint64 newHostSize, BOOL initFreeSpace) +static int ExpandVolume (HWND hwndDlg, wchar_t *lpszVolume, Password *pVolumePassword, int VolumePkcs5, int VolumePim, uint64 newHostSize, BOOL initFreeSpace, BOOL bQuickExpand) { int nDosLinkCreated = 1, nStatus = ERR_OS_ERROR; wchar_t szDiskFile[TC_MAX_PATH], szCFDevice[TC_MAX_PATH]; @@ -750,13 +750,37 @@ static int ExpandVolume (HWND hwndDlg, wchar_t *lpszVolume, Password *pVolumePas liNewSize.QuadPart=(LONGLONG)newHostSize; - // Preallocate the file - if (!SetFilePointerEx (dev, liNewSize, NULL, FILE_BEGIN) - || !SetEndOfFile (dev) - || SetFilePointer (dev, 0, NULL, FILE_BEGIN) != 0) + if (hostSize != newHostSize) { - nStatus = ERR_OS_ERROR; - goto error; + // Preallocate the file + if (!SetFilePointerEx (dev, liNewSize, NULL, FILE_BEGIN) + || !SetEndOfFile (dev)) + { + nStatus = ERR_OS_ERROR; + goto error; + } + + if (bQuickExpand) + { + if (!SetFileValidData (dev, liNewSize.QuadPart)) + { + DebugAddProgressDlgStatus(hwndDlg, L"Warning: Failed to perform Quick Expand. Continuing with standard expanding...\r\n"); + } + } + + if (SetFilePointer (dev, 0, NULL, FILE_BEGIN) != 0) + { + nStatus = ERR_OS_ERROR; + goto error; + } + } + else + { + if (SetFilePointer (dev, 0, NULL, FILE_BEGIN) != 0) + { + nStatus = ERR_OS_ERROR; + goto error; + } } } @@ -1050,7 +1074,7 @@ void __cdecl volTransformThreadFunction (void *pExpandDlgParam) HWND hwndDlg = (HWND) pParam->hwndDlg; nStatus = ExpandVolume (hwndDlg, (wchar_t*)pParam->szVolumeName, pParam->pVolumePassword, - pParam->VolumePkcs5, pParam->VolumePim, pParam->newSize, pParam->bInitFreeSpace ); + pParam->VolumePkcs5, pParam->VolumePim, pParam->newSize, pParam->bInitFreeSpace, pParam->bQuickExpand ); if (nStatus!=ERR_SUCCESS && nStatus!=ERR_USER_ABORT) handleError (hwndDlg, nStatus, SRC_POS); diff --git a/src/ExpandVolume/ExpandVolume.h b/src/ExpandVolume/ExpandVolume.h index 5f4eb7f..668eb79 100644 --- a/src/ExpandVolume/ExpandVolume.h +++ b/src/ExpandVolume/ExpandVolume.h @@ -40,6 +40,8 @@ typedef struct BOOL bIsDevice; BOOL bIsLegacy; BOOL bInitFreeSpace; + BOOL bQuickExpand; + BOOL bDisableQuickExpand; Password *pVolumePassword; int VolumePkcs5; int VolumePim; diff --git a/src/ExpandVolume/ExpandVolume.rc b/src/ExpandVolume/ExpandVolume.rc index 841141e..ea310b3 100644 --- a/src/ExpandVolume/ExpandVolume.rc +++ b/src/ExpandVolume/ExpandVolume.rc @@ -38,7 +38,8 @@ BEGIN CONTROL "&GB",IDC_GB,"Button",BS_AUTORADIOBUTTON,248,105,38,10 CONTROL "&TB",IDC_TB,"Button",BS_AUTORADIOBUTTON,288,105,38,10 CONTROL "Fill new space with random data",IDC_INIT_NEWSPACE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,30,127,118,10 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,30,120,276,10 + CONTROL "Quick Expand",IDC_QUICKEXPAND,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,30,132,276,10 DEFPUSHBUTTON "Continue",IDOK,15,238,84,18 PUSHBUTTON "Cancel",IDCANCEL,277,238,84,18 LTEXT "Help Text",IDC_BOX_HELP,15,165,346,58,0,WS_EX_CLIENTEDGE @@ -141,7 +142,7 @@ END // #ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO +GUIDELINES DESIGNINFO BEGIN IDD_SIZE_DIALOG, DIALOG BEGIN @@ -192,8 +193,8 @@ IDR_MOUNT_RSRC_HEADER HEADER "resource.h" // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,24,6,0 - PRODUCTVERSION 1,24,6,0 + FILEVERSION 1,24,7,1 + PRODUCTVERSION 1,24,7,1 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -210,11 +211,11 @@ BEGIN BEGIN VALUE "CompanyName", "IDRIX" VALUE "FileDescription", "VeraCrypt Expander" - VALUE "FileVersion", "1.24" + VALUE "FileVersion", "1.24-Hotfix1" VALUE "LegalTrademarks", "VeraCrypt" VALUE "OriginalFilename", "VeraCryptExpander.exe" VALUE "ProductName", "VeraCrypt" - VALUE "ProductVersion", "1.24" + VALUE "ProductVersion", "1.24-Hotfix1" END END BLOCK "VarFileInfo" @@ -264,7 +265,7 @@ IDB_LOGO_288DPI BITMAP "Logo_288dpi.bmp" // Menu // -IDR_MENU MENUEX +IDR_MENU MENUEX BEGIN MENUITEM "About", IDM_ABOUT,MFT_STRING,MFS_ENABLED MENUITEM "Homepage", IDM_HOMEPAGE,MFT_STRING | MFT_RIGHTJUSTIFY,MFS_ENABLED @@ -276,7 +277,7 @@ END // String Table // -STRINGTABLE +STRINGTABLE BEGIN IDS_UACSTRING "VeraCrypt Expander" END diff --git a/src/ExpandVolume/resource.h b/src/ExpandVolume/resource.h index 993c414..99d89dd 100644 --- a/src/ExpandVolume/resource.h +++ b/src/ExpandVolume/resource.h @@ -71,6 +71,7 @@ #define IDC_OLD_PIM 1143 #define IDC_OLD_PIM_HELP 1144 #define ID_HOMEPAGE 1145 +#define IDC_QUICKEXPAND 1146 #define IDM_HELP 40001 #define IDM_ABOUT 40002 #define IDM_UNMOUNT_VOLUME 40003 @@ -135,13 +136,13 @@ #define IDM_MANAGE_TOKEN_KEYFILES 40062 // Next default values for new objects -// +// #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 120 #define _APS_NEXT_COMMAND_VALUE 40064 -#define _APS_NEXT_CONTROL_VALUE 1146 +#define _APS_NEXT_CONTROL_VALUE 1147 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/src/Format/Format.rc b/src/Format/Format.rc index 9f40ace..43cd208 100644 --- a/src/Format/Format.rc +++ b/src/Format/Format.rc @@ -28,8 +28,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,24,6,0 - PRODUCTVERSION 1,24,6,0 + FILEVERSION 1,24,7,1 + PRODUCTVERSION 1,24,7,1 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -46,11 +46,11 @@ BEGIN BEGIN VALUE "CompanyName", "IDRIX" VALUE "FileDescription", "VeraCrypt Format" - VALUE "FileVersion", "1.24" + VALUE "FileVersion", "1.24-Hotfix1" VALUE "LegalTrademarks", "VeraCrypt" VALUE "OriginalFilename", "VeraCrypt Format.exe" VALUE "ProductName", "VeraCrypt" - // VALUE "ProductVersion", "1.24" + VALUE "ProductVersion", "1.24-Hotfix1" END END BLOCK "VarFileInfo" @@ -278,12 +278,12 @@ IDD_SYSENC_COLLECTING_RANDOM_DATA_DLG DIALOGEX 0, 0, 276, 193 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - CONTROL "Display pool content",IDC_DISPLAY_POOL_CONTENTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,1,93,225,10 - CONTROL "",IDC_SYS_POOL_CONTENTS,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,6,17,209,63,WS_EX_TRANSPARENT - LTEXT "IMPORTANT: Move your mouse as randomly as possible within this window. The longer you move it, the better. This significantly increases the cryptographic strength of the encryption keys. Then click Next to continue.",IDT_COLLECTING_RANDOM_DATA_NOTE,1,107,225,63 - GROUPBOX "Current pool content (partial)",IDT_PARTIAL_POOL_CONTENTS,0,5,225,83 - GROUPBOX "Randomness Collected From Mouse Movements",IDT_ENTROPY_BAR,0,174,225,18 - CONTROL "",IDC_ENTROPY_BAR,"msctls_progress32",WS_BORDER,11,183,202,6 + CONTROL "Display pool content",IDC_DISPLAY_POOL_CONTENTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,93,266,10 + CONTROL "",IDC_SYS_POOL_CONTENTS,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,33,17,209,63,WS_EX_TRANSPARENT + LTEXT "IMPORTANT: Move your mouse as randomly as possible within this window. The longer you move it, the better. This significantly increases the cryptographic strength of the encryption keys. Then click Next to continue.",IDT_COLLECTING_RANDOM_DATA_NOTE,10,107,265,63 + GROUPBOX "Current pool content (partial)",IDT_PARTIAL_POOL_CONTENTS,0,5,276,83 + GROUPBOX "Randomness Collected From Mouse Movements",IDT_ENTROPY_BAR,0,174,276,18 + CONTROL "",IDC_ENTROPY_BAR,"msctls_progress32",WS_BORDER,11,183,254,6 END IDD_SYSENC_MULTI_BOOT_MODE_PAGE_DLG DIALOGEX 0, 0, 276, 193 @@ -588,7 +588,6 @@ BEGIN IDD_SYSENC_COLLECTING_RANDOM_DATA_DLG, DIALOG BEGIN - RIGHTMARGIN, 267 BOTTOMMARGIN, 174 HORZGUIDE, 80 HORZGUIDE, 96 diff --git a/src/Main/CommandLineInterface.cpp b/src/Main/CommandLineInterface.cpp index a0924de..171bd16 100644 --- a/src/Main/CommandLineInterface.cpp +++ b/src/Main/CommandLineInterface.cpp @@ -321,6 +321,8 @@ namespace VeraCrypt } else if (str.IsSameAs (L"exFAT", false)) ArgFilesystem = VolumeCreationOptions::FilesystemType::exFAT; + else if (str.IsSameAs (L"APFS", false)) + ArgFilesystem = VolumeCreationOptions::FilesystemType::APFS; #elif defined (TC_FREEBSD) || defined (TC_SOLARIS) else if (str.IsSameAs (L"UFS", false)) ArgFilesystem = VolumeCreationOptions::FilesystemType::UFS; diff --git a/src/Main/Forms/DeviceSelectionDialog.cpp b/src/Main/Forms/DeviceSelectionDialog.cpp index c3a3d84..c886e18 100644 --- a/src/Main/Forms/DeviceSelectionDialog.cpp +++ b/src/Main/Forms/DeviceSelectionDialog.cpp @@ -48,13 +48,31 @@ namespace VeraCrypt foreach_ref (HostDevice &device, DeviceList) { - if (device.Size == 0) - continue; - vector <wstring> fields (DeviceListCtrl->GetColumnCount()); - + if (DeviceListCtrl->GetItemCount() > 0) Gui->AppendToListCtrl (DeviceListCtrl, fields); + + // i.e. /dev/rdisk0 might have size = 0 in case open() fails because, for example on OSX, + // SIP is enabled on the machine ; + // This does not mean that it does not have partitions that have been successfully opened + // and have a size != 0 ; + // Therefore, we do not show the device ONLY if it does not have partitions with size != 0 ; + if (device.Size == 0) + { + bool bHasNonEmptyPartition = false; + foreach_ref (HostDevice &partition, device.Partitions) + { + if (partition.Size) + { + bHasNonEmptyPartition = true; + break; + } + } + + if (!bHasNonEmptyPartition) + continue; + } #ifdef TC_WINDOWS fields[ColumnDevice] = StringFormatter (L"{0} {1}:", _("Harddisk"), device.SystemNumber); @@ -64,11 +82,20 @@ namespace VeraCrypt fields[ColumnDevice] = wstring (device.Path) + L":"; fields[ColumnMountPoint] = device.MountPoint; #endif - fields[ColumnSize] = Gui->SizeToString (device.Size); + // If the size of the device is 0, we do not show the size to avoid confusing the user ; + if (device.Size) + fields[ColumnSize] = Gui->SizeToString (device.Size); + else + fields[ColumnSize] = L""; Gui->AppendToListCtrl (DeviceListCtrl, fields, 0, &device); foreach_ref (HostDevice &partition, device.Partitions) { + // If a partition's size is 0, there is no need to show it in the list + // since this means it is not usable (i.e on OSX, because of SIP enabled in the machine) ; + if (!partition.Size) + continue; + fields[ColumnDevice] = #ifndef TC_WINDOWS wstring (L" ") + @@ -113,7 +140,8 @@ namespace VeraCrypt void DeviceSelectionDialog::OnListItemSelected (wxListEvent& event) { HostDevice *device = (HostDevice *) (event.GetItem().GetData()); - if (device) + // If a device's size is 0, we do not enable the 'OK' button since it is not usable + if (device && device->Size) { SelectedDevice = *device; StdButtonsOK->Enable(); diff --git a/src/Main/Forms/EncryptionOptionsWizardPage.cpp b/src/Main/Forms/EncryptionOptionsWizardPage.cpp index e20a659..0d899fb 100644 --- a/src/Main/Forms/EncryptionOptionsWizardPage.cpp +++ b/src/Main/Forms/EncryptionOptionsWizardPage.cpp @@ -24,6 +24,9 @@ namespace VeraCrypt : EncryptionOptionsWizardPageBase (parent) { +#ifdef TC_MACOSX + EncryptionAlgorithmStaticText->Connect( wxEVT_SIZE, wxSizeEventHandler( EncryptionOptionsWizardPage::HandleOnSize ), NULL, this ); +#endif EncryptionAlgorithms = EncryptionAlgorithm::GetAvailableAlgorithms(); foreach (shared_ptr <EncryptionAlgorithm> ea, EncryptionAlgorithms) { @@ -45,6 +48,21 @@ namespace VeraCrypt } +#ifdef TC_MACOSX + EncryptionOptionsWizardPage::~EncryptionOptionsWizardPage() + { + EncryptionAlgorithmStaticText->Disconnect( wxEVT_SIZE, wxSizeEventHandler( EncryptionOptionsWizardPage::HandleOnSize ), NULL, this ); + } + + void EncryptionOptionsWizardPage::HandleOnSize( wxSizeEvent& event ) + { + int width, height; + EncryptionAlgorithmStaticText->GetClientSize (&width, &height); + EncryptionAlgorithmStaticText->Wrap (width); + event.Skip(); + } +#endif + shared_ptr <EncryptionAlgorithm> EncryptionOptionsWizardPage::GetEncryptionAlgorithm () const { return Gui->GetSelectedData <EncryptionAlgorithm> (EncryptionAlgorithmChoice)->GetNew(); diff --git a/src/Main/Forms/EncryptionOptionsWizardPage.h b/src/Main/Forms/EncryptionOptionsWizardPage.h index b8d42d7..fbc63f9 100644 --- a/src/Main/Forms/EncryptionOptionsWizardPage.h +++ b/src/Main/Forms/EncryptionOptionsWizardPage.h @@ -22,6 +22,9 @@ namespace VeraCrypt public: EncryptionOptionsWizardPage (wxPanel* parent); +#ifdef TC_MACOSX + ~EncryptionOptionsWizardPage (); +#endif shared_ptr <EncryptionAlgorithm> GetEncryptionAlgorithm () const; shared_ptr <Hash> GetHash () const; bool IsValid () { return true; } @@ -37,6 +40,9 @@ namespace VeraCrypt void OnHashHyperlinkClick (wxHyperlinkEvent& event); void OnTestButtonClick (wxCommandEvent& event); +#ifdef TC_MACOSX + void HandleOnSize( wxSizeEvent& event ); +#endif EncryptionAlgorithmList EncryptionAlgorithms; HashList Hashes; }; diff --git a/src/Main/Forms/Forms.cpp b/src/Main/Forms/Forms.cpp index ad1a3ee..c0a4070 100644 --- a/src/Main/Forms/Forms.cpp +++ b/src/Main/Forms/Forms.cpp @@ -328,7 +328,7 @@ MainFrameBase::MainFrameBase( wxWindow* parent, wxWindowID id, const wxString& t VolumeStaticBoxSizer->Add( VolumeGridBagSizer, 1, wxEXPAND|wxALL, 4 ); - LowStaticBoxSizer->Add( VolumeStaticBoxSizer, 1, wxEXPAND, 5 ); + LowStaticBoxSizer->Add( VolumeStaticBoxSizer, 1, wxEXPAND|wxALL, 5 ); LowStaticBoxSizer->Add( 0, 0, 0, 0, 5 ); @@ -344,46 +344,49 @@ MainFrameBase::MainFrameBase( wxWindow* parent, wxWindowID id, const wxString& t VolumeButton->SetDefault(); VolumeButton->SetMinSize( wxSize( -1,32 ) ); - sbSizer4->Add( VolumeButton, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxTOP, 2 ); + sbSizer4->Add( VolumeButton, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxALL, 2 ); gSizer2->Add( sbSizer4, 1, wxEXPAND, 0 ); wxStaticBoxSizer* sbSizer41; sbSizer41 = new wxStaticBoxSizer( new wxStaticBox( MainPanel, wxID_ANY, wxEmptyString ), wxVERTICAL ); + sbSizer41->SetMinSize( wxSize( 139,-1 ) ); MountAllDevicesButton = new wxButton( MainPanel, wxID_ANY, _("&Auto-Mount Devices"), wxDefaultPosition, wxDefaultSize, 0 ); MountAllDevicesButton->SetMinSize( wxSize( -1,32 ) ); - sbSizer41->Add( MountAllDevicesButton, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxTOP, 2 ); + sbSizer41->Add( MountAllDevicesButton, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxALL, 2 ); - gSizer2->Add( sbSizer41, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + gSizer2->Add( sbSizer41, 1, wxEXPAND, 5 ); wxStaticBoxSizer* sbSizer42; sbSizer42 = new wxStaticBoxSizer( new wxStaticBox( MainPanel, wxID_ANY, wxEmptyString ), wxVERTICAL ); + sbSizer42->SetMinSize( wxSize( 139,-1 ) ); DismountAllButton = new wxButton( MainPanel, wxID_ANY, _("Di&smount All"), wxDefaultPosition, wxDefaultSize, 0 ); DismountAllButton->SetMinSize( wxSize( -1,32 ) ); - sbSizer42->Add( DismountAllButton, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxTOP, 2 ); + sbSizer42->Add( DismountAllButton, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxALL, 2 ); - gSizer2->Add( sbSizer42, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + gSizer2->Add( sbSizer42, 1, wxEXPAND, 5 ); wxStaticBoxSizer* sbSizer43; sbSizer43 = new wxStaticBoxSizer( new wxStaticBox( MainPanel, wxID_ANY, wxEmptyString ), wxVERTICAL ); + sbSizer43->SetMinSize( wxSize( 139,-1 ) ); ExitButton = new wxButton( MainPanel, wxID_ANY, _("E&xit"), wxDefaultPosition, wxDefaultSize, 0 ); ExitButton->SetMinSize( wxSize( -1,32 ) ); - sbSizer43->Add( ExitButton, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxTOP, 2 ); + sbSizer43->Add( ExitButton, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxALL, 2 ); - gSizer2->Add( sbSizer43, 1, wxALIGN_RIGHT|wxEXPAND, 5 ); + gSizer2->Add( sbSizer43, 1, wxEXPAND, 5 ); - LowStaticBoxSizer->Add( gSizer2, 0, wxEXPAND, 5 ); + LowStaticBoxSizer->Add( gSizer2, 0, wxEXPAND|wxALL, 5 ); bSizer48->Add( LowStaticBoxSizer, 0, wxEXPAND, 5 ); diff --git a/src/Main/Forms/KeyfilesPanel.cpp b/src/Main/Forms/KeyfilesPanel.cpp index 71077e8..c1f26d8 100644 --- a/src/Main/Forms/KeyfilesPanel.cpp +++ b/src/Main/Forms/KeyfilesPanel.cpp @@ -59,10 +59,8 @@ namespace VeraCrypt SetDropTarget (new FileDropTarget (this)); KeyfilesListCtrl->SetDropTarget (new FileDropTarget (this)); -#ifdef TC_MACOSX foreach (wxWindow *c, GetChildren()) c->SetDropTarget (new FileDropTarget (this)); -#endif UpdateButtons(); } diff --git a/src/Main/Forms/MainFrame.cpp b/src/Main/Forms/MainFrame.cpp index ad5bf5b..9abe255 100644 --- a/src/Main/Forms/MainFrame.cpp +++ b/src/Main/Forms/MainFrame.cpp @@ -393,10 +393,8 @@ namespace VeraCrypt }; SetDropTarget (new FileDropTarget (this)); -#ifdef TC_MACOSX foreach (wxWindow *c, MainPanel->GetChildren()) c->SetDropTarget (new FileDropTarget (this)); -#endif // Volume history VolumeHistory::ConnectComboBox (VolumePathComboBox); diff --git a/src/Main/Forms/TrueCrypt.fbp b/src/Main/Forms/TrueCrypt.fbp index 7509f1e..d512ce8 100644 --- a/src/Main/Forms/TrueCrypt.fbp +++ b/src/Main/Forms/TrueCrypt.fbp @@ -1373,7 +1373,7 @@ </object> <object class="sizeritem" expanded="1"> <property name="border">5</property> - <property name="flag">wxEXPAND</property> + <property name="flag">wxEXPAND|wxALL</property> <property name="proportion">1</property> <object class="wxStaticBoxSizer" expanded="1"> <property name="id">wxID_ANY</property> @@ -1989,7 +1989,7 @@ </object> <object class="sizeritem" expanded="1"> <property name="border">5</property> - <property name="flag">wxEXPAND</property> + <property name="flag">wxEXPAND|wxALL</property> <property name="proportion">0</property> <object class="wxGridSizer" expanded="1"> <property name="cols">4</property> @@ -2013,7 +2013,7 @@ <event name="OnUpdateUI"></event> <object class="sizeritem" expanded="1"> <property name="border">2</property> - <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxTOP</property> + <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxALL</property> <property name="proportion">1</property> <object class="wxButton" expanded="1"> <property name="BottomDockable">1</property> @@ -2103,19 +2103,19 @@ </object> <object class="sizeritem" expanded="1"> <property name="border">5</property> - <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxEXPAND</property> + <property name="flag">wxEXPAND</property> <property name="proportion">1</property> <object class="wxStaticBoxSizer" expanded="1"> <property name="id">wxID_ANY</property> <property name="label"></property> - <property name="minimum_size">-1,-1</property> + <property name="minimum_size">139,-1</property> <property name="name">sbSizer41</property> <property name="orient">wxVERTICAL</property> <property name="permission">none</property> <event name="OnUpdateUI"></event> <object class="sizeritem" expanded="1"> <property name="border">2</property> - <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxTOP</property> + <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxALL</property> <property name="proportion">1</property> <object class="wxButton" expanded="1"> <property name="BottomDockable">1</property> @@ -2205,19 +2205,19 @@ </object> <object class="sizeritem" expanded="1"> <property name="border">5</property> - <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxEXPAND</property> + <property name="flag">wxEXPAND</property> <property name="proportion">1</property> <object class="wxStaticBoxSizer" expanded="1"> <property name="id">wxID_ANY</property> <property name="label"></property> - <property name="minimum_size">-1,-1</property> + <property name="minimum_size">139,-1</property> <property name="name">sbSizer42</property> <property name="orient">wxVERTICAL</property> <property name="permission">none</property> <event name="OnUpdateUI"></event> <object class="sizeritem" expanded="1"> <property name="border">2</property> - <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxTOP</property> + <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxALL</property> <property name="proportion">1</property> <object class="wxButton" expanded="1"> <property name="BottomDockable">1</property> @@ -2307,19 +2307,19 @@ </object> <object class="sizeritem" expanded="1"> <property name="border">5</property> - <property name="flag">wxALIGN_RIGHT|wxEXPAND</property> + <property name="flag">wxEXPAND</property> <property name="proportion">1</property> <object class="wxStaticBoxSizer" expanded="1"> <property name="id">wxID_ANY</property> <property name="label"></property> - <property name="minimum_size">-1,-1</property> + <property name="minimum_size">139,-1</property> <property name="name">sbSizer43</property> <property name="orient">wxVERTICAL</property> <property name="permission">none</property> <event name="OnUpdateUI"></event> <object class="sizeritem" expanded="1"> <property name="border">2</property> - <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxTOP</property> + <property name="flag">wxALIGN_CENTER_HORIZONTAL|wxEXPAND|wxALL</property> <property name="proportion">1</property> <object class="wxButton" expanded="1"> <property name="BottomDockable">1</property> diff --git a/src/Main/Forms/VolumeCreationWizard.cpp b/src/Main/Forms/VolumeCreationWizard.cpp index b28b1c3..c0201b0 100644 --- a/src/Main/Forms/VolumeCreationWizard.cpp +++ b/src/Main/Forms/VolumeCreationWizard.cpp @@ -475,6 +475,7 @@ namespace VeraCrypt #elif defined (TC_MACOSX) case VolumeCreationOptions::FilesystemType::MacOsExt: fsFormatter = "newfs_hfs"; break; case VolumeCreationOptions::FilesystemType::exFAT: fsFormatter = "newfs_exfat"; break; + case VolumeCreationOptions::FilesystemType::APFS: fsFormatter = "newfs_apfs"; break; #elif defined (TC_FREEBSD) || defined (TC_SOLARIS) case VolumeCreationOptions::FilesystemType::UFS: fsFormatter = "newfs" ; break; #endif diff --git a/src/Main/Forms/VolumeFormatOptionsWizardPage.cpp b/src/Main/Forms/VolumeFormatOptionsWizardPage.cpp index ec0d778..3865705 100644 --- a/src/Main/Forms/VolumeFormatOptionsWizardPage.cpp +++ b/src/Main/Forms/VolumeFormatOptionsWizardPage.cpp @@ -13,6 +13,7 @@ #include "System.h" #include "Main/GraphicUserInterface.h" #include "VolumeFormatOptionsWizardPage.h" +#include <wx/platinfo.h> namespace VeraCrypt { @@ -40,6 +41,8 @@ namespace VeraCrypt #elif defined (TC_MACOSX) FilesystemTypeChoice->Append (L"Mac OS Extended", (void *) VolumeCreationOptions::FilesystemType::MacOsExt); FilesystemTypeChoice->Append (L"exFAT", (void *) VolumeCreationOptions::FilesystemType::exFAT); + if (wxPlatformInfo::Get().CheckOSVersion (10, 13)) + FilesystemTypeChoice->Append (L"APFS", (void *) VolumeCreationOptions::FilesystemType::APFS); #elif defined (TC_FREEBSD) || defined (TC_SOLARIS) FilesystemTypeChoice->Append (L"UFS", (void *) VolumeCreationOptions::FilesystemType::UFS); #endif @@ -81,6 +84,7 @@ namespace VeraCrypt case VolumeCreationOptions::FilesystemType::Ext3: FilesystemTypeChoice->SetStringSelection (L"Linux Ext3"); break; case VolumeCreationOptions::FilesystemType::Ext4: FilesystemTypeChoice->SetStringSelection (L"Linux Ext4"); break; case VolumeCreationOptions::FilesystemType::MacOsExt: FilesystemTypeChoice->SetStringSelection (L"Mac OS Extended"); break; + case VolumeCreationOptions::FilesystemType::APFS: FilesystemTypeChoice->SetStringSelection (L"APFS"); break; case VolumeCreationOptions::FilesystemType::UFS: FilesystemTypeChoice->SetStringSelection (L"UFS"); break; default: diff --git a/src/Main/Forms/VolumePasswordPanel.cpp b/src/Main/Forms/VolumePasswordPanel.cpp index 2859762..8d5e8bc 100644 --- a/src/Main/Forms/VolumePasswordPanel.cpp +++ b/src/Main/Forms/VolumePasswordPanel.cpp @@ -159,10 +159,8 @@ namespace VeraCrypt if (enableKeyfiles) { SetDropTarget (new FileDropTarget (this)); -#ifdef TC_MACOSX foreach (wxWindow *c, GetChildren()) c->SetDropTarget (new FileDropTarget (this)); -#endif } Layout(); diff --git a/src/Main/GraphicUserInterface.cpp b/src/Main/GraphicUserInterface.cpp index b7b4cf4..b7b4cf4 100644..100755 --- a/src/Main/GraphicUserInterface.cpp +++ b/src/Main/GraphicUserInterface.cpp diff --git a/src/Main/Main.make b/src/Main/Main.make index 0bdd951..a154a84 100644..100755 --- a/src/Main/Main.make +++ b/src/Main/Main.make @@ -210,16 +210,26 @@ endif cp $(BASE_DIR)/../doc/html/* $(APPNAME).app/Contents/Resources/doc/HTML echo -n APPLTRUE >$(APPNAME).app/Contents/PkgInfo +ifdef VC_LEGACY_BUILD + sed -e 's/_VERSION_/$(patsubst %a,%.1,$(patsubst %b,%.2,$(TC_VERSION)))/' ../Build/Resources/MacOSX/Info.plist.legacy.xml >$(APPNAME).app/Contents/Info.plist +else sed -e 's/_VERSION_/$(patsubst %a,%.1,$(patsubst %b,%.2,$(TC_VERSION)))/' ../Build/Resources/MacOSX/Info.plist.xml >$(APPNAME).app/Contents/Info.plist +endif codesign -s "Developer ID Application: IDRIX (Z933746L2S)" --timestamp $(APPNAME).app install: prepare cp -R $(APPNAME).app /Applications/. package: prepare +ifdef VC_LEGACY_BUILD + /usr/local/bin/packagesbuild $(BASE_DIR)/Setup/MacOSX/veracrypt_Legacy.pkgproj + productsign --sign "Developer ID Installer: IDRIX (Z933746L2S)" --timestamp "$(BASE_DIR)/Setup/MacOSX/VeraCrypt Legacy $(TC_VERSION).pkg" $(BASE_DIR)/Setup/MacOSX/VeraCrypt_$(TC_VERSION).pkg + rm -f $(APPNAME)_Legacy_$(TC_VERSION).dmg +else /usr/local/bin/packagesbuild $(BASE_DIR)/Setup/MacOSX/veracrypt.pkgproj productsign --sign "Developer ID Installer: IDRIX (Z933746L2S)" --timestamp "$(BASE_DIR)/Setup/MacOSX/VeraCrypt $(TC_VERSION).pkg" $(BASE_DIR)/Setup/MacOSX/VeraCrypt_$(TC_VERSION).pkg rm -f $(APPNAME)_$(TC_VERSION).dmg +endif rm -f "$(BASE_DIR)/Setup/MacOSX/template.dmg" rm -fr "$(BASE_DIR)/Setup/MacOSX/VeraCrypt_dmg" mkdir -p "$(BASE_DIR)/Setup/MacOSX/VeraCrypt_dmg" @@ -227,7 +237,11 @@ package: prepare hdiutil attach "$(BASE_DIR)/Setup/MacOSX/template.dmg" -noautoopen -quiet -mountpoint "$(BASE_DIR)/Setup/MacOSX/VeraCrypt_dmg" cp "$(BASE_DIR)/Setup/MacOSX/VeraCrypt_$(TC_VERSION).pkg" "$(BASE_DIR)/Setup/MacOSX/VeraCrypt_dmg/VeraCrypt_Installer.pkg" hdiutil detach "$(BASE_DIR)/Setup/MacOSX/VeraCrypt_dmg" -quiet -force +ifdef VC_LEGACY_BUILD + hdiutil convert "$(BASE_DIR)/Setup/MacOSX/template.dmg" -quiet -format UDZO -imagekey zlib-level=9 -o $(APPNAME)_Legacy_$(TC_VERSION).dmg +else hdiutil convert "$(BASE_DIR)/Setup/MacOSX/template.dmg" -quiet -format UDZO -imagekey zlib-level=9 -o $(APPNAME)_$(TC_VERSION).dmg +endif rm -f "$(BASE_DIR)/Setup/MacOSX/template.dmg" rm -fr "$(BASE_DIR)/Setup/MacOSX/VeraCrypt_dmg" endif diff --git a/src/Main/TextUserInterface.cpp b/src/Main/TextUserInterface.cpp index b5263c4..1e007fc 100644 --- a/src/Main/TextUserInterface.cpp +++ b/src/Main/TextUserInterface.cpp @@ -20,6 +20,7 @@ #include "Platform/Unix/Process.h" #endif +#include <wx/platinfo.h> #include "Common/SecurityToken.h" #include "Core/RandomNumberGenerator.h" #include "Application.h" @@ -785,6 +786,10 @@ namespace VeraCrypt #elif defined (TC_MACOSX) ShowInfo (L" 3) Mac OS Extended"); filesystems.push_back (VolumeCreationOptions::FilesystemType::MacOsExt); ShowInfo (L" 4) exFAT"); filesystems.push_back (VolumeCreationOptions::FilesystemType::exFAT); + if (wxPlatformInfo::Get().CheckOSVersion (10, 13)) + { + ShowInfo (L" 5) APFS"); filesystems.push_back (VolumeCreationOptions::FilesystemType::APFS); + } #elif defined (TC_FREEBSD) || defined (TC_SOLARIS) ShowInfo (L" 3) UFS"); filesystems.push_back (VolumeCreationOptions::FilesystemType::UFS); #endif @@ -881,6 +886,7 @@ namespace VeraCrypt #elif defined (TC_MACOSX) case VolumeCreationOptions::FilesystemType::MacOsExt: fsFormatter = "newfs_hfs"; break; case VolumeCreationOptions::FilesystemType::exFAT: fsFormatter = "newfs_exfat"; break; + case VolumeCreationOptions::FilesystemType::APFS: fsFormatter = "newfs_apfs"; break; #elif defined (TC_FREEBSD) || defined (TC_SOLARIS) case VolumeCreationOptions::FilesystemType::UFS: fsFormatter = "newfs" ; break; #endif diff --git a/src/Makefile b/src/Makefile index 7e7172b..fe0c143 100644 --- a/src/Makefile +++ b/src/Makefile @@ -91,6 +91,9 @@ ifeq "$(origin WXSTATIC)" "command line" export VC_WX_STATIC := 1 WX_CONFIG = $(WX_BUILD_DIR)/wx-config WX_CONFIG_ARGS += --static + ifneq "$(WXSTATIC)" "FULL" + export VC_WX_MINIMAL := 1 + endif endif @@ -224,6 +227,10 @@ ifeq "$(shell uname -s)" "Linux" WXCONFIG_CFLAGS += -mno-sse2 WXCONFIG_CXXFLAGS += -mno-sse2 endif + + ifeq "$(origin WITHGTK3)" "command line" + WX_CONFIGURE_FLAGS += --with-gtk=3 + endif endif @@ -235,19 +242,25 @@ ifeq "$(shell uname -s)" "Darwin" APPNAME := VeraCrypt export VC_OSX_TARGET ?= 10.7 + export VC_OSX_SDK ?= $(VC_OSX_TARGET) #check to see if XCode 3 path exists.Otherwise, use XCode 4 path - VC_OSX_SDK := /Developer/SDKs/MacOSX$(VC_OSX_TARGET).sdk - ifeq ($(wildcard $(VC_OSX_SDK)/SDKSettings.plist),) - VC_OSX_SDK := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$(VC_OSX_TARGET).sdk + VC_OSX_SDK_PATH := /Developer/SDKs/MacOSX$(VC_OSX_SDK).sdk + ifeq ($(wildcard $(VC_OSX_SDK_PATH)/SDKSettings.plist),) + VC_OSX_SDK_PATH := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$(VC_OSX_SDK).sdk + endif + + #----- Legacy build if OSX <= 10.8: we build both 32-bit and 64-bit ---- + ifneq (,$(filter 10.6 10.7 10.8,$(VC_OSX_TARGET))) + export VC_LEGACY_BUILD := 1 endif CC := gcc CXX := g++ - C_CXX_FLAGS += -DTC_UNIX -DTC_BSD -DTC_MACOSX -mmacosx-version-min=$(VC_OSX_TARGET) -isysroot $(VC_OSX_SDK) - LFLAGS += -mmacosx-version-min=$(VC_OSX_TARGET) -Wl,-syslibroot $(VC_OSX_SDK) - WX_CONFIGURE_FLAGS += --with-macosx-version-min=$(VC_OSX_TARGET) --with-macosx-sdk=$(VC_OSX_SDK) + C_CXX_FLAGS += -DTC_UNIX -DTC_BSD -DTC_MACOSX -mmacosx-version-min=$(VC_OSX_TARGET) -isysroot $(VC_OSX_SDK_PATH) + LFLAGS += -mmacosx-version-min=$(VC_OSX_TARGET) -Wl,-syslibroot $(VC_OSX_SDK_PATH) + WX_CONFIGURE_FLAGS += --with-macosx-version-min=$(VC_OSX_TARGET) --with-macosx-sdk=$(VC_OSX_SDK_PATH) ifeq "$(CPU_ARCH)" "x64" CPU_ARCH = x86 @@ -277,10 +290,18 @@ ifeq "$(shell uname -s)" "Darwin" S := $(C_CXX_FLAGS) C_CXX_FLAGS = $(subst -MMD,,$(S)) - C_CXX_FLAGS += -gfull -arch i386 -arch x86_64 - LFLAGS += -Wl,-dead_strip -arch i386 -arch x86_64 + C_CXX_FLAGS += -gfull -arch x86_64 + LFLAGS += -Wl,-dead_strip -arch x86_64 + + #----- Legacy build: we build both 32-bit and 64-bit ---- + ifdef VC_LEGACY_BUILD + C_CXX_FLAGS += -arch i386 + LFLAGS += -arch i386 + WX_CONFIGURE_FLAGS += --enable-universal_binary=i386,x86_64 + else + WX_CONFIGURE_FLAGS += --disable-universal_binary + endif - WX_CONFIGURE_FLAGS += --enable-universal_binary=i386,x86_64 WXCONFIG_CFLAGS += -gfull WXCONFIG_CXXFLAGS += -gfull @@ -359,8 +380,10 @@ CFLAGS := $(C_CXX_FLAGS) $(CFLAGS) $(TC_EXTRA_CFLAGS) CXXFLAGS := $(C_CXX_FLAGS) $(CXXFLAGS) $(TC_EXTRA_CXXFLAGS) LFLAGS := $(LFLAGS) $(TC_EXTRA_LFLAGS) -WX_CONFIGURE_FLAGS += --enable-unicode -disable-shared --disable-dependency-tracking --disable-compat26 --enable-exceptions --enable-std_string --enable-dataobj --enable-mimetype \ - --disable-protocol --disable-protocols --disable-url --disable-ipc --disable-sockets --disable-fs_inet --disable-ole --disable-docview --disable-clipboard \ +WX_CONFIGURE_FLAGS += --enable-unicode -disable-shared --disable-dependency-tracking --enable-exceptions --enable-std_string --enable-dataobj --enable-mimetype + +ifdef VC_WX_MINIMAL +WX_CONFIGURE_FLAGS += --disable-protocol --disable-protocols --disable-url --disable-ipc --disable-sockets --disable-fs_inet --disable-ole --disable-docview --disable-clipboard \ --disable-help --disable-html --disable-mshtmlhelp --disable-htmlhelp --disable-mdi --disable-metafile --disable-webkit --disable-webview \ --disable-xrc --disable-aui --disable-postscript --disable-printarch \ --disable-arcstream --disable-fs_archive --disable-fs_zip --disable-tarstream --disable-zipstream \ @@ -376,16 +399,18 @@ WX_CONFIGURE_FLAGS += --enable-unicode -disable-shared --disable-dependency-trac --disable-sound --disable-mediactrl --disable-joystick --disable-apple_ieee \ --disable-gif --disable-pcx --disable-tga --disable-iff --disable-gif --disable-pnm --disable-svg \ --without-expat --without-libtiff --without-libjpeg --without-libpng -without-regex --without-zlib - + ifeq "$(PLATFORM)" "Linux" WX_CONFIGURE_FLAGS += --disable-tooltips -ifeq "$(origin WITHGTK3)" "command line" - WX_CONFIGURE_FLAGS += --with-gtk=3 +ifneq "$(origin WITHGTK3)" "command line" + WX_CONFIGURE_FLAGS += --disable-graphics_ctx +endif else WX_CONFIGURE_FLAGS += --disable-graphics_ctx endif endif + #------ Project build ------ PROJ_DIRS := Platform Volume Driver/Fuse Core Main @@ -428,4 +453,4 @@ endif cd "$(WX_BUILD_DIR)" && "$(WX_ROOT)/configure" $(WX_CONFIGURE_FLAGS) >/dev/null @echo Building wxWidgets library... - cd "$(WX_BUILD_DIR)" && $(MAKE) + cd "$(WX_BUILD_DIR)" && $(MAKE) -j 4 diff --git a/src/Mount/Favorites.cpp b/src/Mount/Favorites.cpp index eafc473..e93b920 100644 --- a/src/Mount/Favorites.cpp +++ b/src/Mount/Favorites.cpp @@ -260,6 +260,13 @@ namespace VeraCrypt if (reqConfig != (ReadDriverConfigurationFlags() & TC_DRIVER_CONFIG_CACHE_BOOT_PASSWORD_FOR_SYS_FAVORITES)) BootEncObj.SetDriverConfigurationFlag (TC_DRIVER_CONFIG_CACHE_BOOT_PASSWORD_FOR_SYS_FAVORITES, reqConfig ? true : false); + if (!BootEncObj.IsSystemFavoritesServiceRunning()) + { + // The system favorites service should be always running + // If it is stopped for some reason, we reconfigure it + BootEncObj.RegisterSystemFavoritesService (TRUE); + } + SetDriverConfigurationFlag (TC_DRIVER_CONFIG_DISABLE_NONADMIN_SYS_FAVORITES_ACCESS, IsDlgButtonChecked (hwndDlg, IDC_FAVORITE_DISABLE_HOTKEY)); } catch (Exception &e) diff --git a/src/Mount/Mount.c b/src/Mount/Mount.c index ed57a61..833dbe0 100644 --- a/src/Mount/Mount.c +++ b/src/Mount/Mount.c @@ -9422,25 +9422,24 @@ static DWORD WINAPI SystemFavoritesServiceCtrlHandler ( DWORD dwControl, case SERVICE_CONTROL_STOP: SystemFavoritesServiceSetStatus (SERVICE_STOP_PENDING); - if (bSystemIsGPT) + if (!(BootEncObj->ReadServiceConfigurationFlags () & VC_SYSTEM_FAVORITES_SERVICE_CONFIG_DONT_UPDATE_LOADER)) { - uint32 serviceFlags = BootEncObj->ReadServiceConfigurationFlags (); - if (!(serviceFlags & VC_SYSTEM_FAVORITES_SERVICE_CONFIG_DONT_UPDATE_LOADER)) + try { - try - { - BootEncryption::UpdateSetupConfigFile (true); - if (!BootEncStatus.HiddenSystem) - { - // re-install our bootloader again in case the update process has removed it. - BootEncryption bootEnc (NULL, true); - bootEnc.InstallBootLoader (true); - } - } - catch (...) + BootEncryption::UpdateSetupConfigFile (true); + if (!BootEncStatus.HiddenSystem) { + // re-install our bootloader again in case the update process has removed it. + bool bForceSetNextBoot = false; + if (BootEncObj->ReadServiceConfigurationFlags () & VC_SYSTEM_FAVORITES_SERVICE_CONFIG_FORCE_SET_BOOTNEXT) + bForceSetNextBoot = true; + BootEncryption bootEnc (NULL, true, bForceSetNextBoot); + bootEnc.InstallBootLoader (true); } } + catch (...) + { + } } /* clear VC_DRIVER_CONFIG_CLEAR_KEYS_ON_NEW_DEVICE_INSERTION flag */ @@ -11600,6 +11599,8 @@ static BOOL CALLBACK BootLoaderPreferencesDlgProc (HWND hwndDlg, UINT msg, WPARA { WORD lw = LOWORD (wParam); static std::string platforminfo; + static byte currentUserConfig; + static string currentCustomUserMessage; switch (msg) { @@ -11626,6 +11627,14 @@ static BOOL CALLBACK BootLoaderPreferencesDlgProc (HWND hwndDlg, UINT msg, WPARA BOOL bClearKeysEnabled = (driverConfig & VC_DRIVER_CONFIG_CLEAR_KEYS_ON_NEW_DEVICE_INSERTION)? TRUE : FALSE; BOOL bIsHiddenOS = IsHiddenOSRunning (); + if (bClearKeysEnabled) + { + // the clear keys option works only if the service is running + if (!BootEncObj->IsSystemFavoritesServiceRunning()) + bClearKeysEnabled = false; + } + + if (!BootEncObj->ReadBootSectorConfig (nullptr, 0, &userConfig, &customUserMessage, &bootLoaderVersion)) { // operations canceled @@ -11633,6 +11642,10 @@ static BOOL CALLBACK BootLoaderPreferencesDlgProc (HWND hwndDlg, UINT msg, WPARA return 1; } + // we store current configuration in order to be able to detect if user changed it or not after clicking OK + currentUserConfig = userConfig; + currentCustomUserMessage = customUserMessage; + if (bootLoaderVersion != VERSION_NUM) Warning ("BOOT_LOADER_VERSION_INCORRECT_PREFERENCES", hwndDlg); @@ -11702,11 +11715,16 @@ static BOOL CALLBACK BootLoaderPreferencesDlgProc (HWND hwndDlg, UINT msg, WPARA { try { - std::string dcsprop = ReadESPFile (L"\\EFI\\VeraCrypt\\DcsProp", true); + std::string currentDcsprop = ReadESPFile (L"\\EFI\\VeraCrypt\\DcsProp", true); + std::string dcsprop = currentDcsprop; while (TextEditDialogBox(FALSE, hwndDlg, GetString ("BOOT_LOADER_CONFIGURATION_FILE"), dcsprop) == IDOK) { - if (validateDcsPropXml (dcsprop.c_str())) + if (0 == strcmp(dcsprop.c_str(), currentDcsprop.c_str())) + { + break; + } + else if (validateDcsPropXml (dcsprop.c_str())) { WriteESPFile (L"\\EFI\\VeraCrypt\\DcsProp", (LPBYTE) dcsprop.c_str(), (DWORD) dcsprop.size(), true); break; @@ -11746,17 +11764,7 @@ static BOOL CALLBACK BootLoaderPreferencesDlgProc (HWND hwndDlg, UINT msg, WPARA if (!bSystemIsGPT) GetDlgItemTextA (hwndDlg, IDC_CUSTOM_BOOT_LOADER_MESSAGE, customUserMessage, sizeof (customUserMessage)); - byte userConfig; - try - { - if (!BootEncObj->ReadBootSectorConfig (nullptr, 0, &userConfig)) - return 1; - } - catch (Exception &e) - { - e.Show (hwndDlg); - return 1; - } + byte userConfig = currentUserConfig; if (IsDlgButtonChecked (hwndDlg, IDC_DISABLE_BOOT_LOADER_PIM_PROMPT)) userConfig |= TC_BOOT_USER_CFG_FLAG_DISABLE_PIM; @@ -11765,22 +11773,22 @@ static BOOL CALLBACK BootLoaderPreferencesDlgProc (HWND hwndDlg, UINT msg, WPARA if (bSystemIsGPT) { - if (IsDlgButtonChecked (hwndDlg, IDC_DISABLE_BOOT_LOADER_HASH_PROMPT)) - userConfig |= TC_BOOT_USER_CFG_FLAG_STORE_HASH; - else - userConfig &= ~TC_BOOT_USER_CFG_FLAG_STORE_HASH; + if (IsDlgButtonChecked (hwndDlg, IDC_DISABLE_BOOT_LOADER_HASH_PROMPT)) + userConfig |= TC_BOOT_USER_CFG_FLAG_STORE_HASH; + else + userConfig &= ~TC_BOOT_USER_CFG_FLAG_STORE_HASH; } else { if (IsDlgButtonChecked (hwndDlg, IDC_DISABLE_BOOT_LOADER_OUTPUT)) - userConfig |= TC_BOOT_USER_CFG_FLAG_SILENT_MODE; - else - userConfig &= ~TC_BOOT_USER_CFG_FLAG_SILENT_MODE; + userConfig |= TC_BOOT_USER_CFG_FLAG_SILENT_MODE; + else + userConfig &= ~TC_BOOT_USER_CFG_FLAG_SILENT_MODE; - if (!IsDlgButtonChecked (hwndDlg, IDC_ALLOW_ESC_PBA_BYPASS)) - userConfig |= TC_BOOT_USER_CFG_FLAG_DISABLE_ESC; - else - userConfig &= ~TC_BOOT_USER_CFG_FLAG_DISABLE_ESC; + if (!IsDlgButtonChecked (hwndDlg, IDC_ALLOW_ESC_PBA_BYPASS)) + userConfig |= TC_BOOT_USER_CFG_FLAG_DISABLE_ESC; + else + userConfig &= ~TC_BOOT_USER_CFG_FLAG_DISABLE_ESC; } try @@ -11789,7 +11797,21 @@ static BOOL CALLBACK BootLoaderPreferencesDlgProc (HWND hwndDlg, UINT msg, WPARA BOOL bPimCacheEnabled = IsDlgButtonChecked (hwndDlg, IDC_BOOT_LOADER_CACHE_PIM); BOOL bBlockSysEncTrimEnabled = IsDlgButtonChecked (hwndDlg, IDC_BLOCK_SYSENC_TRIM); BOOL bClearKeysEnabled = IsDlgButtonChecked (hwndDlg, IDC_CLEAR_KEYS_ON_NEW_DEVICE_INSERTION); - BootEncObj->WriteBootSectorUserConfig (userConfig, customUserMessage, prop.volumePim, prop.pkcs5); + + if (bClearKeysEnabled && !BootEncObj->IsSystemFavoritesServiceRunning()) + { + // the system favorite service service should be running + // if it is not the case, report a failure and quit + std::string techInfo = SRC_POS; + techInfo += "\nIsSystemFavoritesServiceRunning = False."; + ReportUnexpectedState (techInfo.c_str()); + return 1; + } + + // only write boot configuration if something changed + if ((userConfig != currentUserConfig) || (!bSystemIsGPT && (customUserMessage != currentCustomUserMessage))) + BootEncObj->WriteBootSectorUserConfig (userConfig, customUserMessage, prop.volumePim, prop.pkcs5); + SetDriverConfigurationFlag (TC_DRIVER_CONFIG_CACHE_BOOT_PASSWORD, bPasswordCacheEnabled); SetDriverConfigurationFlag (TC_DRIVER_CONFIG_CACHE_BOOT_PIM, (bPasswordCacheEnabled && bPimCacheEnabled)? TRUE : FALSE); SetDriverConfigurationFlag (TC_DRIVER_CONFIG_DISABLE_EVIL_MAID_ATTACK_DETECTION, IsDlgButtonChecked (hwndDlg, IDC_DISABLE_EVIL_MAID_ATTACK_DETECTION)); @@ -11841,7 +11863,18 @@ static BOOL CALLBACK BootLoaderPreferencesDlgProc (HWND hwndDlg, UINT msg, WPARA case IDC_CLEAR_KEYS_ON_NEW_DEVICE_INSERTION: if (IsDlgButtonChecked (hwndDlg, IDC_CLEAR_KEYS_ON_NEW_DEVICE_INSERTION)) { - Warning ("CLEAR_KEYS_ON_DEVICE_INSERTION_WARNING", hwndDlg); + if (!BootEncObj->IsSystemFavoritesServiceRunning()) + { + // the system favorite service service should be running + // if it is not the case, report a failure + std::string techInfo = SRC_POS; + techInfo += "\nIsSystemFavoritesServiceRunning = False."; + ReportUnexpectedState (techInfo.c_str()); + + CheckDlgButton (hwndDlg, IDC_CLEAR_KEYS_ON_NEW_DEVICE_INSERTION, BST_UNCHECKED); + } + else + Warning ("CLEAR_KEYS_ON_DEVICE_INSERTION_WARNING", hwndDlg); } break; diff --git a/src/Mount/Mount.rc b/src/Mount/Mount.rc index c954d04..4fb1477 100644 --- a/src/Mount/Mount.rc +++ b/src/Mount/Mount.rc @@ -548,8 +548,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,24,6,0 - PRODUCTVERSION 1,24,6,0 + FILEVERSION 1,24,7,1 + PRODUCTVERSION 1,24,7,1 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -566,11 +566,11 @@ BEGIN BEGIN VALUE "CompanyName", "IDRIX" VALUE "FileDescription", "VeraCrypt" - VALUE "FileVersion", "1.24" + VALUE "FileVersion", "1.24-Hotfix1" VALUE "LegalTrademarks", "VeraCrypt" VALUE "OriginalFilename", "VeraCrypt.exe" VALUE "ProductName", "VeraCrypt" - VALUE "ProductVersion", "1.24" + VALUE "ProductVersion", "1.24-Hotfix1" END END BLOCK "VarFileInfo" diff --git a/src/Setup/MacOSX/veracrypt.pkgproj b/src/Setup/MacOSX/veracrypt.pkgproj index 1cdd0c2..409e578 100644..100755 --- a/src/Setup/MacOSX/veracrypt.pkgproj +++ b/src/Setup/MacOSX/veracrypt.pkgproj @@ -5,6 +5,10 @@ <key>PACKAGES</key> <array> <dict> + <key>MUST-CLOSE-APPLICATION-ITEMS</key> + <array/> + <key>MUST-CLOSE-APPLICATIONS</key> + <false/> <key>PACKAGE_FILES</key> <dict> <key>DEFAULT_INSTALL_LOCATION</key> @@ -253,7 +257,7 @@ <key>PATH_TYPE</key> <integer>0</integer> <key>PERMISSIONS</key> - <integer>493</integer> + <integer>1005</integer> <key>TYPE</key> <integer>1</integer> <key>UID</key> @@ -355,6 +359,38 @@ <key>UID</key> <integer>0</integer> </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Automator</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Extensions</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> </array> <key>GID</key> <integer>0</integer> @@ -468,15 +504,29 @@ </dict> <key>PAYLOAD_TYPE</key> <integer>0</integer> + <key>PRESERVE_EXTENDED_ATTRIBUTES</key> + <false/> + <key>SHOW_INVISIBLE</key> + <false/> + <key>SPLIT_FORKS</key> + <true/> + <key>TREAT_MISSING_FILES_AS_WARNING</key> + <false/> <key>VERSION</key> - <integer>2</integer> + <integer>5</integer> </dict> <key>PACKAGE_SCRIPTS</key> <dict> <key>POSTINSTALL_PATH</key> - <dict/> + <dict> + <key>PATH_TYPE</key> + <integer>0</integer> + </dict> <key>PREINSTALL_PATH</key> - <dict/> + <dict> + <key>PATH_TYPE</key> + <integer>0</integer> + </dict> <key>RESOURCES</key> <array/> </dict> @@ -486,6 +536,8 @@ <integer>1</integer> <key>CONCLUSION_ACTION</key> <integer>0</integer> + <key>FOLLOW_SYMBOLIC_LINKS</key> + <false/> <key>IDENTIFIER</key> <string>com.idrix.pkg.veracrypt</string> <key>LOCATION</key> @@ -494,9 +546,19 @@ <string>veracrypt</string> <key>OVERWRITE_PERMISSIONS</key> <false/> + <key>PAYLOAD_SIZE</key> + <integer>-1</integer> + <key>REFERENCE_PATH</key> + <string></string> + <key>RELOCATABLE</key> + <false/> + <key>USE_HFS+_COMPRESSION</key> + <false/> <key>VERSION</key> - <string>1.24.6</string> + <string>1.24.7</string> </dict> + <key>TYPE</key> + <integer>0</integer> <key>UUID</key> <string>B14381D9-EC5F-43E4-B971-82AB3D132A64</string> </dict> @@ -524,14 +586,15 @@ <dict> <key>BACKGROUND</key> <dict> - <key>ALIGNMENT</key> - <integer>4</integer> - <key>BACKGROUND_PATH</key> - <dict/> - <key>CUSTOM</key> - <false/> - <key>SCALING</key> - <integer>0</integer> + <key>APPAREANCES</key> + <dict> + <key>DARK_AQUA</key> + <dict/> + <key>LIGHT_AQUA</key> + <dict/> + </dict> + <key>SHARED_SETTINGS_FOR_ALL_APPAREANCES</key> + <true/> </dict> <key>INSTALLATION TYPE</key> <dict> @@ -567,7 +630,7 @@ <dict/> </dict> </dict> - <key>INSTALLATION TYPE</key> + <key>MODE</key> <integer>0</integer> </dict> <key>INSTALLATION_STEPS</key> @@ -636,8 +699,6 @@ </dict> <key>LICENSE</key> <dict> - <key>KEYWORDS</key> - <dict/> <key>LOCALIZATIONS</key> <array> <dict> @@ -690,7 +751,7 @@ <key>IC_REQUIREMENT_CPU_ARCHITECTURE_FAMILY</key> <integer>2</integer> <key>IC_REQUIREMENT_CPU_INTEL_ARCHITECTURE_TYPE</key> - <integer>0</integer> + <integer>2</integer> <key>IC_REQUIREMENT_CPU_MINIMUM_CPU_CORES_COUNT</key> <integer>1</integer> <key>IC_REQUIREMENT_CPU_MINIMUM_FREQUENCY</key> @@ -710,7 +771,7 @@ <key>SECONDARY_VALUE</key> <string></string> <key>VALUE</key> - <string>VeraCrypt runs only on Intel platforms.</string> + <string>VeraCrypt runs only on Intel 64-bit platforms.</string> </dict> <dict> <key>LANGUAGE</key> @@ -718,7 +779,7 @@ <key>SECONDARY_VALUE</key> <string></string> <key>VALUE</key> - <string>VeraCrypt supporte seulement les platformes Intel.</string> + <string>VeraCrypt supporte seulement les platformes Intel 64 bit.</string> </dict> </array> <key>NAME</key> @@ -736,7 +797,7 @@ <key>IC_REQUIREMENT_OS_DISTRIBUTION_TYPE</key> <integer>0</integer> <key>IC_REQUIREMENT_OS_MINIMUM_VERSION</key> - <integer>100701</integer> + <integer>100900</integer> </dict> <key>IC_REQUIREMENT_CHECK_TYPE</key> <integer>0</integer> @@ -748,13 +809,13 @@ <key>LANGUAGE</key> <string>English</string> <key>VALUE</key> - <string>VeraCrypt requires MacOSX 10.7.1 and above.</string> + <string>VeraCrypt requires MacOSX 10.9 and above.</string> </dict> <dict> <key>LANGUAGE</key> <string>French</string> <key>VALUE</key> - <string>VeraCrypt nécessite MacOSX 10.7.1 et supérieur.</string> + <string>VeraCrypt nécessite MacOSX 10.9 et supérieur.</string> </dict> </array> <key>NAME</key> @@ -813,10 +874,6 @@ https://osxfuse.github.io/ <true/> </dict> </array> - <key>POSTINSTALL_PATH</key> - <dict/> - <key>PREINSTALL_PATH</key> - <dict/> <key>RESOURCES</key> <array/> <key>ROOT_VOLUME_ONLY</key> @@ -824,8 +881,6 @@ https://osxfuse.github.io/ </dict> <key>PROJECT_SETTINGS</key> <dict> - <key>ADVANCED_OPTIONS</key> - <dict/> <key>BUILD_FORMAT</key> <integer>0</integer> <key>BUILD_PATH</key> @@ -1004,7 +1059,11 @@ https://osxfuse.github.io/ </dict> </array> <key>NAME</key> - <string>VeraCrypt 1.24</string> + <string>VeraCrypt 1.24-Hotfix1</string> + <key>PAYLOAD_ONLY</key> + <false/> + <key>TREAT_MISSING_PRESENTATION_DOCUMENTS_AS_WARNING</key> + <false/> </dict> </dict> <key>SHARED_GLOBAL_DATA</key> diff --git a/src/Setup/MacOSX/veracrypt_Legacy.pkgproj b/src/Setup/MacOSX/veracrypt_Legacy.pkgproj new file mode 100755 index 0000000..bbfa7ce --- /dev/null +++ b/src/Setup/MacOSX/veracrypt_Legacy.pkgproj @@ -0,0 +1,1079 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>PACKAGES</key> + <array> + <dict> + <key>MUST-CLOSE-APPLICATION-ITEMS</key> + <array/> + <key>MUST-CLOSE-APPLICATIONS</key> + <false/> + <key>PACKAGE_FILES</key> + <dict> + <key>DEFAULT_INSTALL_LOCATION</key> + <string>/</string> + <key>HIERARCHY</key> + <dict> + <key>CHILDREN</key> + <array> + <dict> + <key>CHILDREN</key> + <array> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>80</integer> + <key>PATH</key> + <string>Utilities</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>BUNDLE_CAN_DOWNGRADE</key> + <true/> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>80</integer> + <key>PATH</key> + <string>../../Main/VeraCrypt.app</string> + <key>PATH_TYPE</key> + <integer>1</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>3</integer> + <key>UID</key> + <integer>0</integer> + </dict> + </array> + <key>GID</key> + <integer>80</integer> + <key>PATH</key> + <string>Applications</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>509</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>80</integer> + <key>PATH</key> + <string>Application Support</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Documentation</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Filesystems</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Frameworks</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Input Methods</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Internet Plug-Ins</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>LaunchAgents</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>LaunchDaemons</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>PreferencePanes</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Preferences</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>80</integer> + <key>PATH</key> + <string>Printers</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>PrivilegedHelperTools</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>1005</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>QuickLook</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>QuickTime</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Screen Savers</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Scripts</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Services</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Widgets</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Automator</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Extensions</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + </array> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Library</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array> + <dict> + <key>CHILDREN</key> + <array> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Extensions</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + </array> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Library</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + </array> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>System</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <dict> + <key>CHILDREN</key> + <array> + <dict> + <key>CHILDREN</key> + <array/> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>Shared</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>1023</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + </array> + <key>GID</key> + <integer>80</integer> + <key>PATH</key> + <string>Users</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + </array> + <key>GID</key> + <integer>0</integer> + <key>PATH</key> + <string>/</string> + <key>PATH_TYPE</key> + <integer>0</integer> + <key>PERMISSIONS</key> + <integer>493</integer> + <key>TYPE</key> + <integer>1</integer> + <key>UID</key> + <integer>0</integer> + </dict> + <key>PAYLOAD_TYPE</key> + <integer>0</integer> + <key>PRESERVE_EXTENDED_ATTRIBUTES</key> + <false/> + <key>SHOW_INVISIBLE</key> + <false/> + <key>SPLIT_FORKS</key> + <true/> + <key>TREAT_MISSING_FILES_AS_WARNING</key> + <false/> + <key>VERSION</key> + <integer>5</integer> + </dict> + <key>PACKAGE_SCRIPTS</key> + <dict> + <key>POSTINSTALL_PATH</key> + <dict> + <key>PATH_TYPE</key> + <integer>0</integer> + </dict> + <key>PREINSTALL_PATH</key> + <dict> + <key>PATH_TYPE</key> + <integer>0</integer> + </dict> + <key>RESOURCES</key> + <array/> + </dict> + <key>PACKAGE_SETTINGS</key> + <dict> + <key>AUTHENTICATION</key> + <integer>1</integer> + <key>CONCLUSION_ACTION</key> + <integer>0</integer> + <key>FOLLOW_SYMBOLIC_LINKS</key> + <false/> + <key>IDENTIFIER</key> + <string>com.idrix.pkg.veracrypt</string> + <key>LOCATION</key> + <integer>0</integer> + <key>NAME</key> + <string>veracrypt</string> + <key>OVERWRITE_PERMISSIONS</key> + <false/> + <key>PAYLOAD_SIZE</key> + <integer>-1</integer> + <key>REFERENCE_PATH</key> + <string></string> + <key>RELOCATABLE</key> + <false/> + <key>USE_HFS+_COMPRESSION</key> + <false/> + <key>VERSION</key> + <string>1.24.7</string> + </dict> + <key>TYPE</key> + <integer>0</integer> + <key>UUID</key> + <string>B14381D9-EC5F-43E4-B971-82AB3D132A64</string> + </dict> + </array> + <key>PROJECT</key> + <dict> + <key>PROJECT_COMMENTS</key> + <dict> + <key>NOTES</key> + <data> + PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1M + IDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQv + c3RyaWN0LmR0ZCI+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1l + cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7 + IGNoYXJzZXQ9VVRGLTgiPgo8bWV0YSBodHRwLWVxdWl2PSJDb250 + ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIj4KPHRp + dGxlPjwvdGl0bGU+CjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29u + dGVudD0iQ29jb2EgSFRNTCBXcml0ZXIiPgo8bWV0YSBuYW1lPSJD + b2NvYVZlcnNpb24iIGNvbnRlbnQ9IjExMzguNTEiPgo8c3R5bGUg + dHlwZT0idGV4dC9jc3MiPgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5 + Pgo8L2JvZHk+CjwvaHRtbD4K + </data> + </dict> + <key>PROJECT_PRESENTATION</key> + <dict> + <key>BACKGROUND</key> + <dict> + <key>APPAREANCES</key> + <dict> + <key>DARK_AQUA</key> + <dict/> + <key>LIGHT_AQUA</key> + <dict/> + </dict> + <key>SHARED_SETTINGS_FOR_ALL_APPAREANCES</key> + <true/> + </dict> + <key>INSTALLATION TYPE</key> + <dict> + <key>HIERARCHIES</key> + <dict> + <key>INSTALLER</key> + <dict> + <key>LIST</key> + <array> + <dict> + <key>DESCRIPTION</key> + <array/> + <key>OPTIONS</key> + <dict> + <key>HIDDEN</key> + <false/> + <key>STATE</key> + <integer>1</integer> + </dict> + <key>PACKAGE_UUID</key> + <string>B14381D9-EC5F-43E4-B971-82AB3D132A64</string> + <key>TITLE</key> + <array/> + <key>TOOLTIP</key> + <array/> + <key>TYPE</key> + <integer>0</integer> + <key>UUID</key> + <string>4F1ACCF7-AA2A-4C80-A42F-274D410A13D1</string> + </dict> + </array> + <key>REMOVED</key> + <dict/> + </dict> + </dict> + <key>MODE</key> + <integer>0</integer> + </dict> + <key>INSTALLATION_STEPS</key> + <array> + <dict> + <key>ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS</key> + <string>ICPresentationViewIntroductionController</string> + <key>INSTALLER_PLUGIN</key> + <string>Introduction</string> + <key>LIST_TITLE_KEY</key> + <string>InstallerSectionTitle</string> + </dict> + <dict> + <key>ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS</key> + <string>ICPresentationViewReadMeController</string> + <key>INSTALLER_PLUGIN</key> + <string>ReadMe</string> + <key>LIST_TITLE_KEY</key> + <string>InstallerSectionTitle</string> + </dict> + <dict> + <key>ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS</key> + <string>ICPresentationViewLicenseController</string> + <key>INSTALLER_PLUGIN</key> + <string>License</string> + <key>LIST_TITLE_KEY</key> + <string>InstallerSectionTitle</string> + </dict> + <dict> + <key>ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS</key> + <string>ICPresentationViewDestinationSelectController</string> + <key>INSTALLER_PLUGIN</key> + <string>TargetSelect</string> + <key>LIST_TITLE_KEY</key> + <string>InstallerSectionTitle</string> + </dict> + <dict> + <key>ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS</key> + <string>ICPresentationViewInstallationTypeController</string> + <key>INSTALLER_PLUGIN</key> + <string>PackageSelection</string> + <key>LIST_TITLE_KEY</key> + <string>InstallerSectionTitle</string> + </dict> + <dict> + <key>ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS</key> + <string>ICPresentationViewInstallationController</string> + <key>INSTALLER_PLUGIN</key> + <string>Install</string> + <key>LIST_TITLE_KEY</key> + <string>InstallerSectionTitle</string> + </dict> + <dict> + <key>ICPRESENTATION_CHAPTER_VIEW_CONTROLLER_CLASS</key> + <string>ICPresentationViewSummaryController</string> + <key>INSTALLER_PLUGIN</key> + <string>Summary</string> + <key>LIST_TITLE_KEY</key> + <string>InstallerSectionTitle</string> + </dict> + </array> + <key>INTRODUCTION</key> + <dict> + <key>LOCALIZATIONS</key> + <array/> + </dict> + <key>LICENSE</key> + <dict> + <key>LOCALIZATIONS</key> + <array> + <dict> + <key>LANGUAGE</key> + <string>English</string> + <key>VALUE</key> + <dict> + <key>PATH</key> + <string>../../License.txt</string> + <key>PATH_TYPE</key> + <integer>1</integer> + </dict> + </dict> + </array> + <key>MODE</key> + <integer>0</integer> + </dict> + <key>README</key> + <dict> + <key>LOCALIZATIONS</key> + <array/> + </dict> + <key>SUMMARY</key> + <dict> + <key>LOCALIZATIONS</key> + <array/> + </dict> + <key>TITLE</key> + <dict> + <key>LOCALIZATIONS</key> + <array> + <dict> + <key>LANGUAGE</key> + <string>French</string> + <key>VALUE</key> + <string></string> + </dict> + </array> + </dict> + </dict> + <key>PROJECT_REQUIREMENTS</key> + <dict> + <key>LIST</key> + <array> + <dict> + <key>BEHAVIOR</key> + <integer>3</integer> + <key>DICTIONARY</key> + <dict> + <key>IC_REQUIREMENT_CPU_ARCHITECTURE_FAMILY</key> + <integer>2</integer> + <key>IC_REQUIREMENT_CPU_INTEL_ARCHITECTURE_TYPE</key> + <integer>0</integer> + <key>IC_REQUIREMENT_CPU_MINIMUM_CPU_CORES_COUNT</key> + <integer>1</integer> + <key>IC_REQUIREMENT_CPU_MINIMUM_FREQUENCY</key> + <integer>866666</integer> + <key>IC_REQUIREMENT_CPU_POWERPC_ARCHITECTURE_TYPE</key> + <integer>0</integer> + </dict> + <key>IC_REQUIREMENT_CHECK_TYPE</key> + <integer>0</integer> + <key>IDENTIFIER</key> + <string>fr.whitebox.Packages.requirement.cpu</string> + <key>MESSAGE</key> + <array> + <dict> + <key>LANGUAGE</key> + <string>English</string> + <key>SECONDARY_VALUE</key> + <string></string> + <key>VALUE</key> + <string>VeraCrypt runs only on Intel platforms.</string> + </dict> + <dict> + <key>LANGUAGE</key> + <string>French</string> + <key>SECONDARY_VALUE</key> + <string></string> + <key>VALUE</key> + <string>VeraCrypt supporte seulement les platformes Intel.</string> + </dict> + </array> + <key>NAME</key> + <string>Processor</string> + <key>STATE</key> + <true/> + </dict> + <dict> + <key>BEHAVIOR</key> + <integer>3</integer> + <key>DICTIONARY</key> + <dict> + <key>IC_REQUIREMENT_OS_DISK_TYPE</key> + <integer>1</integer> + <key>IC_REQUIREMENT_OS_DISTRIBUTION_TYPE</key> + <integer>0</integer> + <key>IC_REQUIREMENT_OS_MINIMUM_VERSION</key> + <integer>100701</integer> + </dict> + <key>IC_REQUIREMENT_CHECK_TYPE</key> + <integer>0</integer> + <key>IDENTIFIER</key> + <string>fr.whitebox.Packages.requirement.os</string> + <key>MESSAGE</key> + <array> + <dict> + <key>LANGUAGE</key> + <string>English</string> + <key>VALUE</key> + <string>VeraCrypt requires MacOSX 10.7.1 and above.</string> + </dict> + <dict> + <key>LANGUAGE</key> + <string>French</string> + <key>VALUE</key> + <string>VeraCrypt nécessite MacOSX 10.7.1 et supérieur.</string> + </dict> + </array> + <key>NAME</key> + <string>Operating System</string> + <key>STATE</key> + <true/> + </dict> + <dict> + <key>BEHAVIOR</key> + <integer>3</integer> + <key>DICTIONARY</key> + <dict> + <key>IC_REQUIREMENT_FILES_CONDITION</key> + <integer>0</integer> + <key>IC_REQUIREMENT_FILES_DISK_TYPE</key> + <integer>1</integer> + <key>IC_REQUIREMENT_FILES_LIST</key> + <array> + <string>/usr/local/lib/libosxfuse_i64.2.dylib</string> + </array> + <key>IC_REQUIREMENT_FILES_SELECTOR</key> + <integer>0</integer> + </dict> + <key>IC_REQUIREMENT_CHECK_TYPE</key> + <integer>0</integer> + <key>IDENTIFIER</key> + <string>fr.whitebox.Packages.requirement.files</string> + <key>MESSAGE</key> + <array> + <dict> + <key>LANGUAGE</key> + <string>English</string> + <key>SECONDARY_VALUE</key> + <string></string> + <key>VALUE</key> + <string>OSXFuse seems to be missing on your machine. VeraCrypt requires OSXFuse 2.5 or above. +Please download the latest OSXFuse version from : +https://osxfuse.github.io/</string> + </dict> + <dict> + <key>LANGUAGE</key> + <string>French</string> + <key>SECONDARY_VALUE</key> + <string></string> + <key>VALUE</key> + <string>OSXFuse semble ne pas être installé sur votre machine. VeraCrypt nécessite OSXFuse 2.5 ou supérieur. +Merci de télécharger la dernière version de OSXFuse à partir de : +https://osxfuse.github.io/ + +</string> + </dict> + </array> + <key>NAME</key> + <string>OSXFuse</string> + <key>STATE</key> + <true/> + </dict> + </array> + <key>RESOURCES</key> + <array/> + <key>ROOT_VOLUME_ONLY</key> + <false/> + </dict> + <key>PROJECT_SETTINGS</key> + <dict> + <key>BUILD_FORMAT</key> + <integer>0</integer> + <key>BUILD_PATH</key> + <dict> + <key>PATH</key> + <string>.</string> + <key>PATH_TYPE</key> + <integer>1</integer> + </dict> + <key>EXCLUDED_FILES</key> + <array> + <dict> + <key>PATTERNS_ARRAY</key> + <array> + <dict> + <key>REGULAR_EXPRESSION</key> + <false/> + <key>STRING</key> + <string>.DS_Store</string> + <key>TYPE</key> + <integer>0</integer> + </dict> + </array> + <key>PROTECTED</key> + <true/> + <key>PROXY_NAME</key> + <string>Remove .DS_Store files</string> + <key>PROXY_TOOLTIP</key> + <string>Remove ".DS_Store" files created by the Finder.</string> + <key>STATE</key> + <true/> + </dict> + <dict> + <key>PATTERNS_ARRAY</key> + <array> + <dict> + <key>REGULAR_EXPRESSION</key> + <false/> + <key>STRING</key> + <string>.pbdevelopment</string> + <key>TYPE</key> + <integer>0</integer> + </dict> + </array> + <key>PROTECTED</key> + <true/> + <key>PROXY_NAME</key> + <string>Remove .pbdevelopment files</string> + <key>PROXY_TOOLTIP</key> + <string>Remove ".pbdevelopment" files created by ProjectBuilder or Xcode.</string> + <key>STATE</key> + <true/> + </dict> + <dict> + <key>PATTERNS_ARRAY</key> + <array> + <dict> + <key>REGULAR_EXPRESSION</key> + <false/> + <key>STRING</key> + <string>CVS</string> + <key>TYPE</key> + <integer>1</integer> + </dict> + <dict> + <key>REGULAR_EXPRESSION</key> + <false/> + <key>STRING</key> + <string>.cvsignore</string> + <key>TYPE</key> + <integer>0</integer> + </dict> + <dict> + <key>REGULAR_EXPRESSION</key> + <false/> + <key>STRING</key> + <string>.cvspass</string> + <key>TYPE</key> + <integer>0</integer> + </dict> + <dict> + <key>REGULAR_EXPRESSION</key> + <false/> + <key>STRING</key> + <string>.svn</string> + <key>TYPE</key> + <integer>1</integer> + </dict> + <dict> + <key>REGULAR_EXPRESSION</key> + <false/> + <key>STRING</key> + <string>.git</string> + <key>TYPE</key> + <integer>1</integer> + </dict> + <dict> + <key>REGULAR_EXPRESSION</key> + <false/> + <key>STRING</key> + <string>.gitignore</string> + <key>TYPE</key> + <integer>0</integer> + </dict> + </array> + <key>PROTECTED</key> + <true/> + <key>PROXY_NAME</key> + <string>Remove SCM metadata</string> + <key>PROXY_TOOLTIP</key> + <string>Remove helper files and folders used by the CVS, SVN or Git Source Code Management systems.</string> + <key>STATE</key> + <true/> + </dict> + <dict> + <key>PATTERNS_ARRAY</key> + <array> + <dict> + <key>REGULAR_EXPRESSION</key> + <false/> + <key>STRING</key> + <string>classes.nib</string> + <key>TYPE</key> + <integer>0</integer> + </dict> + <dict> + <key>REGULAR_EXPRESSION</key> + <false/> + <key>STRING</key> + <string>designable.db</string> + <key>TYPE</key> + <integer>0</integer> + </dict> + <dict> + <key>REGULAR_EXPRESSION</key> + <false/> + <key>STRING</key> + <string>info.nib</string> + <key>TYPE</key> + <integer>0</integer> + </dict> + </array> + <key>PROTECTED</key> + <true/> + <key>PROXY_NAME</key> + <string>Optimize nib files</string> + <key>PROXY_TOOLTIP</key> + <string>Remove "classes.nib", "info.nib" and "designable.nib" files within .nib bundles.</string> + <key>STATE</key> + <true/> + </dict> + <dict> + <key>PATTERNS_ARRAY</key> + <array> + <dict> + <key>REGULAR_EXPRESSION</key> + <false/> + <key>STRING</key> + <string>Resources Disabled</string> + <key>TYPE</key> + <integer>1</integer> + </dict> + </array> + <key>PROTECTED</key> + <true/> + <key>PROXY_NAME</key> + <string>Remove Resources Disabled folders</string> + <key>PROXY_TOOLTIP</key> + <string>Remove "Resources Disabled" folders.</string> + <key>STATE</key> + <true/> + </dict> + <dict> + <key>SEPARATOR</key> + <true/> + </dict> + </array> + <key>NAME</key> + <string>VeraCrypt Legacy 1.24-Hotfix1</string> + <key>PAYLOAD_ONLY</key> + <false/> + <key>TREAT_MISSING_PRESENTATION_DOCUMENTS_AS_WARNING</key> + <false/> + </dict> + </dict> + <key>SHARED_GLOBAL_DATA</key> + <dict> + <key>IC_REQUIREMENT_JAVASCRIPT_SHARED_SOURCE_CODE</key> + <string></string> + </dict> + <key>TYPE</key> + <integer>0</integer> + <key>VERSION</key> + <integer>2</integer> +</dict> +</plist> diff --git a/src/Setup/Portable.rc b/src/Setup/Portable.rc index 22a9bee..574b660 100644 --- a/src/Setup/Portable.rc +++ b/src/Setup/Portable.rc @@ -26,8 +26,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,24,6,0 - PRODUCTVERSION 1,24,6,0 + FILEVERSION 1,24,7,1 + PRODUCTVERSION 1,24,7,1 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -44,11 +44,11 @@ BEGIN BEGIN VALUE "CompanyName", "IDRIX" VALUE "FileDescription", "VeraCrypt Portable" - VALUE "FileVersion", "1.24" + VALUE "FileVersion", "1.24-Hotfix1" VALUE "LegalTrademarks", "VeraCrypt" VALUE "OriginalFilename", "VeraCrypt Portable.exe" VALUE "ProductName", "VeraCrypt" - VALUE "ProductVersion", "1.24" + VALUE "ProductVersion", "1.24-Hotfix1" END END BLOCK "VarFileInfo" diff --git a/src/Setup/Setup.rc b/src/Setup/Setup.rc index 33691b5..066710e 100644 --- a/src/Setup/Setup.rc +++ b/src/Setup/Setup.rc @@ -28,8 +28,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,24,6,0 - PRODUCTVERSION 1,24,6,0 + FILEVERSION 1,24,7,1 + PRODUCTVERSION 1,24,7,1 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -46,11 +46,11 @@ BEGIN BEGIN VALUE "CompanyName", "IDRIX" VALUE "FileDescription", "VeraCrypt Setup" - VALUE "FileVersion", "1.24" + VALUE "FileVersion", "1.24-Hotfix1" VALUE "LegalTrademarks", "VeraCrypt" VALUE "OriginalFilename", "VeraCrypt Setup.exe" VALUE "ProductName", "VeraCrypt" - VALUE "ProductVersion", "1.24" + VALUE "ProductVersion", "1.24-Hotfix1" END END BLOCK "VarFileInfo" diff --git a/src/Signing/sign.bat b/src/Signing/sign.bat index 9f207c1..59772f4 100644 --- a/src/Signing/sign.bat +++ b/src/Signing/sign.bat @@ -1,6 +1,6 @@ PATH=%PATH%;%WSDK81%\bin\x86;C:\Program Files\7-Zip;C:\Program Files (x86)\7-Zip -set VC_VERSION=1.24 +set VC_VERSION=1.24-Hotfix1 set SIGNINGPATH=%~dp0 cd %SIGNINGPATH% diff --git a/src/Signing/sign_test.bat b/src/Signing/sign_test.bat index 551f06b..a2b0078 100644 --- a/src/Signing/sign_test.bat +++ b/src/Signing/sign_test.bat @@ -1,5 +1,5 @@ PATH=%PATH%;%WSDK81%\bin\x86;C:\Program Files\7-Zip;C:\Program Files (x86)\7-Zip -set VC_VERSION=1.24 +set VC_VERSION=1.24-Hotfix1 set PFXNAME=TestCertificate\idrix_codeSign.pfx set PFXPASSWORD=idrix set PFXCA=TestCertificate\idrix_TestRootCA.crt diff --git a/src/Signing/sign_test_debug.bat b/src/Signing/sign_test_debug.bat index 9aaf0ac..5581434 100644 --- a/src/Signing/sign_test_debug.bat +++ b/src/Signing/sign_test_debug.bat @@ -1,5 +1,5 @@ PATH=%PATH%;%WSDK81%\bin\x86;C:\Program Files\7-Zip;C:\Program Files (x86)\7-Zip -set VC_VERSION=1.24 +set VC_VERSION=1.24-Hotfix1 set PFXNAME=TestCertificate\idrix_codeSign.pfx set PFXPASSWORD=idrix set PFXCA=TestCertificate\idrix_TestRootCA.crt diff --git a/src/Volume/Volume.make b/src/Volume/Volume.make index 7b5cb4f..224eff6 100644 --- a/src/Volume/Volume.make +++ b/src/Volume/Volume.make @@ -12,6 +12,7 @@ OBJS := OBJSEX := +OBJSNOOPT := OBJS += Cipher.o OBJS += EncryptionAlgorithm.o OBJS += EncryptionMode.o @@ -81,6 +82,8 @@ OBJS += ../Crypto/Streebog.o OBJS += ../Crypto/kuznyechik.o OBJS += ../Crypto/kuznyechik_simd.o +OBJSNOOPT += ../Crypto/jitterentropy-base.o0 + OBJS += ../Common/Crc.o OBJS += ../Common/Endian.o OBJS += ../Common/GfMul.o |