diff --git a/bramble-android/build.gradle b/bramble-android/build.gradle index 155d1723f..38d909a8f 100644 --- a/bramble-android/build.gradle +++ b/bramble-android/build.gradle @@ -71,7 +71,7 @@ def torLibsDir = 'src/main/jniLibs' task cleanTorBinaries { outputs.dir torLibsDir doLast { - delete fileTree(torLibsDir) { include '**/*.so' } + delete fileTree(torLibsDir) } } @@ -80,34 +80,9 @@ clean.dependsOn cleanTorBinaries task unpackTorBinaries { outputs.dir torLibsDir doLast { - configurations.tor.each { outer -> - zipTree(outer).each { inner -> - if (inner.name.endsWith('_arm_pie.zip')) { - copy { - from zipTree(inner) - into torLibsDir - rename '(.*)', 'armeabi-v7a/lib$1.so' - } - } else if (inner.name.endsWith('_arm64_pie.zip')) { - copy { - from zipTree(inner) - into torLibsDir - rename '(.*)', 'arm64-v8a/lib$1.so' - } - } else if (inner.name.endsWith('_x86_pie.zip')) { - copy { - from zipTree(inner) - into torLibsDir - rename '(.*)', 'x86/lib$1.so' - } - } else if (inner.name.endsWith('_x86_64_pie.zip')) { - copy { - from zipTree(inner) - into torLibsDir - rename '(.*)', 'x86_64/lib$1.so' - } - } - } + copy { + from configurations.tor.collect { zipTree(it) } + into torLibsDir } } dependsOn cleanTorBinaries diff --git a/bramble-android/witness.gradle b/bramble-android/witness.gradle index dec24d352..72aba79f0 100644 --- a/bramble-android/witness.gradle +++ b/bramble-android/witness.gradle @@ -24,9 +24,9 @@ dependencyVerification { 'net.jcip:jcip-annotations:1.0:jcip-annotations-1.0.jar:be5805392060c71474bf6c9a67a099471274d30b83eef84bfc4e0889a4f1dcc0', 'net.ltgt.gradle.incap:incap:0.2:incap-0.2.jar:b625b9806b0f1e4bc7a2e3457119488de3cd57ea20feedd513db070a573a4ffd', 'org.apache-extras.beanshell:bsh:2.0b6:bsh-2.0b6.jar:a17955976070c0573235ee662f2794a78082758b61accffce8d3f8aedcd91047', - 'org.briarproject:obfs4proxy-android:0.0.14-tor1:obfs4proxy-android-0.0.14-tor1.jar:8b08068778b133484b17956d8f7a7710739c33f671a26a68156f4d34e6f28c30', - 'org.briarproject:snowflake-android:2.3.1:snowflake-android-2.3.1.jar:1f83c9a070f87b7074af13627709a8b5aced5460104be7166af736b1bb73c293', - 'org.briarproject:tor-android:0.4.7.13:tor-android-0.4.7.13.jar:7852aab7d2298b80878c7719f34ce665725b494d673ecf2e6f9e697564638cc6', + 'org.briarproject:obfs4proxy-android:0.0.14-tor2:obfs4proxy-android-0.0.14-tor2.jar:a0a93770d6760ce57d9dbd31cc7177687374e00c3361dac22ab75e3b6e0f289e', + 'org.briarproject:snowflake-android:2.5.1:snowflake-android-2.5.1.jar:88ec81c17b1b6fa884d06839dec0330e328b45c89f88c970a213ce91ca8eac87', + 'org.briarproject:tor-android:0.4.7.13-1:tor-android-0.4.7.13-1.jar:065551c4f14d7613cbe4ed537d048d863cc7caac81790b974b45e41f03d0840e', 'org.checkerframework:checker-compat-qual:2.5.5:checker-compat-qual-2.5.5.jar:11d134b245e9cacc474514d2d66b5b8618f8039a1465cdc55bbc0b34e0008b7a', 'org.checkerframework:checker-qual:3.12.0:checker-qual-3.12.0.jar:ff10785ac2a357ec5de9c293cb982a2cbb605c0309ea4cc1cb9b9bc6dbe7f3cb', 'org.hamcrest:hamcrest-core:2.1:hamcrest-core-2.1.jar:e09109e54a289d88506b9bfec987ddd199f4217c9464132668351b9a4f00bee9', diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java index ef750c853..75579e4cb 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java @@ -55,7 +55,6 @@ import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Logger; import java.util.regex.Pattern; -import java.util.zip.ZipInputStream; import javax.annotation.Nullable; import javax.annotation.concurrent.GuardedBy; @@ -101,6 +100,7 @@ import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.bramble.util.PrivacyUtils.scrubOnion; import static org.briarproject.bramble.util.StringUtils.UTF_8; import static org.briarproject.bramble.util.StringUtils.isNullOrEmpty; +import static org.briarproject.nullsafety.NullSafety.requireNonNull; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -348,7 +348,7 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { if (LOG.isLoggable(INFO)) LOG.info("Installing Tor binary for " + architecture); File torFile = getTorExecutableFile(); - extract(getTorInputStream(), torFile); + extract(getExecutableInputStream("tor"), torFile); if (!torFile.setExecutable(true, true)) throw new IOException(); } @@ -356,7 +356,7 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { if (LOG.isLoggable(INFO)) LOG.info("Installing obfs4proxy binary for " + architecture); File obfs4File = getObfs4ExecutableFile(); - extract(getObfs4InputStream(), obfs4File); + extract(getExecutableInputStream("obfs4proxy"), obfs4File); if (!obfs4File.setExecutable(true, true)) throw new IOException(); } @@ -364,28 +364,18 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { if (LOG.isLoggable(INFO)) LOG.info("Installing snowflake binary for " + architecture); File snowflakeFile = getSnowflakeExecutableFile(); - extract(getSnowflakeInputStream(), snowflakeFile); + extract(getExecutableInputStream("snowflake"), snowflakeFile); if (!snowflakeFile.setExecutable(true, true)) throw new IOException(); } - private InputStream getTorInputStream() throws IOException { - return getZipInputStream("tor"); + private InputStream getExecutableInputStream(String basename) { + String ext = getExecutableExtension(); + return requireNonNull(resourceProvider + .getResourceInputStream(architecture + "/" + basename, ext)); } - private InputStream getObfs4InputStream() throws IOException { - return getZipInputStream("obfs4proxy"); - } - - private InputStream getSnowflakeInputStream() throws IOException { - return getZipInputStream("snowflake"); - } - - private InputStream getZipInputStream(String basename) throws IOException { - InputStream in = resourceProvider - .getResourceInputStream(basename + "_" + architecture, ".zip"); - ZipInputStream zin = new ZipInputStream(in); - if (zin.getNextEntry() == null) throw new IOException(); - return zin; + protected String getExecutableExtension() { + return ""; } private static void append(StringBuilder strb, String name, Object value) { diff --git a/bramble-java/build.gradle b/bramble-java/build.gradle index eed7b690f..93f30b36c 100644 --- a/bramble-java/build.gradle +++ b/bramble-java/build.gradle @@ -43,7 +43,7 @@ def torBinariesDir = 'src/main/resources' task cleanTorBinaries { doLast { - delete fileTree(torBinariesDir) { include '*.zip' } + delete fileTree(torBinariesDir) } } diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java index cc8e29438..bfc86cdbf 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java @@ -62,9 +62,9 @@ public class UnixTorPluginFactory extends TorPluginFactory { if (LOG.isLoggable(INFO)) { LOG.info("System's os.arch is " + arch); } - if (arch.equals("amd64")) return "linux-x86_64"; - else if (arch.equals("aarch64")) return "linux-aarch64"; - else if (arch.equals("arm")) return "linux-armhf"; + if (arch.equals("amd64")) return "x86_64"; + else if (arch.equals("aarch64")) return "aarch64"; + else if (arch.equals("arm")) return "armhf"; return null; } diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPlugin.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPlugin.java index 9bd16bd97..c5fa0013d 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPlugin.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPlugin.java @@ -94,4 +94,8 @@ class WindowsTorPlugin extends JavaTorPlugin { if (!success.take()) throw new PluginException(); } + @Override + protected String getExecutableExtension() { + return ".exe"; + } } diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPluginFactory.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPluginFactory.java index 81302a01b..cf4f5a3c4 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPluginFactory.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPluginFactory.java @@ -62,7 +62,7 @@ public class WindowsTorPluginFactory extends TorPluginFactory { if (LOG.isLoggable(INFO)) { LOG.info("System's os.arch is " + arch); } - if (arch.equals("amd64")) return "windows-x86_64"; + if (arch.equals("amd64")) return "x86_64"; return null; } diff --git a/bramble-java/witness.gradle b/bramble-java/witness.gradle index e25a0f726..1db784667 100644 --- a/bramble-java/witness.gradle +++ b/bramble-java/witness.gradle @@ -26,12 +26,12 @@ dependencyVerification { 'net.jcip:jcip-annotations:1.0:jcip-annotations-1.0.jar:be5805392060c71474bf6c9a67a099471274d30b83eef84bfc4e0889a4f1dcc0', 'net.ltgt.gradle.incap:incap:0.2:incap-0.2.jar:b625b9806b0f1e4bc7a2e3457119488de3cd57ea20feedd513db070a573a4ffd', 'org.apache-extras.beanshell:bsh:2.0b6:bsh-2.0b6.jar:a17955976070c0573235ee662f2794a78082758b61accffce8d3f8aedcd91047', - 'org.briarproject:obfs4proxy-linux:0.0.14-tor1:obfs4proxy-linux-0.0.14-tor1.jar:9783b9c7ec588a5246f534a9c5782783c8c9821825f81c3e0c6f1ecee61cfcbb', - 'org.briarproject:obfs4proxy-windows:0.0.14-tor1:obfs4proxy-windows-0.0.14-tor1.jar:9dd122b31b3cd1616f168091dcdb01de049d1e052fe5c089b7627618a8a2694b', - 'org.briarproject:snowflake-linux:2.3.1:snowflake-linux-2.3.1.jar:99ecf4546d8f79eb8408168c09380fec596558ac934554bf7d4247ea7ef2c9f3', - 'org.briarproject:snowflake-windows:2.3.1:snowflake-windows-2.3.1.jar:d011f1a72c00a221f56380c19aad8ff11db8c2bb1adb0784125572d80b4d275a', - 'org.briarproject:tor-linux:0.4.7.13:tor-linux-0.4.7.13.jar:9819ee973cbcdc133f7d04aef9d4b957a35087627a790e532142d15412a9636f', - 'org.briarproject:tor-windows:0.4.7.13:tor-windows-0.4.7.13.jar:853d2769665614e26703cbe02e43b218b064c04a0bcd120fdc459cda45bd2606', + 'org.briarproject:obfs4proxy-linux:0.0.14-tor2:obfs4proxy-linux-0.0.14-tor2.jar:bb2431092b5ad998ad620b0223e725c0f7e43f1b02af2f097a2544edc1fd9738', + 'org.briarproject:obfs4proxy-windows:0.0.14-tor2:obfs4proxy-windows-0.0.14-tor2.jar:b5fbd00a8c35ccf095b265370752390e4cd46055331049c4dfcc236dc9c650ac', + 'org.briarproject:snowflake-linux:2.5.1:snowflake-linux-2.5.1.jar:edc807dcb7758365970d95525e4749349a27f462d0e2df6505ad1ca65fb296d2', + 'org.briarproject:snowflake-windows:2.5.1:snowflake-windows-2.5.1.jar:700ec9c68dc033f544daa4ca3547c89e523aed66500cf4b3ac51fe017c51e7be', + 'org.briarproject:tor-linux:0.4.7.13-1:tor-linux-0.4.7.13-1.jar:652f3d8eaa6ff2258e991a2b8238f48fff86323877527e7c8bb125e015af0f18', + 'org.briarproject:tor-windows:0.4.7.13-1:tor-windows-0.4.7.13-1.jar:ad88b9ab77c3ab14109ee75094b085e61a6da3a6530fd1906d663e560af6b2e7', 'org.checkerframework:checker-compat-qual:2.5.5:checker-compat-qual-2.5.5.jar:11d134b245e9cacc474514d2d66b5b8618f8039a1465cdc55bbc0b34e0008b7a', 'org.checkerframework:checker-qual:3.12.0:checker-qual-3.12.0.jar:ff10785ac2a357ec5de9c293cb982a2cbb605c0309ea4cc1cb9b9bc6dbe7f3cb', 'org.hamcrest:hamcrest-core:2.1:hamcrest-core-2.1.jar:e09109e54a289d88506b9bfec987ddd199f4217c9464132668351b9a4f00bee9', diff --git a/briar-core/witness.gradle b/briar-core/witness.gradle index 44f776ce4..db3a0b785 100644 --- a/briar-core/witness.gradle +++ b/briar-core/witness.gradle @@ -17,8 +17,11 @@ dependencyVerification { 'com.google.j2objc:j2objc-annotations:1.3:j2objc-annotations-1.3.jar:21af30c92267bd6122c0e0b4d20cccb6641a37eaf956c6540ec471d584e64a7b', 'com.rometools:rome-utils:1.15.0:rome-utils-1.15.0.jar:2aaa1e95e0630ba5f4c183201f5ca6af8cecebcbf3494e7d11b903c9d1277cb8', 'com.rometools:rome:1.15.0:rome-1.15.0.jar:51cbcedae56ee0c32f25f3a367a6a9dadeef0f591d2f23d03486aec272e4d3f9', + 'com.squareup.okhttp3:mockwebserver:4.9.3:mockwebserver-4.9.3.jar:9c8c581c29f22f877a35d11380462f75bb24bf1886204fe835ee695594a2784e', 'com.squareup.okhttp3:okhttp:3.12.13:okhttp-3.12.13.jar:508234e024ef7e270ab1a6d5b356f5b98e786511239ca986d684fd1e2cf7bc82', + 'com.squareup.okhttp3:okhttp:4.9.3:okhttp-4.9.3.jar:93ecd6cba19d87dccfe566ec848d91aae799e3cf16c00709358ea69bd9227219', 'com.squareup.okio:okio:1.15.0:okio-1.15.0.jar:693fa319a7e8843300602b204023b7674f106ebcb577f2dd5807212b66118bd2', + 'com.squareup.okio:okio:2.8.0:okio-jvm-2.8.0.jar:4496b06e73982fcdd8a5393f46e5df2ce2fa4465df5895454cac68a32f09bbc8', 'com.squareup:javapoet:1.13.0:javapoet-1.13.0.jar:4c7517e848a71b36d069d12bb3bf46a70fd4cda3105d822b0ed2e19c00b69291', 'javax.inject:javax.inject:1:javax.inject-1.jar:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff', 'junit:junit:4.13.2:junit-4.13.2.jar:8e495b634469d64fb8acfa3495a065cbacc8a0fff55ce1e31007be4c16dc57d3', @@ -36,9 +39,13 @@ dependencyVerification { 'org.hamcrest:hamcrest-library:2.1:hamcrest-library-2.1.jar:b7e2b6895b3b679f0e47b6380fda391b225e9b78505db9d8bdde8d3cc8d52a21', 'org.hamcrest:hamcrest:2.1:hamcrest-2.1.jar:ba93b2e3a562322ba432f0a1b53addcc55cb188253319a020ed77f824e692050', 'org.jdom:jdom2:2.0.6:jdom2-2.0.6.jar:1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5', + 'org.jetbrains.kotlin:kotlin-stdlib-common:1.4.10:kotlin-stdlib-common-1.4.10.jar:4681f2d436a68c7523595d84ed5758e1382f9da0f67c91e6a848690d711274fe', 'org.jetbrains.kotlin:kotlin-stdlib-common:1.7.0:kotlin-stdlib-common-1.7.0.jar:59c6ff64fe9a6604afce03e8aaa75f83586c6030ac71fb0b34ee7cdefed3618f', + 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10:kotlin-stdlib-jdk7-1.4.10.jar:f9566380c08722c780ce33ceee23e98ddf765ca98fabd3e2fabae7975c8d232b', 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.0:kotlin-stdlib-jdk7-1.7.0.jar:07e91be9b2ca20672d2bdb7e181b766e73453a2da13492b5ddaee8fa47aea239', + 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10:kotlin-stdlib-jdk8-1.4.10.jar:39b7a9442d7a3865e0f4a732c56c1d5da0e11ffb3bb82a461d32deb0c0ca7673', 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.0:kotlin-stdlib-jdk8-1.7.0.jar:cf058e11db1dfc9944680c8c61b95ac689aaaa8a3eb30bced028100f038f030b', + 'org.jetbrains.kotlin:kotlin-stdlib:1.4.10:kotlin-stdlib-1.4.10.jar:01ecb09782c042b931c1839acf21a188340b295d05400afd6e3415d4475b8daa', 'org.jetbrains.kotlin:kotlin-stdlib:1.7.0:kotlin-stdlib-1.7.0.jar:aa88e9625577957f3249a46cb6e166ee09b369e600f7a11d148d16b0a6d87f05', 'org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.5.0:kotlinx-metadata-jvm-0.5.0.jar:ca063a96639b08b9eaa0de4d65e899480740a6efbe28ab9a8681a2ced03055a4', 'org.jetbrains:annotations:13.0:annotations-13.0.jar:ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478', diff --git a/build.gradle b/build.gradle index ac88afe26..c9d6e5cbb 100644 --- a/build.gradle +++ b/build.gradle @@ -32,9 +32,9 @@ buildscript { // okhttp 3.12.x is supported until end of 2021, newer versions need minSdk 21 okhttp_version = "3.12.13" jackson_version = "2.13.4" - tor_version = "0.4.7.13" - obfs4proxy_version = "0.0.14-tor1" - snowflake_version = "2.3.1" + tor_version = "0.4.7.13-1" + obfs4proxy_version = "0.0.14-tor2" + snowflake_version = "2.5.1" jsoup_version = '1.15.3' bouncy_castle_version = '1.71' junit_version = "4.13.2"