From 4d4098e0e0e92f99313ea12dac4a30940e7362e0 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Wed, 19 Jan 2022 19:49:33 +0100 Subject: [PATCH] cleanup --- src/main/java/org/cryptomator/common/Passphrase.java | 12 ++++-------- .../org/cryptomator/ui/common/FxmlLoaderFactory.java | 4 ++++ .../masterkeyfile/ChooseMasterkeyFileModule.java | 11 +---------- .../masterkeyfile/PassphraseEntryModule.java | 11 +---------- .../masterkeyfile/PassphraseEntryResult.java | 2 +- .../cryptomator/ui/lock/LockForcedController.java | 4 ---- 6 files changed, 11 insertions(+), 33 deletions(-) diff --git a/src/main/java/org/cryptomator/common/Passphrase.java b/src/main/java/org/cryptomator/common/Passphrase.java index d57252507..036e87104 100644 --- a/src/main/java/org/cryptomator/common/Passphrase.java +++ b/src/main/java/org/cryptomator/common/Passphrase.java @@ -64,16 +64,12 @@ public class Passphrase implements Destroyable, CharSequence { @Override public int hashCode() { - // TODO: do we really need to a secure hashcode? toString leaks the pw anyway - var md = MessageDigestSupplier.SHA256.get(); - ByteBuffer buf = ByteBuffer.allocate(Character.BYTES * length); + // basically Arrays.hashCode, but only for a certain subarray + int result = 1; for (int i = 0; i < length; i++) { - char c = charAt(i); - buf.putChar(i * Character.BYTES, c); + result = 31 * result + charAt(i); } - buf.flip(); - md.update(buf); - return Arrays.hashCode(md.digest()); + return result; } @Override diff --git a/src/main/java/org/cryptomator/ui/common/FxmlLoaderFactory.java b/src/main/java/org/cryptomator/ui/common/FxmlLoaderFactory.java index c10054ef4..dcff93aab 100644 --- a/src/main/java/org/cryptomator/ui/common/FxmlLoaderFactory.java +++ b/src/main/java/org/cryptomator/ui/common/FxmlLoaderFactory.java @@ -22,6 +22,10 @@ public class FxmlLoaderFactory { this.resourceBundle = resourceBundle; } + public static FxmlLoaderFactory forController(T controller, Function sceneFactory, ResourceBundle resourceBundle) { + return new FxmlLoaderFactory(Map.of(controller.getClass(), () -> controller), sceneFactory, resourceBundle); + } + /** * @return A new FXMLLoader instance */ diff --git a/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/ChooseMasterkeyFileModule.java b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/ChooseMasterkeyFileModule.java index 34eb78443..c7a084584 100644 --- a/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/ChooseMasterkeyFileModule.java +++ b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/ChooseMasterkeyFileModule.java @@ -27,16 +27,7 @@ interface ChooseMasterkeyFileModule { @Provides @ChooseMasterkeyFileScoped static Scene provideChooseMasterkeyScene(ChooseMasterkeyFileController controller, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { - // TODO: simplify FxmlLoaderFactory - try { - var url = FxmlLoaderFactory.class.getResource(FxmlFile.UNLOCK_SELECT_MASTERKEYFILE.getRessourcePathString()); - var loader = new FXMLLoader(url, resourceBundle, null, clazz -> controller); - Parent root = loader.load(); - return sceneFactory.apply(root); - } catch (IOException e) { - throw new UncheckedIOException("Failed to load ChooseMasterkeyScene", e); - } + return FxmlLoaderFactory.forController(controller, sceneFactory, resourceBundle).createScene(FxmlFile.UNLOCK_SELECT_MASTERKEYFILE); } - } diff --git a/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryModule.java b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryModule.java index 0d67abd50..ed1feb7ee 100644 --- a/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryModule.java +++ b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryModule.java @@ -26,16 +26,7 @@ interface PassphraseEntryModule { @Provides @PassphraseEntryScoped static Scene provideUnlockScene(PassphraseEntryController controller, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { - // TODO: simplify FxmlLoaderFactory - try { - var url = FxmlLoaderFactory.class.getResource(FxmlFile.UNLOCK_ENTER_PASSWORD.getRessourcePathString()); - var loader = new FXMLLoader(url, resourceBundle, null, clazz -> controller); - Parent root = loader.load(); - return sceneFactory.apply(root); - } catch (IOException e) { - throw new UncheckedIOException("Failed to load UnlockScene", e); - } + return FxmlLoaderFactory.forController(controller, sceneFactory, resourceBundle).createScene(FxmlFile.UNLOCK_ENTER_PASSWORD); } - } diff --git a/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryResult.java b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryResult.java index f26184d9d..19057acca 100644 --- a/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryResult.java +++ b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryResult.java @@ -2,7 +2,7 @@ package org.cryptomator.ui.keyloading.masterkeyfile; import org.cryptomator.common.Passphrase; -// TODO needs to be public due to Dagger -.- +// TODO: change to package-private, as soon as this works for Dagger -.- public record PassphraseEntryResult(Passphrase passphrase, boolean savePassphrase) { } diff --git a/src/main/java/org/cryptomator/ui/lock/LockForcedController.java b/src/main/java/org/cryptomator/ui/lock/LockForcedController.java index 0b4a23a18..15cf119be 100644 --- a/src/main/java/org/cryptomator/ui/lock/LockForcedController.java +++ b/src/main/java/org/cryptomator/ui/lock/LockForcedController.java @@ -2,8 +2,6 @@ package org.cryptomator.ui.lock; import org.cryptomator.common.vaults.Vault; import org.cryptomator.ui.common.FxController; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import javax.inject.Inject; import javafx.fxml.FXML; @@ -15,8 +13,6 @@ import java.util.concurrent.atomic.AtomicReference; @LockScoped public class LockForcedController implements FxController { - private static final Logger LOG = LoggerFactory.getLogger(LockForcedController.class); - private final Stage window; private final Vault vault; private final AtomicReference> forceRetryDecision;