Ver código fonte

addressed some issues identified during code review

Sebastian Stenzel 4 anos atrás
pai
commit
34995088ba

+ 1 - 0
main/commons/src/main/java/org/cryptomator/common/Constants.java

@@ -3,6 +3,7 @@ package org.cryptomator.common;
 public interface Constants {
 
 	String MASTERKEY_FILENAME = "masterkey.cryptomator";
+	String MASTERKEY_BACKUP_SUFFIX = ".bkup";
 	String VAULTCONFIG_FILENAME = "vault.cryptomator";
 	byte[] PEPPER = new byte[0];
 

+ 3 - 2
main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java

@@ -53,6 +53,7 @@ public class Vault {
 
 	private static final Logger LOG = LoggerFactory.getLogger(Vault.class);
 	private static final Path HOME_DIR = Paths.get(SystemUtils.USER_HOME);
+	private static final int UNLIMITED_FILENAME_LENGTH = Integer.MAX_VALUE;
 
 	private final VaultSettings vaultSettings;
 	private final Provider<Volume> volumeProvider;
@@ -114,11 +115,11 @@ public class Vault {
 				int cleartextLimit = checker.determineSupportedCleartextFileNameLength(getPath());
 				vaultSettings.maxCleartextFilenameLength().set(cleartextLimit);
 			} else {
-				vaultSettings.maxCleartextFilenameLength().setValue(Integer.MAX_VALUE);
+				vaultSettings.maxCleartextFilenameLength().setValue(UNLIMITED_FILENAME_LENGTH);
 			}
 		}
 
-		if (vaultSettings.maxCleartextFilenameLength().get() < Integer.MAX_VALUE) {
+		if (vaultSettings.maxCleartextFilenameLength().get() < UNLIMITED_FILENAME_LENGTH) {
 			LOG.warn("Limiting cleartext filename length on this device to {}.", vaultSettings.maxCleartextFilenameLength().get());
 		}
 

+ 0 - 4
main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java

@@ -8,12 +8,10 @@ package org.cryptomator.common.vaults;
 import dagger.Module;
 import dagger.Provides;
 import org.apache.commons.lang3.SystemUtils;
-import org.cryptomator.common.Constants;
 import org.cryptomator.common.settings.Settings;
 import org.cryptomator.common.settings.VaultSettings;
 import org.cryptomator.common.settings.VolumeImpl;
 import org.cryptomator.cryptofs.CryptoFileSystem;
-import org.cryptomator.cryptofs.VaultConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -26,11 +24,9 @@ import javafx.beans.property.ObjectProperty;
 import javafx.beans.property.ReadOnlyBooleanProperty;
 import javafx.beans.property.SimpleObjectProperty;
 import java.io.IOException;
-import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.Optional;
 import java.util.concurrent.atomic.AtomicReference;
 
 @Module

+ 1 - 1
main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java

@@ -31,13 +31,13 @@ import java.nio.file.StandardCopyOption;
 import java.nio.file.StandardOpenOption;
 import java.security.SecureRandom;
 
+import static org.cryptomator.common.Constants.MASTERKEY_BACKUP_SUFFIX;
 import static org.cryptomator.common.Constants.MASTERKEY_FILENAME;
 
 @ChangePasswordScoped
 public class ChangePasswordController implements FxController {
 
 	private static final Logger LOG = LoggerFactory.getLogger(ChangePasswordController.class);
-	private static final String MASTERKEY_BACKUP_SUFFIX = ".bkup";
 
 	private final Stage window;
 	private final Vault vault;

+ 3 - 9
main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactory.java

@@ -14,28 +14,21 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
-import java.nio.file.StandardOpenOption;
-import java.security.SecureRandom;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Optional;
 
+import static org.cryptomator.common.Constants.MASTERKEY_BACKUP_SUFFIX;
 import static org.cryptomator.common.Constants.MASTERKEY_FILENAME;
-import static org.cryptomator.common.Constants.PEPPER;
 
 @Singleton
 public class RecoveryKeyFactory {
 
-	private static final String MASTERKEY_BACKUP_SUFFIX = ".bkup";
-
 	private final WordEncoder wordEncoder;
-	private final SecureRandom csprng;
 	private final MasterkeyFileAccess masterkeyFileAccess;
 
 	@Inject
-	public RecoveryKeyFactory(WordEncoder wordEncoder, SecureRandom csprng, MasterkeyFileAccess masterkeyFileAccess) {
+	public RecoveryKeyFactory(WordEncoder wordEncoder, MasterkeyFileAccess masterkeyFileAccess) {
 		this.wordEncoder = wordEncoder;
-		this.csprng = csprng;
 		this.masterkeyFileAccess = masterkeyFileAccess;
 	}
 
@@ -92,6 +85,7 @@ public class RecoveryKeyFactory {
 			Path masterkeyPath = vaultPath.resolve(MASTERKEY_FILENAME);
 			if (Files.exists(masterkeyPath)) {
 				byte[] oldMasterkeyBytes = Files.readAllBytes(masterkeyPath);
+				// TODO: deduplicate with ChangePasswordController:
 				Path backupKeyPath = vaultPath.resolve(MASTERKEY_FILENAME + MasterkeyBackupHelper.generateFileIdSuffix(oldMasterkeyBytes) + MASTERKEY_BACKUP_SUFFIX);
 				Files.move(masterkeyPath, backupKeyPath, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE);
 			}

+ 1 - 1
main/ui/src/main/resources/fxml/unlock_select_masterkeyfile.fxml

@@ -26,7 +26,7 @@
 				<FontAwesome5IconView styleClass="glyph-icon-white" glyph="FILE" glyphSize="24"/>
 			</StackPane>
 			<VBox spacing="6">
-				<Label text="Could not find the masterkey file for this vault at its expected location. Please choose the key file manually." wrapText="true" HBox.hgrow="ALWAYS"/>
+				<Label text="%unlock.chooseMasterkey.prompt" wrapText="true" HBox.hgrow="ALWAYS"/>
 			</VBox>
 		</HBox>
 

+ 1 - 0
main/ui/src/main/resources/i18n/strings.properties

@@ -101,6 +101,7 @@ unlock.passwordPrompt=Enter password for "%s":
 unlock.savePassword=Remember Password
 unlock.unlockBtn=Unlock
 ##
+unlock.chooseMasterkey.prompt=Could not find the masterkey file for this vault at its expected location. Please choose the key file manually.
 unlock.chooseMasterkey.filePickerTitle=Select Masterkey File
 ## Success
 unlock.success.message=Unlocked "%s" successfully! Your vault is now accessible via its virtual drive.