From d7d8d21ba496ba31f82732896f61a4faab91a227 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Thu, 15 Sep 2016 22:15:21 +0200 Subject: [PATCH] Show warning when trying to migrate a masterkey with invalid version mac --- .../ui/controllers/ChangePasswordController.java | 3 ++- .../cryptomator/ui/controllers/UnlockController.java | 8 ++++++-- .../java/org/cryptomator/ui/model/UpgradeStrategy.java | 10 +++++++++- main/ui/src/main/resources/localization/en.txt | 2 +- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/ChangePasswordController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/ChangePasswordController.java index c78ac51f0..b254931fb 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/controllers/ChangePasswordController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/ChangePasswordController.java @@ -124,6 +124,7 @@ public class ChangePasswordController extends LocalizedFXMLViewController { // trigger "default" change to refresh key bindings: changePasswordButton.setDefaultButton(false); changePasswordButton.setDefaultButton(true); + messageText.setText(null); } // **************************************** @@ -144,7 +145,7 @@ public class ChangePasswordController extends LocalizedFXMLViewController { downloadsPageLink.setVisible(false); try { vault.changePassphrase(oldPasswordField.getCharacters(), newPasswordField.getCharacters()); - messageText.setText(localization.getString("changePassword.infoMessage.success")); + messageText.setText(null); listener.ifPresent(this::invokeListenerLater); } catch (InvalidPassphraseException e) { messageText.setText(localization.getString("changePassword.errorMessage.wrongPassword")); diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java index e5fe09fe4..f6b19cb8a 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java @@ -178,7 +178,7 @@ public class UnlockController extends LocalizedFXMLViewController { @FXML public void didClickDownloadsLink(ActionEvent event) { - app.getHostServices().showDocument("https://cryptomator.org/downloads/"); + app.getHostServices().showDocument("https://cryptomator.org/downloads/#allVersions"); } // **************************************** @@ -311,11 +311,15 @@ public class UnlockController extends LocalizedFXMLViewController { }); } catch (UnsupportedVaultFormatException e) { Platform.runLater(() -> { - downloadsPageLink.setVisible(true); if (e.isVaultOlderThanSoftware()) { + // whitespace after localized text used as separator between text and hyperlink messageText.setText(localization.getString("unlock.errorMessage.unsupportedVersion.vaultOlderThanSoftware") + " "); + downloadsPageLink.setVisible(true); } else if (e.isSoftwareOlderThanVault()) { messageText.setText(localization.getString("unlock.errorMessage.unsupportedVersion.softwareOlderThanVault") + " "); + downloadsPageLink.setVisible(true); + } else if (e.getDetectedVersion() == Integer.MAX_VALUE) { + messageText.setText(localization.getString("unlock.errorMessage.unauthenticVersionMac")); } }); } catch (FrontendCreationFailedException | CommandFailedException e) { diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeStrategy.java b/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeStrategy.java index 9d77b93d4..b235a794e 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeStrategy.java +++ b/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeStrategy.java @@ -57,7 +57,15 @@ public abstract class UpgradeStrategy { Files.write(masterkeyFileAfterUpgrade, upgradedMasterkeyFileContents, StandardOpenOption.TRUNCATE_EXISTING); } catch (InvalidPassphraseException e) { throw new UpgradeFailedException(localization.getString("unlock.errorMessage.wrongPassword")); - } catch (IOException | UnsupportedVaultFormatException e) { + } catch (UnsupportedVaultFormatException e) { + if (e.getDetectedVersion() == Integer.MAX_VALUE) { + LOG.warn("Version MAC authentication error in vault {}", vault.path().get()); + throw new UpgradeFailedException(localization.getString("unlock.errorMessage.unauthenticVersionMac")); + } else { + LOG.warn("Upgrade failed.", e); + throw new UpgradeFailedException("Upgrade failed. Details in log message."); + } + } catch (IOException e) { LOG.warn("Upgrade failed.", e); throw new UpgradeFailedException("Upgrade failed. Details in log message."); } finally { diff --git a/main/ui/src/main/resources/localization/en.txt b/main/ui/src/main/resources/localization/en.txt index 984884574..92cd4815a 100644 --- a/main/ui/src/main/resources/localization/en.txt +++ b/main/ui/src/main/resources/localization/en.txt @@ -63,6 +63,7 @@ unlock.errorMessage.wrongPassword=Wrong password unlock.errorMessage.mountingFailed=Mounting failed. See log file for details. unlock.errorMessage.unsupportedVersion.vaultOlderThanSoftware=Unsupported vault. This vault has been created with an older version of Cryptomator. unlock.errorMessage.unsupportedVersion.softwareOlderThanVault=Unsupported vault. This vault has been created with a newer version of Cryptomator. +unlock.errorMessage.unauthenticVersionMac=Could not authenticate version MAC. unlock.messageLabel.startServerFailed=Starting WebDAV server failed. # change_password.fxml @@ -73,7 +74,6 @@ changePassword.label.downloadsPageLink=All Cryptomator versions changePassword.button.change=Change password changePassword.errorMessage.wrongPassword=Wrong password changePassword.errorMessage.decryptionFailed=Decryption failed -changePassword.infoMessage.success=Password changed # unlocked.fxml unlocked.button.lock=Lock vault