diff options
| author | Emīls Piņķis <emils@mullvad.net> | 2019-09-07 15:26:48 +0100 |
|---|---|---|
| committer | Emīls Piņķis <emils@mullvad.net> | 2019-09-07 15:26:48 +0100 |
| commit | 2a478d7674c8754477d02dc8d221d7466e95702b (patch) | |
| tree | 3a9016551bc6789c44e89374627e3c178964e55e | |
| parent | 70de9106fb2be220e47458d7843acf64747bc1b0 (diff) | |
| parent | 88d67bd50bca6e25a3c18c0c855b1991fde865ac (diff) | |
| download | mullvadvpn-2a478d7674c8754477d02dc8d221d7466e95702b.tar.xz mullvadvpn-2a478d7674c8754477d02dc8d221d7466e95702b.zip | |
Merge branch 'android-show-key-age'
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/WireguardKeyFragment.kt | 17 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/model/PublicKey.kt | 2 | ||||
| -rw-r--r-- | android/src/main/res/layout/wireguard_key.xml | 9 | ||||
| -rw-r--r-- | android/src/main/res/values/strings.xml | 1 | ||||
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 16 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 2 |
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", ¶meters) + env.new_object(&class, "([BLjava/lang/String;)V", ¶meters) .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!( "{}", |
