summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEmīls Piņķis <emils@mullvad.net>2019-09-07 15:26:48 +0100
committerEmīls Piņķis <emils@mullvad.net>2019-09-07 15:26:48 +0100
commit2a478d7674c8754477d02dc8d221d7466e95702b (patch)
tree3a9016551bc6789c44e89374627e3c178964e55e
parent70de9106fb2be220e47458d7843acf64747bc1b0 (diff)
parent88d67bd50bca6e25a3c18c0c855b1991fde865ac (diff)
downloadmullvadvpn-2a478d7674c8754477d02dc8d221d7466e95702b.tar.xz
mullvadvpn-2a478d7674c8754477d02dc8d221d7466e95702b.zip
Merge branch 'android-show-key-age'
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/WireguardKeyFragment.kt17
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/model/PublicKey.kt2
-rw-r--r--android/src/main/res/layout/wireguard_key.xml9
-rw-r--r--android/src/main/res/values/strings.xml1
-rw-r--r--mullvad-jni/src/into_java.rs16
-rw-r--r--mullvad-jni/src/lib.rs2
6 files changed, 35 insertions, 12 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/WireguardKeyFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/WireguardKeyFragment.kt
index b8ce500d3c..0c3eed1a4f 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/WireguardKeyFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/WireguardKeyFragment.kt
@@ -11,7 +11,6 @@ import android.net.Uri
import android.os.Bundle
import android.support.v4.app.Fragment
import android.util.Base64
-import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -20,6 +19,9 @@ import android.widget.ProgressBar
import android.widget.TextView
import android.widget.Toast
+import org.joda.time.DateTime
+import org.joda.time.format.DateTimeFormat
+
import net.mullvad.mullvadvpn.dataproxy.ConnectionProxy
import net.mullvad.mullvadvpn.dataproxy.KeyStatusListener
import net.mullvad.mullvadvpn.model.KeygenFailure
@@ -27,6 +29,9 @@ import net.mullvad.mullvadvpn.model.KeygenEvent
import net.mullvad.mullvadvpn.model.TunnelState
import net.mullvad.mullvadvpn.util.SmartDeferred
+val RFC3339_FORMAT = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss.SSSSSSSSSS z")
+val KEY_AGE_FORMAT = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm")
+
class WireguardKeyFragment : Fragment() {
private var currentJob: Job? = null
private var updateViewsJob: Job? = null
@@ -40,6 +45,7 @@ class WireguardKeyFragment : Fragment() {
private var validatingKey = false
private lateinit var publicKey: TextView
+ private lateinit var publicKeyAge: TextView
private lateinit var statusMessage: TextView
private lateinit var visitWebsiteView: View
private lateinit var generateButton: Button
@@ -72,6 +78,7 @@ class WireguardKeyFragment : Fragment() {
generateSpinner = view.findViewById<ProgressBar>(R.id.wg_generate_key_spinner)
verifyButton = view.findViewById<Button>(R.id.wg_verify_key_button)
verifySpinner = view.findViewById<ProgressBar>(R.id.wg_verify_key_spinner)
+ publicKeyAge = view.findViewById<TextView>(R.id.wireguard_key_age)
visitWebsiteView.visibility = View.VISIBLE
visitWebsiteView.setOnClickListener {
@@ -100,9 +107,11 @@ class WireguardKeyFragment : Fragment() {
}
is KeygenEvent.NewKey -> {
- val publicKeyString = Base64.encodeToString(keyState.publicKey.key, Base64.DEFAULT)
+ val key = keyState.publicKey
+ val publicKeyString = Base64.encodeToString(key.key, Base64.NO_WRAP)
publicKey.visibility = View.VISIBLE
publicKey.setText(publicKeyString)
+ publicKeyAge.setText(formatKeyDateCreated(key.dateCreated))
if (keyState.verified != null) {
if (keyState.verified) {
@@ -283,4 +292,8 @@ class WireguardKeyFragment : Fragment() {
updateViewsJob = updateViewJob()
}
}
+
+ private fun formatKeyDateCreated(rfc3339: String): String {
+ return parentActivity.getString(R.string.wireguard_key_age) + " " + KEY_AGE_FORMAT.print(DateTime.parse(rfc3339, RFC3339_FORMAT))
+ }
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/PublicKey.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/PublicKey.kt
index 30408c4a9b..1931f40ec7 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/PublicKey.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/PublicKey.kt
@@ -1,3 +1,3 @@
package net.mullvad.mullvadvpn.model
-data class PublicKey(val key: ByteArray)
+data class PublicKey(val key: ByteArray, val dateCreated: String)
diff --git a/android/src/main/res/layout/wireguard_key.xml b/android/src/main/res/layout/wireguard_key.xml
index da2bb39207..e86d59aefb 100644
--- a/android/src/main/res/layout/wireguard_key.xml
+++ b/android/src/main/res/layout/wireguard_key.xml
@@ -69,12 +69,17 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
- android:paddingTop="3dp"
android:textAllCaps="false"
android:textColor="@color/white60"
android:textSize="14sp"
android:textStyle="bold" />
-
+ <TextView
+ android:id="@+id/wireguard_key_age"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingVertical="2dp"
+ android:textSize="14sp"
+ android:gravity="center"/>
<TextView
android:id="@+id/wireguard_key_status"
android:layout_width="wrap_content"
diff --git a/android/src/main/res/values/strings.xml b/android/src/main/res/values/strings.xml
index 0ddba635d5..a2e017b962 100644
--- a/android/src/main/res/values/strings.xml
+++ b/android/src/main/res/values/strings.xml
@@ -118,6 +118,7 @@
<string name="wireguard_generate_key">Generate key</string>
<string name="wireguard_replace_key">Replace key</string>
<string name="wireguard_manage_keys">Manage keys</string>
+ <string name="wireguard_key_age">Key generated on</string>
<string name="wireguard_key_connectivity">
Connectivity required to manage your key.
</string>
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs
index e85e5b2f3f..1e46973c32 100644
--- a/mullvad-jni/src/into_java.rs
+++ b/mullvad-jni/src/into_java.rs
@@ -14,7 +14,7 @@ use mullvad_types::{
settings::Settings,
states::TunnelState,
version::AppVersionInfo,
- wireguard::KeygenEvent,
+ wireguard::{KeygenEvent, PublicKey},
CustomTunnelEndpoint,
};
use std::{
@@ -23,7 +23,7 @@ use std::{
};
use talpid_core::tunnel::tun_provider::TunConfig;
use talpid_types::{
- net::{wireguard::PublicKey, Endpoint, TransportProtocol, TunnelEndpoint},
+ net::{Endpoint, TransportProtocol, TunnelEndpoint},
tunnel::{ActionAfterDisconnect, BlockReason, ParameterGenerationError},
};
@@ -214,10 +214,14 @@ impl<'env> IntoJava<'env> for PublicKey {
fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType {
let class = get_class("net/mullvad/mullvadvpn/model/PublicKey");
- let key = env.auto_local(self.as_bytes().into_java(env));
- let parameters = [JValue::Object(key.as_obj())];
+ let key = env.auto_local(self.key.as_bytes().into_java(env));
+ let date_created = env.auto_local(*self.created.to_string().into_java(env));
+ let parameters = [
+ JValue::Object(key.as_obj()),
+ JValue::Object(date_created.as_obj()),
+ ];
- env.new_object(&class, "([B)V", &parameters)
+ env.new_object(&class, "([BLjava/lang/String;)V", &parameters)
.expect("Failed to create PublicKey Java object")
}
}
@@ -546,7 +550,7 @@ impl<'env> IntoJava<'env> for KeygenEvent {
match self {
KeygenEvent::NewKey(public_key) => {
let class = get_class("net/mullvad/mullvadvpn/model/KeygenEvent$NewKey");
- let java_public_key = env.auto_local(public_key.key.into_java(env));
+ let java_public_key = env.auto_local(public_key.into_java(env));
let parameters = [
JValue::Object(java_public_key.as_obj()),
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index afe7ce7229..fd177f67d6 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -433,7 +433,7 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_MullvadDaemon_getWireguardKey
_: JObject<'this>,
) -> JObject<'env> {
match DAEMON_INTERFACE.get_wireguard_key() {
- Ok(key) => key.map(|k| k.key).into_java(&env),
+ Ok(key) => key.into_java(&env),
Err(error) => {
log::error!(
"{}",