From 8faf6b48dd5ce5d63a5a3e211b1af7d79548b3ce Mon Sep 17 00:00:00 2001 From: Maarten Billemont Date: Sat, 18 Apr 2015 14:48:27 -0400 Subject: [PATCH] Fixed UTF-8 issue, click on A4.4, add notification and expiry. [FIXED] A Java UTF-8 encoding issue. [FIXED] Android 4.4 wasn't triggering onClick on TextViews. [ADDED] A notification when the password is copied. [ADDED] Expire the password from the clipboard after 20 seconds. [UPDATED] -underscore variant of slf4j-android to make tags settable with setprops --- .../lyndir/masterpassword/MasterKeyV0.java | 7 ++- .../lyndir/masterpassword/MasterKeyV3.java | 8 +++- .../AndroidManifest.xml | 2 +- .../Java/masterpassword-android/pom.xml | 1 + .../res/layout/activity_emergency.xml | 2 +- .../masterpassword/EmergencyActivity.java | 48 +++++++++++++++---- 6 files changed, 53 insertions(+), 15 deletions(-) diff --git a/MasterPassword/Java/masterpassword-algorithm/src/main/java/com/lyndir/masterpassword/MasterKeyV0.java b/MasterPassword/Java/masterpassword-algorithm/src/main/java/com/lyndir/masterpassword/MasterKeyV0.java index c5671911..c1efe212 100644 --- a/MasterPassword/Java/masterpassword-algorithm/src/main/java/com/lyndir/masterpassword/MasterKeyV0.java +++ b/MasterPassword/Java/masterpassword-algorithm/src/main/java/com/lyndir/masterpassword/MasterKeyV0.java @@ -58,8 +58,11 @@ public class MasterKeyV0 extends MasterKey { logger.trc( "key scope: %s", mpKeyScope ); logger.trc( "masterKeySalt ID: %s", CodeUtils.encodeHex( idForBytes( masterKeySalt ) ) ); - CharBuffer mpChars = CharBuffer.wrap( masterPassword ); - byte[] mpBytes = MP_charset.encode( mpChars ).array(); + ByteBuffer mpBytesBuf = MP_charset.encode( CharBuffer.wrap( masterPassword ) ); + byte[] mpBytes = new byte[mpBytesBuf.remaining()]; + mpBytesBuf.get( mpBytes, 0, mpBytes.length ); + Arrays.fill( mpBytesBuf.array(), (byte) 0 ); + try { return SCrypt.scrypt( mpBytes, masterKeySalt, MP_N, MP_r, MP_p, MP_dkLen ); } diff --git a/MasterPassword/Java/masterpassword-algorithm/src/main/java/com/lyndir/masterpassword/MasterKeyV3.java b/MasterPassword/Java/masterpassword-algorithm/src/main/java/com/lyndir/masterpassword/MasterKeyV3.java index 7d593f1e..db8d87d5 100644 --- a/MasterPassword/Java/masterpassword-algorithm/src/main/java/com/lyndir/masterpassword/MasterKeyV3.java +++ b/MasterPassword/Java/masterpassword-algorithm/src/main/java/com/lyndir/masterpassword/MasterKeyV3.java @@ -4,6 +4,7 @@ import com.google.common.primitives.Bytes; import com.lambdaworks.crypto.SCrypt; import com.lyndir.lhunath.opal.system.CodeUtils; import com.lyndir.lhunath.opal.system.logging.Logger; +import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.security.GeneralSecurityException; import java.util.Arrays; @@ -42,8 +43,11 @@ public class MasterKeyV3 extends MasterKeyV2 { logger.trc( "key scope: %s", mpKeyScope ); logger.trc( "masterKeySalt ID: %s", CodeUtils.encodeHex( idForBytes( masterKeySalt ) ) ); - CharBuffer mpChars = CharBuffer.wrap( masterPassword ); - byte[] mpBytes = MP_charset.encode( mpChars ).array(); + ByteBuffer mpBytesBuf = MP_charset.encode( CharBuffer.wrap( masterPassword ) ); + byte[] mpBytes = new byte[mpBytesBuf.remaining()]; + mpBytesBuf.get( mpBytes, 0, mpBytes.length ); + Arrays.fill( mpBytesBuf.array(), (byte)0 ); + try { return SCrypt.scrypt( mpBytes, masterKeySalt, MP_N, MP_r, MP_p, MP_dkLen ); } diff --git a/MasterPassword/Java/masterpassword-android/AndroidManifest.xml b/MasterPassword/Java/masterpassword-android/AndroidManifest.xml index b77b5ff8..689f5f57 100644 --- a/MasterPassword/Java/masterpassword-android/AndroidManifest.xml +++ b/MasterPassword/Java/masterpassword-android/AndroidManifest.xml @@ -1,7 +1,7 @@ org.slf4j slf4j-android + 1.7.13-underscore