summaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
authorArne Schwabe <arne@rfc2549.org>2018-12-04 17:11:31 +0100
committerArne Schwabe <arne@rfc2549.org>2018-12-04 17:11:31 +0100
commitf461027896e3f969798c95651cec0b57ff0f0269 (patch)
treec7b2a1f4bf3ab4a7cf502befdc394b8bce28b6e7 /main/src
parentb3ed4adfc3c4088ca525cf8a994995699648d71d (diff)
Support new OpenVPN3 version with OpenSSL and print OpenVPN versions
Diffstat (limited to 'main/src')
-rw-r--r--main/src/main/cpp/CMakeLists.txt25
-rw-r--r--main/src/main/cpp/opvpnutil/jniglue.c12
-rw-r--r--main/src/main/java/de/blinkt/openvpn/VpnProfile.java5
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java5
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/AboutFragment.java6
-rw-r--r--main/src/main/res/layout/about.xml17
-rw-r--r--main/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java39
7 files changed, 77 insertions, 32 deletions
diff --git a/main/src/main/cpp/CMakeLists.txt b/main/src/main/cpp/CMakeLists.txt
index 24b13f3a..8b22a82a 100644
--- a/main/src/main/cpp/CMakeLists.txt
+++ b/main/src/main/cpp/CMakeLists.txt
@@ -15,6 +15,9 @@ OPTION(ENABLE_TESTING "" OFF)
# Own options
OPTION(OPENVPN2MBED "Use mbed TLS for OpenVPN2" OFF)
+OPTION(OPENVPN3OSSL "Use OpenSSL for OpenVPN3" ON)
+SET(OPENVPN3OSSL ON)
+
#add_subdirectory(lzo)
include(tools.cmake)
@@ -61,26 +64,38 @@ if (NOT ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} MATCHES "build/intermediates/cmake/.*n
${CMAKE_CURRENT_SOURCE_DIR}/mbedtls/include
)
- target_compile_options(ovpn3 PRIVATE -std=c++1y)
+ if (${OPENVPN3OSSL})
+ target_compile_definitions(ovpn3 PRIVATE
+ -DUSE_OPENSSL
+ )
+ target_link_libraries(ovpn3 crypto ssl lzo lz4)
+ else()
+ target_compile_definitions(ovpn3 PRIVATE
+ -DUSE_MBEDTLS
+ )
+ target_link_libraries(ovpn3 mbedtls mbedx509 mbedcrypto lzo lz4)
+ endif()
+
+ target_compile_options(ovpn3 PRIVATE -std=c++1y)
target_compile_definitions(ovpn3 PRIVATE
-DHAVE_CONFIG_H
-DHAVE_LZO
-DHAVE_LZ4
-DASIO_STANDALONE
-DUSE_ASIO
- -DUSE_MBEDTLS
-DGIT_VERSION_STRING=\"${OPENVPN3_GIT}\"
-DNO_ROUTE_EXCLUDE_EMULATION
-DOPENVPN_SHOW_SESSION_TOKEN
- -DASIO_HAS_STD_STRING_VIEW
)
- target_link_libraries(ovpn3 mbedtls mbedx509 mbedcrypto lzo lz4)
else()
message ("Not budiling OpenVPN for output dir ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
endif()
add_library(opvpnutil SHARED opvpnutil/jniglue.c opvpnutil/scan_ifs.c opvpnutil/sslspeed.c)
-target_compile_definitions(opvpnutil PRIVATE -DTARGET_ARCH_ABI=\"${ANDROID_ABI}\")
+target_compile_definitions(opvpnutil PRIVATE -DTARGET_ARCH_ABI=\"${ANDROID_ABI}\"
+ -DOPENVPN2_GIT_REVISION=\"${OPENVPN2_GIT}\"
+ -DOPENVPN3_GIT_REVISION=\"${OPENVPN3_GIT}\"
+ )
target_link_libraries(opvpnutil log crypto ssl)
# The magic Jellybean keystore signing hack. Beware dragons and dlsyms magic ahead
diff --git a/main/src/main/cpp/opvpnutil/jniglue.c b/main/src/main/cpp/opvpnutil/jniglue.c
index b0c6c704..264b18a8 100644
--- a/main/src/main/cpp/opvpnutil/jniglue.c
+++ b/main/src/main/cpp/opvpnutil/jniglue.c
@@ -31,3 +31,15 @@ jstring Java_de_blinkt_openvpn_core_NativeUtils_getJNIAPI(JNIEnv *env, jclass jo
return (*env)->NewStringUTF(env, TARGET_ARCH_ABI);
}
+
+jstring Java_de_blinkt_openvpn_core_NativeUtils_getOpenVPN2GitVersion(JNIEnv *env, jclass jo)
+{
+
+ return (*env)->NewStringUTF(env, OPENVPN2_GIT_REVISION);
+}
+
+jstring Java_de_blinkt_openvpn_core_NativeUtils_getOpenVPN3GitVersion(JNIEnv *env, jclass jo)
+{
+
+ return (*env)->NewStringUTF(env, OPENVPN3_GIT_REVISION);
+}
diff --git a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
index a715805d..85ee6807 100644
--- a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
+++ b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
@@ -551,7 +551,10 @@ public class VpnProfile implements Serializable, Cloneable {
if (mMssFix != 0) {
if (mMssFix != 1450) {
- cfg.append(String.format(Locale.US, "mssfix %d\n", mMssFix));
+ if (configForOvpn3)
+ cfg.append(String.format(Locale.US, "mssfix %d mtu\n", mMssFix));
+ else
+ cfg.append(String.format(Locale.US, "mssfix %d\n", mMssFix));
} else
cfg.append("mssfix\n");
}
diff --git a/main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java b/main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java
index 6b633c34..4e22189a 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java
@@ -26,6 +26,9 @@ public class NativeUtils {
private static native String getJNIAPI();
+ public static native String getOpenVPN2GitVersion();
+
+ public static native String getOpenVPN3GitVersion();
public final static int[] openSSLlengths = {
16, 64, 256, 1024, 8 * 1024, 16 * 1024
@@ -44,4 +47,6 @@ public class NativeUtils {
public static boolean isRoboUnitTest() {
return "robolectric".equals(Build.FINGERPRINT);
}
+
+
}
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/AboutFragment.java b/main/src/main/java/de/blinkt/openvpn/fragments/AboutFragment.java
index 4fce6eaa..540f4a9a 100644
--- a/main/src/main/java/de/blinkt/openvpn/fragments/AboutFragment.java
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/AboutFragment.java
@@ -30,6 +30,7 @@ import android.widget.TextView;
import com.android.vending.billing.IInAppBillingService;
+import de.blinkt.openvpn.core.NativeUtils;
import org.json.JSONException;
import org.json.JSONObject;
@@ -269,10 +270,13 @@ public class AboutFragment extends Fragment implements View.OnClickListener {
version = "error fetching version";
}
-
ver.setText(getString(R.string.version_info, name, version));
+ TextView verO2 = v.findViewById(R.id.version_ovpn2);
+ TextView verO3 = v.findViewById(R.id.version_ovpn3);
+ verO2.setText(String.format(Locale.US, "OpenVPN version: %s", NativeUtils.getOpenVPN2GitVersion()));
+ verO3.setText(String.format(Locale.US, "OpenVPN3 core version: %s", NativeUtils.getOpenVPN3GitVersion()));
gmsTextView = (TextView) v.findViewById(R.id.donategms);
/* recreating view without onCreate/onDestroy cycle */
diff --git a/main/src/main/res/layout/about.xml b/main/src/main/res/layout/about.xml
index 2ab9a4f3..8b40520b 100644
--- a/main/src/main/res/layout/about.xml
+++ b/main/src/main/res/layout/about.xml
@@ -19,6 +19,7 @@
<TextView
android:id="@+id/version"
+ tools:text="OpenVPN for Anroid 1.2.3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
@@ -26,7 +27,8 @@
<Space
android:layout_width="match_parent"
- android:layout_height="12sp" />
+ android:layout_height="6sp" />
+
<TextView
android:layout_width="match_parent"
@@ -37,7 +39,20 @@
<Space
android:layout_width="match_parent"
android:layout_height="12sp" />
+ <TextView
+ android:id="@+id/version_ovpn2"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ tools:text="OpenVPN version 874981723" />
+ <TextView
+ android:id="@+id/version_ovpn3"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ tools:text="OpenVPN3 core version 8df8718283" />
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="12sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/main/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java b/main/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java
index 078fa218..08f7a156 100644
--- a/main/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java
+++ b/main/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java
@@ -1,30 +1,13 @@
package de.blinkt.openvpn.core;
-import android.net.*;
-import android.os.Build;
+import android.content.Context;
import de.blinkt.openvpn.R;
-import net.openvpn.ovpn3.*;
-
-import java.lang.Override;
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.util.Locale;
-import java.util.Vector;
-
import de.blinkt.openvpn.VpnProfile;
-
-import android.content.Context;
-import net.openvpn.ovpn3.*;
-import net.openvpn.ovpn3.*;
import net.openvpn.ovpn3.*;
-import net.openvpn.ovpn3.*;
-import net.openvpn.ovpn3.*;
-import net.openvpn.ovpn3.*;
-import net.openvpn.ovpn3.*;
-import net.openvpn.ovpn3.ClientAPI_Config;
-import net.openvpn.ovpn3.ClientAPI_EvalConfig;
-import net.openvpn.ovpn3.ClientAPI_Event;
-import net.openvpn.ovpn3.ClientAPI_ExternalPKICertRequest;
+
+import static net.openvpn.ovpn3.ClientAPI_OpenVPNClient.copyright;
+import static net.openvpn.ovpn3.ClientAPI_OpenVPNClient.init_process;
+import static net.openvpn.ovpn3.ClientAPI_OpenVPNClient.platform;
public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable, OpenVPNManagement {
@@ -240,8 +223,15 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public void external_pki_sign_request(ClientAPI_ExternalPKISignRequest signreq) {
- VpnStatus.logDebug("Got external PKI signing request from OpenVPN core");
- signreq.setSig(mVp.getSignedData(mService, signreq.getData(),true));
+ VpnStatus.logDebug("Got external PKI signing request from OpenVPN core for algorithm " + signreq.getAlgorithm());
+ boolean pkcs1padding;
+ if (signreq.getAlgorithm().equals("RSA_PKCS1_PADDING"))
+ pkcs1padding = true;
+ else if (signreq.getAlgorithm().equals("RSA_NO_PADDING"))
+ pkcs1padding = false;
+ else
+ throw new IllegalArgumentException("Illegal padding in sign request" + signreq.getAlgorithm());
+ signreq.setSig(mVp.getSignedData(mService, signreq.getData(), pkcs1padding));
}
void setUserPW() {
@@ -348,4 +338,5 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
super.pause(reason.toString());
}
+
}