diff --git a/MasterPassword/Java/masterpassword-algorithm/pom.xml b/MasterPassword/Java/masterpassword-algorithm/pom.xml
index 94054f96..2384312a 100644
--- a/MasterPassword/Java/masterpassword-algorithm/pom.xml
+++ b/MasterPassword/Java/masterpassword-algorithm/pom.xml
@@ -24,12 +24,12 @@
com.lyndir.lhunath.opal
opal-system
- 1.6-p6
+ 1.6-p7
com.lyndir.lhunath.opal
opal-crypto
- 1.6-p6
+ 1.6-p7
diff --git a/MasterPassword/Java/masterpassword-algorithm/src/main/java/com/lyndir/masterpassword/MasterKey.java b/MasterPassword/Java/masterpassword-algorithm/src/main/java/com/lyndir/masterpassword/MasterKey.java
index a1013c1c..34710ad9 100644
--- a/MasterPassword/Java/masterpassword-algorithm/src/main/java/com/lyndir/masterpassword/MasterKey.java
+++ b/MasterPassword/Java/masterpassword-algorithm/src/main/java/com/lyndir/masterpassword/MasterKey.java
@@ -77,15 +77,6 @@ public class MasterKey {
return idForBytes( masterKey );
}
- private byte[] getSubKey(final int subkeyLength) {
-
- Preconditions.checkState( valid );
- byte[] subkey = new byte[Math.min( subkeyLength, masterKey.length )];
- System.arraycopy( masterKey, 0, subkey, 0, subkey.length );
-
- return subkey;
- }
-
public String encode(final String siteName, final MPSiteType siteType, int siteCounter, final MPSiteVariant siteVariant,
@Nullable final String siteContext) {
Preconditions.checkState( valid );
diff --git a/MasterPassword/Java/masterpassword-android/pom.xml b/MasterPassword/Java/masterpassword-android/pom.xml
index 2e5f30ec..075a4d80 100644
--- a/MasterPassword/Java/masterpassword-android/pom.xml
+++ b/MasterPassword/Java/masterpassword-android/pom.xml
@@ -114,11 +114,10 @@
com.lambdaworks
- libscrypt
- 1.4.0
- so
- android
- runtime
+ scrypt
+ 1.4.0-android
+ jar
+ native
diff --git a/MasterPassword/Java/masterpassword-android/res/layout/activity_emergency.xml b/MasterPassword/Java/masterpassword-android/res/layout/activity_emergency.xml
index e04df047..19626f92 100644
--- a/MasterPassword/Java/masterpassword-android/res/layout/activity_emergency.xml
+++ b/MasterPassword/Java/masterpassword-android/res/layout/activity_emergency.xml
@@ -12,64 +12,61 @@
android:gravity="center">
-
-
-
-
-
+
+
+ android:layout_width="300dp"
+ android:layout_height="wrap_content"
+ android:gravity="center" />
-
+ android:layout_width="300dp"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:inputType="text|textNoSuggestions"
+ android:textColor="#FFFFFF"
+ android:textSize="26sp"
+ android:text="1" />
+
+
+
+
diff --git a/MasterPassword/Java/masterpassword-android/res/values/strings.xml b/MasterPassword/Java/masterpassword-android/res/values/strings.xml
index 99ce70fa..2b7160f2 100644
--- a/MasterPassword/Java/masterpassword-android/res/values/strings.xml
+++ b/MasterPassword/Java/masterpassword-android/res/values/strings.xml
@@ -2,8 +2,9 @@
Master Password
User Avatar
- Site Name
- Your Name
- Your Master Password
+ Remember Password
+ Site Name
+ Your Name
+ Your Master Password
diff --git a/MasterPassword/Java/masterpassword-android/src/main/java/com/lyndir/masterpassword/EmergencyActivity.java b/MasterPassword/Java/masterpassword-android/src/main/java/com/lyndir/masterpassword/EmergencyActivity.java
index 6cdd2f58..7da1ace1 100644
--- a/MasterPassword/Java/masterpassword-android/src/main/java/com/lyndir/masterpassword/EmergencyActivity.java
+++ b/MasterPassword/Java/masterpassword-android/src/main/java/com/lyndir/masterpassword/EmergencyActivity.java
@@ -9,12 +9,14 @@ import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
+import android.view.WindowManager;
import android.widget.*;
import butterknife.ButterKnife;
import butterknife.InjectView;
import com.google.common.base.Throwables;
import com.google.common.util.concurrent.*;
import com.lyndir.lhunath.opal.system.logging.Logger;
+import com.lyndir.lhunath.opal.system.util.ConversionUtils;
import java.util.concurrent.*;
@@ -55,11 +57,14 @@ public class EmergencyActivity extends Activity {
Spinner typeField;
@InjectView(R.id.counterField)
- NumberPicker counterField;
+ EditText counterField;
@InjectView(R.id.sitePasswordField)
TextView sitePasswordField;
+ @InjectView(R.id.rememberPasswordField)
+ CheckBox rememberPasswordField;
+
private int hc_userName;
private int hc_masterPassword;
@@ -68,6 +73,7 @@ public class EmergencyActivity extends Activity {
super.onCreate( savedInstanceState );
Res.init( getResources() );
+ getWindow().setFlags( WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE );
setContentView( R.layout.activity_emergency );
ButterKnife.inject( this );
@@ -75,23 +81,26 @@ public class EmergencyActivity extends Activity {
masterPasswordField.setOnFocusChangeListener( updateMasterKey );
siteNameField.addTextChangedListener( updateSitePassword );
typeField.setOnItemSelectedListener( updateSitePassword );
- counterField.setOnValueChangedListener( updateSitePassword );
+ counterField.addTextChangedListener( updateSitePassword );
userNameField.setTypeface( Res.exo_Thin );
userNameField.setPaintFlags( userNameField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
masterPasswordField.setTypeface( Res.sourceCodePro_ExtraLight );
- masterPasswordField.setPaintFlags( userNameField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
+ masterPasswordField.setPaintFlags( masterPasswordField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
siteNameField.setTypeface( Res.exo_Regular );
- siteNameField.setPaintFlags( userNameField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
+ siteNameField.setPaintFlags( siteNameField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
sitePasswordField.setTypeface( Res.sourceCodePro_Black );
- sitePasswordField.setPaintFlags( userNameField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
+ sitePasswordField.setPaintFlags( sitePasswordField.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG );
typeField.setAdapter( new ArrayAdapter<>( this, R.layout.type_item, MPSiteType.forClass( MPSiteTypeClass.Generated ) ) );
typeField.setSelection( MPSiteType.GeneratedLong.ordinal() );
- counterField.setMinValue( 1 );
- counterField.setMaxValue( Integer.MAX_VALUE );
- counterField.setWrapSelectorWheel( false );
+ rememberPasswordField.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(final CompoundButton buttonView, final boolean isChecked) {
+ getPreferences( MODE_PRIVATE ).edit().putBoolean( "rememberPassword", isChecked ).apply();
+ }
+ } );
}
@Override
@@ -99,25 +108,32 @@ public class EmergencyActivity extends Activity {
super.onResume();
userNameField.setText( getPreferences( MODE_PRIVATE ).getString( "userName", "" ) );
+ rememberPasswordField.setSelected( isRememberPasswordEnabled() );
masterPasswordField.requestFocus();
}
@Override
protected void onPause() {
- synchronized (this) {
- hc_userName = hc_masterPassword = 0;
- if (masterKeyFuture != null) {
- masterKeyFuture.cancel( true );
- masterKeyFuture = null;
+ if (!isRememberPasswordEnabled()) {
+ synchronized (this) {
+ hc_userName = hc_masterPassword = 0;
+ if (masterKeyFuture != null) {
+ masterKeyFuture.cancel( true );
+ masterKeyFuture = null;
+ }
+
+ sitePasswordField.setText( "" );
+ progressView.setVisibility( View.INVISIBLE );
}
}
- sitePasswordField.setText( "" );
- progressView.setVisibility( View.INVISIBLE );
-
super.onPause();
}
+ private boolean isRememberPasswordEnabled() {
+ return getPreferences( MODE_PRIVATE ).getBoolean( "rememberPassword", false );
+ }
+
private synchronized void updateMasterKey() {
final String userName = userNameField.getText().toString();
final String masterPassword = masterPasswordField.getText().toString();
@@ -126,9 +142,7 @@ public class EmergencyActivity extends Activity {
hc_userName = userName.hashCode();
hc_masterPassword = masterPassword.hashCode();
- SharedPreferences.Editor pref = getPreferences( MODE_PRIVATE ).edit();
- pref.putString( "userName", userName );
- pref.apply();
+ getPreferences( MODE_PRIVATE ).edit().putString( "userName", userName ).apply();
if (masterKeyFuture != null)
masterKeyFuture.cancel( true );
@@ -170,7 +184,7 @@ public class EmergencyActivity extends Activity {
private void updateSitePassword() {
final String siteName = siteNameField.getText().toString();
final MPSiteType type = (MPSiteType) typeField.getSelectedItem();
- final int counter = counterField.getValue();
+ final int counter = ConversionUtils.toIntegerNN( counterField.getText() );
if (masterKeyFuture == null || siteName.isEmpty() || type == null) {
sitePasswordField.setText( "" );
@@ -220,13 +234,13 @@ public class EmergencyActivity extends Activity {
ClipDescription description = new ClipDescription( strf( "Password for %s", siteNameField.getText() ),
new String[]{ ClipDescription.MIMETYPE_TEXT_PLAIN } );
- ((ClipboardManager) getSystemService( CLIPBOARD_SERVICE )).setPrimaryClip(
- new ClipData( description, new ClipData.Item( sitePassword ) ) );
+ ClipData clipData = new ClipData( description, new ClipData.Item( sitePassword ) );
+ ((ClipboardManager) getSystemService( CLIPBOARD_SERVICE )).setPrimaryClip( clipData );
- Intent startMain = new Intent(Intent.ACTION_MAIN);
- startMain.addCategory(Intent.CATEGORY_HOME);
- startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(startMain);
+ Intent startMain = new Intent( Intent.ACTION_MAIN );
+ startMain.addCategory( Intent.CATEGORY_HOME );
+ startMain.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
+ startActivity( startMain );
}
private abstract class ValueChangedListener
diff --git a/MasterPassword/Java/pom.xml b/MasterPassword/Java/pom.xml
index 3a5e7fb6..31a906f3 100644
--- a/MasterPassword/Java/pom.xml
+++ b/MasterPassword/Java/pom.xml
@@ -7,7 +7,7 @@
com.lyndir.lhunath
lyndir
- 1.18
+ 1.20
Master Password