Pārlūkot izejas kodu

Show warning when trying to migrate a masterkey with invalid version mac

Sebastian Stenzel 8 gadi atpakaļ
vecāks
revīzija
d7d8d21ba4

+ 2 - 1
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"));

+ 6 - 2
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) {

+ 9 - 1
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 {

+ 1 - 1
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