From 091e62057dba7d8d6291003acf9e9fdbb315d521 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 12 Sep 2016 13:56:47 +0200 Subject: [PATCH] Injecting CryptorProvider into UpgradeStrategies --- .../java/org/cryptomator/ui/CryptomatorModule.java | 3 ++- .../java/org/cryptomator/ui/MainApplication.java | 13 ++++++++++++- .../model/UpgradeVersion3DropBundleExtension.java | 9 +++++---- .../cryptomator/ui/model/UpgradeVersion3to4.java | 9 +++++---- .../cryptomator/ui/model/UpgradeVersion4to5.java | 8 +++++--- 5 files changed, 29 insertions(+), 13 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/CryptomatorModule.java b/main/ui/src/main/java/org/cryptomator/ui/CryptomatorModule.java index d4f5f7b38..17fcb7ef6 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/CryptomatorModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/CryptomatorModule.java @@ -18,6 +18,7 @@ import javax.inject.Singleton; import org.cryptomator.common.CommonsModule; import org.cryptomator.crypto.engine.impl.CryptoEngineModule; +import org.cryptomator.cryptolib.CryptoLibModule; import org.cryptomator.frontend.FrontendFactory; import org.cryptomator.frontend.FrontendId; import org.cryptomator.frontend.webdav.WebDavModule; @@ -41,7 +42,7 @@ import javafx.application.Application; import javafx.beans.Observable; import javafx.stage.Stage; -@Module(includes = {CryptoEngineModule.class, CommonsModule.class, WebDavModule.class, KeychainModule.class, JniModule.class}) +@Module(includes = {CryptoEngineModule.class, CommonsModule.class, WebDavModule.class, KeychainModule.class, JniModule.class, CryptoLibModule.class}) class CryptomatorModule { private static final Logger LOG = LoggerFactory.getLogger(CryptomatorModule.class); diff --git a/main/ui/src/main/java/org/cryptomator/ui/MainApplication.java b/main/ui/src/main/java/org/cryptomator/ui/MainApplication.java index d28721ffa..11628a65c 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/MainApplication.java +++ b/main/ui/src/main/java/org/cryptomator/ui/MainApplication.java @@ -12,9 +12,12 @@ import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; import java.util.concurrent.ExecutionException; import org.apache.commons.lang3.SystemUtils; +import org.cryptomator.cryptolib.common.SecureRandomModule; import org.cryptomator.ui.controllers.MainController; import org.cryptomator.ui.util.ActiveWindowStyleSupport; import org.cryptomator.ui.util.DeferredCloser; @@ -40,7 +43,15 @@ public class MainApplication extends Application { @Override public void start(Stage primaryStage) throws IOException { LOG.info("JavaFX application started"); - final CryptomatorComponent comp = DaggerCryptomatorComponent.builder().cryptomatorModule(new CryptomatorModule(this, primaryStage)).build(); + final CryptomatorComponent comp; + try { + comp = DaggerCryptomatorComponent.builder() // + .cryptomatorModule(new CryptomatorModule(this, primaryStage)) // + .secureRandomModule(new SecureRandomModule(SecureRandom.getInstanceStrong())) // + .build(); + } catch (NoSuchAlgorithmException e) { + throw new IllegalStateException("Every implementation of the Java platform is required to support at least one strong SecureRandom implementation.", e); + } final MainController mainCtrl = comp.mainController(); closer = comp.deferredCloser(); diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeVersion3DropBundleExtension.java b/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeVersion3DropBundleExtension.java index a0462cd65..873c69716 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeVersion3DropBundleExtension.java +++ b/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeVersion3DropBundleExtension.java @@ -3,14 +3,15 @@ package org.cryptomator.ui.model; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.security.SecureRandom; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.commons.lang3.StringUtils; -import org.cryptomator.cryptolib.Cryptors; +import org.cryptomator.cryptolib.api.CryptoLibVersion; +import org.cryptomator.cryptolib.api.CryptoLibVersion.Version; import org.cryptomator.cryptolib.api.Cryptor; +import org.cryptomator.cryptolib.api.CryptorProvider; import org.cryptomator.ui.settings.Localization; import org.cryptomator.ui.settings.Settings; import org.slf4j.Logger; @@ -25,8 +26,8 @@ class UpgradeVersion3DropBundleExtension extends UpgradeStrategy { private final Settings settings; @Inject - public UpgradeVersion3DropBundleExtension(SecureRandom secureRandom, Localization localization, Settings settings) { - super(Cryptors.version1(secureRandom), localization, 3, 3); + public UpgradeVersion3DropBundleExtension(@CryptoLibVersion(Version.ONE) CryptorProvider version1CryptorProvider, Localization localization, Settings settings) { + super(version1CryptorProvider, localization, 3, 3); this.settings = settings; } diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeVersion3to4.java b/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeVersion3to4.java index 17bbcaac1..49b5c13a3 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeVersion3to4.java +++ b/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeVersion3to4.java @@ -9,7 +9,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.attribute.BasicFileAttributes; import java.security.MessageDigest; -import java.security.SecureRandom; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -19,8 +18,10 @@ import javax.inject.Singleton; import org.apache.commons.codec.binary.Base32; import org.apache.commons.codec.binary.BaseNCodec; import org.apache.commons.lang3.StringUtils; -import org.cryptomator.cryptolib.Cryptors; +import org.cryptomator.cryptolib.api.CryptoLibVersion; +import org.cryptomator.cryptolib.api.CryptoLibVersion.Version; import org.cryptomator.cryptolib.api.Cryptor; +import org.cryptomator.cryptolib.api.CryptorProvider; import org.cryptomator.cryptolib.common.MessageDigestSupplier; import org.cryptomator.ui.settings.Localization; import org.slf4j.Logger; @@ -44,8 +45,8 @@ class UpgradeVersion3to4 extends UpgradeStrategy { private final BaseNCodec base32 = new Base32(); @Inject - public UpgradeVersion3to4(SecureRandom secureRandom, Localization localization) { - super(Cryptors.version1(secureRandom), localization, 3, 4); + public UpgradeVersion3to4(@CryptoLibVersion(Version.ONE) CryptorProvider version1CryptorProvider, Localization localization) { + super(version1CryptorProvider, localization, 3, 4); } @Override diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeVersion4to5.java b/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeVersion4to5.java index 0d8389250..487f98b85 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeVersion4to5.java +++ b/main/ui/src/main/java/org/cryptomator/ui/model/UpgradeVersion4to5.java @@ -9,14 +9,16 @@ import java.nio.file.Path; import java.nio.file.SimpleFileVisitor; import java.nio.file.StandardOpenOption; import java.nio.file.attribute.BasicFileAttributes; -import java.security.SecureRandom; import java.util.regex.Pattern; import javax.inject.Inject; import javax.inject.Singleton; import org.cryptomator.cryptolib.Cryptors; +import org.cryptomator.cryptolib.api.CryptoLibVersion; +import org.cryptomator.cryptolib.api.CryptoLibVersion.Version; import org.cryptomator.cryptolib.api.Cryptor; +import org.cryptomator.cryptolib.api.CryptorProvider; import org.cryptomator.cryptolib.api.FileHeader; import org.cryptomator.ui.settings.Localization; import org.slf4j.Logger; @@ -33,8 +35,8 @@ class UpgradeVersion4to5 extends UpgradeStrategy { private static final Pattern BASE32_PATTERN = Pattern.compile("^([A-Z2-7]{8})*[A-Z2-7=]{8}"); @Inject - public UpgradeVersion4to5(SecureRandom secureRandom, Localization localization) { - super(Cryptors.version1(secureRandom), localization, 4, 5); + public UpgradeVersion4to5(@CryptoLibVersion(Version.ONE) CryptorProvider version1CryptorProvider, Localization localization) { + super(version1CryptorProvider, localization, 4, 5); } @Override