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