diff options
| author | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-09-20 15:07:40 +0200 |
|---|---|---|
| committer | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-09-20 15:07:40 +0200 |
| commit | 2a619ceba75a4c16b25de12d59a87eac795a4468 (patch) | |
| tree | 1d63a35217011fa761b703633b3f91fd839ec71e /wrappers/java-android/lib | |
| parent | 7e309b67de74fe5bd5a1c70c1880c2a381c4f78b (diff) | |
Remove: unused wrappers
Diffstat (limited to 'wrappers/java-android/lib')
13 files changed, 0 insertions, 368 deletions
diff --git a/wrappers/java-android/lib/.gitignore b/wrappers/java-android/lib/.gitignore deleted file mode 100644 index 1ac6136..0000000 --- a/wrappers/java-android/lib/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/build -/src/test/resources/* diff --git a/wrappers/java-android/lib/CMakeLists.txt b/wrappers/java-android/lib/CMakeLists.txt deleted file mode 100644 index 8e8ff87..0000000 --- a/wrappers/java-android/lib/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -cmake_minimum_required(VERSION 3.18.1) -project(eduvpn_common) - -# Android -> Go architecture map -set(arch_map_x86 386) -set(arch_map_x86_64 amd64) -set(arch_map_arm arm) -set(arch_map_arm64 arm64) - -set(GOARCH ${arch_map_${ANDROID_ARCH_NAME}}) - -find_program(MAKE_EXECUTABLE - NAMES gmake mingw32-make make - NAMES_PER_DIR - DOC "GNU Make" - REQUIRED -) - -# Inspired by https://github.com/WireGuard/wireguard-android/blob/1.0.20211029/tunnel/tools/CMakeLists.txt - -# --target has to be specified to compiler & linker as e.g. ANDROID_C_COMPILER may just be 'clang' without prefixes -# CGO_CPPFLAGS are concatenated to CGO_CFLAGS and CGO_CXXFLAGS -add_custom_target(shared-lib - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../../exports" - COMMENT "Building shared library for ${ANDROID_LLVM_TRIPLE}" - VERBATIM - COMMAND ${MAKE_EXECUTABLE} - GOOS=android GOARCH=${GOARCH} - CC=${ANDROID_C_COMPILER} CXX=${ANDROID_CXX_COMPILER} - CGO_CPPFLAGS=--target=${ANDROID_LLVM_TRIPLE} CGO_CFLAGS=${CMAKE_C_FLAGS} CGO_CXXFLAGS=${CMAKE_CXX_FLAGS} - CGO_LDFLAGS=${CMAKE_SHARED_LINKER_FLAGS}\ --target=${ANDROID_LLVM_TRIPLE} - COPY_LIB_TO=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} -) - -# Note about COPY_LIB_TO: this is an easy cross-platform alternative to calling `cp` -# file(COPY ...) does not work since it runs at the configure stage... diff --git a/wrappers/java-android/lib/build.gradle b/wrappers/java-android/lib/build.gradle deleted file mode 100644 index 04cb00e..0000000 --- a/wrappers/java-android/lib/build.gradle +++ /dev/null @@ -1,107 +0,0 @@ -import com.android.build.api.dsl.ManagedVirtualDevice - -plugins { - id 'com.android.library' // Build AAR -} - -android { - compileSdk 31 - - defaultConfig { - minSdk 21 - targetSdk 31 - versionCode 1 - versionName '1.0' - - testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' - - consumerProguardFiles 'consumer-rules.pro' - - externalNativeBuild { - cmake { - // Specify which target we want to build - targets 'shared-lib' - } - } - } - - buildTypes { - release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - - // Support Java 8+ - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - externalNativeBuild { - cmake { - version '3.18.1' // See cmake_minimum_required in CMakeLists.txt - path 'CMakeLists.txt' - } - } - - sourceSets { - androidTest { - // Use same sources & resources for Android instrumented tests as unit tests - java.srcDirs = sourceSets.test.java.srcDirs - resources.srcDirs = sourceSets.test.resources.srcDirs - } - } - - task copyTestData(type: Copy, description: 'Copy test_data to test resources') { - from('../../../src/test_data') { - exclude '**/*.py', '**/*.sh' - } - into sourceSets.test.resources.srcDirs[0].toPath().resolve('org/eduvpn/common') - } - - // Copy test_data to Java resources before these are processed - // (.named does not find all tasks. Task names were obtained with com.dorongold.task-tree plugin) - tasks.matching { t -> - t.name in [ - 'processDebugUnitTestJavaRes', 'processReleaseUnitTestJavaRes', - 'processDebugAndroidTestJavaRes', 'processReleaseAndroidTestJavaRes'] - }.all { - dependsOn copyTestData - } - - // Do not cache unit test results as the shared library may have changed - tasks.matching { t -> t.name in ['testDebugUnitTest', 'testReleaseUnitTest'] }.all { - outputs.upToDateWhen { false } - } - - testOptions { - // Display full exceptions and passed tests for unit tests - unitTests.all { - testLogging { - events 'passed', 'skipped', 'failed' - exceptionFormat 'full' - } - } - - devices { - pixel2(ManagedVirtualDevice) { - device = 'Pixel 2' - apiLevel = 30 - systemImageSource = 'aosp' - abi = 'x86_64' - } - } - } -} - -dependencies { - implementation 'net.java.dev.jna:jna:5.10.0@aar' - - testImplementation 'commons-io:commons-io:2.11.0' - testImplementation 'net.java.dev.jna:jna:5.10.0' // Include jnidispatch library in unit tests - testImplementation 'junit:junit:4.+' - - androidTestImplementation 'commons-io:commons-io:2.11.0' - androidTestImplementation 'androidx.test:runner:1.4.0' -} diff --git a/wrappers/java-android/lib/consumer-rules.pro b/wrappers/java-android/lib/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 --- a/wrappers/java-android/lib/consumer-rules.pro +++ /dev/null diff --git a/wrappers/java-android/lib/proguard-rules.pro b/wrappers/java-android/lib/proguard-rules.pro deleted file mode 100644 index f1b4245..0000000 --- a/wrappers/java-android/lib/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile diff --git a/wrappers/java-android/lib/src/main/AndroidManifest.xml b/wrappers/java-android/lib/src/main/AndroidManifest.xml deleted file mode 100644 index 5a49838..0000000 --- a/wrappers/java-android/lib/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest package="org.eduvpn.common"> - -</manifest> diff --git a/wrappers/java-android/lib/src/main/java/org/eduvpn/common/Discovery.java b/wrappers/java-android/lib/src/main/java/org/eduvpn/common/Discovery.java deleted file mode 100644 index dfeef71..0000000 --- a/wrappers/java-android/lib/src/main/java/org/eduvpn/common/Discovery.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.eduvpn.common; - -import com.sun.jna.*; - -import java.nio.charset.StandardCharsets; - -public final class Discovery { - private static final String LIB_NAME = "eduvpn_common"; - private static final NativeApi discovery = Native.load(LIB_NAME, NativeApi.class); - - /** - * Verifies the signature on the JSON server_list.json/organization_list.json file. - * If the function returns, the signature is valid for the given file type. - * - * @param signature .minisig signature file contents. - * @param signedJson Signed .json file contents. - * @param expectedFileName The file type to be verified, one of {@code "server_list.json"} or {@code "organization_list.json"}. - * @param minSignTime Minimum time for signature (UNIX timestamp, seconds). Should be set to at least the time of the previous signature. - * @throws IllegalArgumentException If {@code expectedFileName} is not one of the allowed values or one of the parameters is empty. - * @throws VerifyException If signature verification fails. - */ - public static void verify(byte[] signature, byte[] signedJson, String expectedFileName, long minSignTime) throws VerifyException { - byte err = discovery.Verify(NativeApi.GoSlice.fromArray(signature), NativeApi.GoSlice.fromArray(signedJson), - NativeApi.GoSlice.fromString(expectedFileName), minSignTime); - - switch (err) { - case 0: - return; - case 1: - throw new IllegalArgumentException("unknown expected file name"); - case 2: - throw new InvalidSignatureException(); - case 3: - throw new InvalidSignatureUnknownKeyException(); - case 4: - throw new SignatureTooOldException(); - default: - throw new UnknownVerifyException(err); - } - } - - /** Use for testing only, see Go documentation. */ - /*package-private*/ - static void insecureTestingSetExtraKey(String keyString) { - discovery.InsecureTestingSetExtraKey(NativeApi.GoSlice.fromArray(keyString.getBytes(StandardCharsets.UTF_8))); - } - - private interface NativeApi extends Library { - // C-compatible structure - @Structure.FieldOrder({"data", "len", "cap"}) - class GoSlice extends Structure implements Structure.ByValue { - public Pointer data; - public long len, cap; - - public GoSlice(Pointer data, long len, long cap) { - this.data = data; - this.len = len; - this.cap = cap; - } - - public static GoSlice fromArray(byte[] bytes) { - Memory memory = new Memory(bytes.length); - memory.write(0, bytes, 0, bytes.length); - return new GoSlice(memory, bytes.length, bytes.length); - } - - /** From string as UTF-8. */ - public static GoSlice fromString(String str) { - return fromArray(str.getBytes(StandardCharsets.UTF_8)); - } - } - - byte Verify(GoSlice signatureFileContent, GoSlice signedJson, GoSlice expectedFileName, long minSignTime); - - void InsecureTestingSetExtraKey(GoSlice keyString); - } - - private Discovery() { - } -} diff --git a/wrappers/java-android/lib/src/main/java/org/eduvpn/common/InvalidSignatureException.java b/wrappers/java-android/lib/src/main/java/org/eduvpn/common/InvalidSignatureException.java deleted file mode 100644 index b739dd7..0000000 --- a/wrappers/java-android/lib/src/main/java/org/eduvpn/common/InvalidSignatureException.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.eduvpn.common; - -/** Signature is invalid (for the expected file type). */ -public final class InvalidSignatureException extends VerifyException { - public InvalidSignatureException() { - super("invalid signature"); - } -} diff --git a/wrappers/java-android/lib/src/main/java/org/eduvpn/common/InvalidSignatureUnknownKeyException.java b/wrappers/java-android/lib/src/main/java/org/eduvpn/common/InvalidSignatureUnknownKeyException.java deleted file mode 100644 index 6d651e5..0000000 --- a/wrappers/java-android/lib/src/main/java/org/eduvpn/common/InvalidSignatureUnknownKeyException.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.eduvpn.common; - -/** Signature was created with an unknown key and has not been verified. */ -public final class InvalidSignatureUnknownKeyException extends VerifyException { - public InvalidSignatureUnknownKeyException() { - super("invalid signature (unknown key)"); - } -} diff --git a/wrappers/java-android/lib/src/main/java/org/eduvpn/common/SignatureTooOldException.java b/wrappers/java-android/lib/src/main/java/org/eduvpn/common/SignatureTooOldException.java deleted file mode 100644 index c89136f..0000000 --- a/wrappers/java-android/lib/src/main/java/org/eduvpn/common/SignatureTooOldException.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.eduvpn.common; - -/** Signature timestamp smaller than specified minimum signing time (rollback). */ -public final class SignatureTooOldException extends VerifyException { - public SignatureTooOldException() { - super("replay of previous signature (rollback)"); - } -} diff --git a/wrappers/java-android/lib/src/main/java/org/eduvpn/common/UnknownVerifyException.java b/wrappers/java-android/lib/src/main/java/org/eduvpn/common/UnknownVerifyException.java deleted file mode 100644 index 80b74ea..0000000 --- a/wrappers/java-android/lib/src/main/java/org/eduvpn/common/UnknownVerifyException.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.eduvpn.common; - -/** Other unknown error. */ -public final class UnknownVerifyException extends VerifyException { - public UnknownVerifyException(byte code) { - super(String.format("unknown verify error (%d)", code)); - assert code != 0; - } -} diff --git a/wrappers/java-android/lib/src/main/java/org/eduvpn/common/VerifyException.java b/wrappers/java-android/lib/src/main/java/org/eduvpn/common/VerifyException.java deleted file mode 100644 index 686ea41..0000000 --- a/wrappers/java-android/lib/src/main/java/org/eduvpn/common/VerifyException.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.eduvpn.common; - -/** Verification failed, do not trust the file. */ -public abstract class VerifyException extends Exception { - protected VerifyException(String message) { - super(message); - } -} diff --git a/wrappers/java-android/lib/src/test/java/org/eduvpn/common/VerifyTests.java b/wrappers/java-android/lib/src/test/java/org/eduvpn/common/VerifyTests.java deleted file mode 100644 index 92a4648..0000000 --- a/wrappers/java-android/lib/src/test/java/org/eduvpn/common/VerifyTests.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.eduvpn.common; - -import org.apache.commons.io.IOUtils; -import org.junit.BeforeClass; -import org.junit.Test; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - -public class VerifyTests { - private static byte[] readAll(String resource) throws IOException { - try (InputStream stream = VerifyTests.class.getResourceAsStream(resource)) { - return IOUtils.toByteArray(stream); - } - } - - @SuppressWarnings("OptionalGetWithoutIsPresent") - @BeforeClass - public static void oneTimeSetup() throws IOException { - try (BufferedReader reader = new BufferedReader(new InputStreamReader( - VerifyTests.class.getResourceAsStream("public.key")))) { - Discovery.insecureTestingSetExtraKey(reader.lines().reduce((a, b) -> b).get()); - } - } - - @Test - public void testValid() throws IOException, VerifyException { - Discovery.verify( - readAll("server_list.json.minisig"), - readAll("server_list.json"), - "server_list.json", - 10 - ); - } - - @Test(expected = InvalidSignatureException.class) - public void testInvalidSignature() throws IOException, VerifyException { - Discovery.verify( - readAll("random.txt"), - readAll("server_list.json"), - "server_list.json", - 0 - ); - } - - @Test(expected = InvalidSignatureUnknownKeyException.class) - public void testWrongKey() throws IOException, VerifyException { - Discovery.verify( - readAll("server_list.json.wrong_key.minisig"), - readAll("server_list.json"), - "server_list.json", - 0 - ); - } - - @Test(expected = SignatureTooOldException.class) - public void testOldSignature() throws IOException, VerifyException { - Discovery.verify( - readAll("server_list.json.minisig"), - readAll("server_list.json"), - "server_list.json", - 11 - ); - } - - @Test(expected = IllegalArgumentException.class) - public void testUnknownExpectedFile() throws IOException, VerifyException { - Discovery.verify( - readAll("other_list.json.minisig"), - readAll("other_list.json"), - "other_list.json", - 0 - ); - } -} |
