From 7f8a36e32e230c6991cec9036e40e70fd5356c1c Mon Sep 17 00:00:00 2001 From: Maarten Billemont Date: Sat, 20 Feb 2016 18:50:44 -0500 Subject: [PATCH] Added ability to switch from native to java-only KDF. --- .../com/lyndir/masterpassword/MasterKey.java | 30 ++- .../lyndir/masterpassword/MasterKeyV0.java | 9 +- .../lyndir/masterpassword/MasterKeyV3.java | 15 +- .../AndroidManifest.xml | 4 +- .../res/drawable-mdpi/icon_gears.png | Bin 0 -> 2372 bytes .../res/drawable-mdpi/icon_key.png | Bin 0 -> 1672 bytes .../res/drawable-mdpi/icon_plus.png | Bin 0 -> 1994 bytes .../res/drawable-mdpi/identity.png | Bin 0 -> 3744 bytes .../res/drawable-mdpi/img_identity.png | Bin 0 -> 5009 bytes .../res/drawable-mdpi/img_key.png | Bin 0 -> 4059 bytes .../res/drawable-mdpi/img_stats.png | Bin 0 -> 4982 bytes .../res/drawable-xhdpi/icon_gears.png | Bin 0 -> 4113 bytes .../res/drawable-xhdpi/icon_key.png | Bin 0 -> 2532 bytes .../res/drawable-xhdpi/icon_plus.png | Bin 0 -> 3374 bytes .../res/drawable-xhdpi/img_identity.png | Bin 0 -> 13428 bytes .../res/drawable-xhdpi/img_key.png | Bin 0 -> 10800 bytes .../res/drawable-xhdpi/img_stats.png | Bin 0 -> 12792 bytes .../res/drawable/divider.png | Bin 0 -> 697 bytes .../res/layout/activity_emergency.xml | 183 ++++++++++++++---- .../res/layout/activity_test.xml | 25 ++- .../res/values/strings.xml | 9 +- .../masterpassword/EmergencyActivity.java | 36 ++-- .../lyndir/masterpassword/TestActivity.java | 112 ++++++----- 23 files changed, 295 insertions(+), 128 deletions(-) create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-mdpi/icon_gears.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-mdpi/icon_key.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-mdpi/icon_plus.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-mdpi/identity.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-mdpi/img_identity.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-mdpi/img_key.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-mdpi/img_stats.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/icon_gears.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/icon_key.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/icon_plus.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/img_identity.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/img_key.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/img_stats.png create mode 100644 MasterPassword/Java/masterpassword-android/res/drawable/divider.png 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 f4faaf43..3d086aec 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 @@ -16,10 +16,12 @@ import org.jetbrains.annotations.NotNull; public abstract class MasterKey { @SuppressWarnings("UnusedDeclaration") - private static final Logger logger = Logger.get( MasterKey.class ); + private static final Logger logger = Logger.get( MasterKey.class ); + private static boolean allowNativeByDefault = true; @Nonnull private final String fullName; + private boolean allowNative = allowNativeByDefault; @Nullable private byte[] masterKey; @@ -46,6 +48,23 @@ public abstract class MasterKey { throw new UnsupportedOperationException( "Unsupported version: " + version ); } + public static boolean isAllowNativeByDefault() { + return allowNativeByDefault; + } + + /** + * Native libraries are useful for speeding up the performance of cryptographical functions. + * Sometimes, however, we may prefer to use Java-only code. + * For instance, for auditability / trust or because the native code doesn't work on our CPU/platform. + *

+ * This setter affects the default setting for any newly created {@link MasterKey}s. + * + * @param allowNative false to disallow the use of native libraries. + */ + public static void setAllowNativeByDefault(final boolean allowNative) { + allowNativeByDefault = allowNative; + } + protected MasterKey(@NotNull final String fullName) { this.fullName = fullName; @@ -63,6 +82,15 @@ public abstract class MasterKey { return fullName; } + public boolean isAllowNative() { + return allowNative; + } + + public MasterKey setAllowNative(final boolean allowNative) { + this.allowNative = allowNative; + return this; + } + @Nonnull protected byte[] getKey() { 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 4ece61c3..b84872ab 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 @@ -65,8 +65,15 @@ public class MasterKeyV0 extends MasterKey { mpBytesBuf.get( mpBytes, 0, mpBytes.length ); Arrays.fill( mpBytesBuf.array(), (byte) 0 ); + return scrypt( masterKeySalt, mpBytes ); + } + + protected byte[] scrypt(final byte[] masterKeySalt, final byte[] mpBytes) { try { - return SCrypt.scrypt( mpBytes, masterKeySalt, MP_N, MP_r, MP_p, MP_dkLen ); + if (isAllowNative()) + return SCrypt.scrypt( mpBytes, masterKeySalt, MP_N, MP_r, MP_p, MP_dkLen ); + else + return SCrypt.scryptJ( mpBytes, masterKeySalt, MP_N, MP_r, MP_p, MP_dkLen ); } catch (GeneralSecurityException e) { logger.bug( e ); 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 db8d87d5..bc620a5d 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 @@ -14,7 +14,7 @@ import javax.annotation.Nullable; /** * bugs: * - no known issues. - * + * * @author lhunath, 2014-08-30 */ public class MasterKeyV3 extends MasterKeyV2 { @@ -46,17 +46,8 @@ public class MasterKeyV3 extends MasterKeyV2 { 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 ); + Arrays.fill( mpBytesBuf.array(), (byte) 0 ); - try { - return SCrypt.scrypt( mpBytes, masterKeySalt, MP_N, MP_r, MP_p, MP_dkLen ); - } - catch (GeneralSecurityException e) { - logger.bug( e ); - return null; - } - finally { - Arrays.fill( mpBytes, (byte) 0 ); - } + return scrypt( masterKeySalt, mpBytes ); } } diff --git a/MasterPassword/Java/masterpassword-android/AndroidManifest.xml b/MasterPassword/Java/masterpassword-android/AndroidManifest.xml index 2f9c1f5f..a3947036 100644 --- a/MasterPassword/Java/masterpassword-android/AndroidManifest.xml +++ b/MasterPassword/Java/masterpassword-android/AndroidManifest.xml @@ -12,13 +12,13 @@ android:icon="@drawable/icon" android:label="@string/app_name" android:allowBackup="true"> - + - + diff --git a/MasterPassword/Java/masterpassword-android/res/drawable-mdpi/icon_gears.png b/MasterPassword/Java/masterpassword-android/res/drawable-mdpi/icon_gears.png new file mode 100644 index 0000000000000000000000000000000000000000..c939369e4dd94e8e81e796557d23304cb1a2679a GIT binary patch literal 2372 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 literal 0 HcmV?d00001 diff --git a/MasterPassword/Java/masterpassword-android/res/drawable-mdpi/icon_plus.png b/MasterPassword/Java/masterpassword-android/res/drawable-mdpi/icon_plus.png new file mode 100644 index 0000000000000000000000000000000000000000..53fec014bcce360d8d6f0e2faea51d26e0683545 GIT binary patch literal 1994 zcmbVNeNYo;9*)3)MZQ|5s5IAZgRNeX>~6j`*$Nm)0$dGx2~-4YiOIsInC!Y)NPq(o zi9oS>Ud!Mpq634-aY}nqK;ih3s^=-CLIGo~6crFFUs7y|oVP*o?q;0+aXYiS@4N5w zd!FCtY~iNp2v2u^cNUA~85Jp0F>k5W3(A5T8WMm z8Un1dpbUWlqcwoVu)}CVEy0`xUX)ooK7$-!0Yaw)bEFPIAWpdn2q!2E5OSd)EhK^f z5zK}80t7+U0z3$YK!^vzydW4s`8*VYfM*wnQKNK8s7j`Irp4@nIXF#|Ch*V08G4OyzV3L;Gr%Sv$avT9&PMbdPiYwASn5ekXB6M8uJy zsm3Z*^_{#55rPD@JG*fY&jIhgG+27*(CDR+hs*w$sMUs7_T2lfx3~Ae`Sa%+>~?#t z^8(9qPn*r>hUXyrjW;F)N`7v&hw1vnqg_4Mu1)Wr`M{^txB0J9yHgf9SS~G!5O&r( zd3boRyOPedQ)jQ#b~W7`-&pzG>d}`QUGiP*La%%NSy|*a$G>u}ec(FK)YvHA`igVF zG0@w~E1UD>87IGikQ%u{`KVn|-#2ib>iW7{EJp{OYVEl*Ua`#%?8eorezgW;8SgZQ0PSa zjp&>cckhO_@~7{Qb@kq~Pk(tAQ?i@e(RICCIeNHxIyVC`}xtj-B zwsU>&hyLa%q=?jYBL45Kid|b4`P1xdnjk(efi10&7x;OL5o7jvL(|eD=Q1<4C1gMD z-1pYzSZGCaAO70dn`Xqemq|@cO-<9SanYSiKhFI)_eo(fzM+zTeQ0K8MpCmUG9N#K z7IZW90<+2n(1I1?eZ#}UEoUcoE!F;szwg`iKzGWcHG3V!qBt%4t8P{_qV5+rmaY3K zd$K?OY;ojnA&^d%$fip?2Ug z{#H4UI{w-3D`oE#&+%R?lo)vZV^(|S3PUImp zlmCmDecfi41k`@~)ipm{UE%GuRWNtk%}l>p{gO1pD6Fk-X!vl}5?WT;Y%=dmGlra- z87*|My1AY1WB-h7{+rF`%B`2PZc9Lmn*0M9b-VoZ(f-na_m`I(bv@}#9dfp+l}|25 p-wZinpN$>4F?N0a>(O1y2SHu3yw0a8Z_M!vj*>^qPKPDt{u^f`He~<+ literal 0 HcmV?d00001 diff --git a/MasterPassword/Java/masterpassword-android/res/drawable-mdpi/identity.png b/MasterPassword/Java/masterpassword-android/res/drawable-mdpi/identity.png new file mode 100644 index 0000000000000000000000000000000000000000..b166f8f97b405b115922c82d0675b8235cb7ee78 GIT binary patch literal 3744 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 bIiP<6y2TaJJFB}D00000NkvXXu0mjf)^E}g literal 0 HcmV?d00001 diff --git a/MasterPassword/Java/masterpassword-android/res/drawable-mdpi/img_key.png b/MasterPassword/Java/masterpassword-android/res/drawable-mdpi/img_key.png new file mode 100644 index 0000000000000000000000000000000000000000..3156342dfc3ab8c0ef5640203b5a8a1890230e25 GIT binary patch literal 4059 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 A1poj5 literal 0 HcmV?d00001 diff --git a/MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/icon_gears.png b/MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/icon_gears.png new file mode 100644 index 0000000000000000000000000000000000000000..e4cbaf04c880af10c9dabec7548998d07d64fbd3 GIT binary patch literal 4113 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 literal 0 HcmV?d00001 diff --git a/MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/icon_key.png b/MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/icon_key.png new file mode 100644 index 0000000000000000000000000000000000000000..af6c44cdaf99ad95a7068a8e609a71f94de3c813 GIT binary patch literal 2532 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 K(~Ir=6aEb<;}*IA literal 0 HcmV?d00001 diff --git a/MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/icon_plus.png b/MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/icon_plus.png new file mode 100644 index 0000000000000000000000000000000000000000..cffdd7d90363690b93a1ff1ac1c15c9a2923cd05 GIT binary patch literal 3374 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 Km8tw-67+wX^QVgd literal 0 HcmV?d00001 diff --git a/MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/img_key.png b/MasterPassword/Java/masterpassword-android/res/drawable-xhdpi/img_key.png new file mode 100644 index 0000000000000000000000000000000000000000..336ddd36a814d5fa8f9395ba7a907a989e6cc0b0 GIT binary patch literal 10800 zcmV-0D$mu4P)003bK1^@s6QG2R900004XF*Lt006O% z3;baP001fHNklBOlb=(U8mD__W6B3XWsAaGk5Mg z^UhX&h4&=qeV%*HbDpz(?{k)W?tQ0Bsk&+lR9m3h0x#7Ts5y!%UaqYDM^PQBMa{K9 zxlYZAP5NcN9Pv8x_4oJ3v}MaF@b%*n5IrP7Ztd;uUB7MHw#RP2{q{o&?vuAAEJsOR zbw{uTD(c*Elqc#p&`<|oYx?@vzkbfbg$vJ}I(6#V0$fumdg|F}G>Uw13#*ORlz4zW8#REoM6^H}v@Phr0)Uo3!m~}%Vp8@ZRE3TNoV8Mb* zG{mkHP--LKWWg*KfjFc*fUXF5671KIovfZ^q<>#ePtTnK;lmp?Y#=TIF%QNec~t`@ zz6A`7iPmhr1|QUbsy+AIb7yF{eXW3Zp2F)&z%u|7Rd|g-NPMY)iE4PR(eMgj5@<>Q zwAI7n<#~rCDt$XUJ3IgSt6%-oWMD24C$NXPnXa@|VB-3W4Vw0}oo_0bk-*u3S0y&2N75d7?{a z&6-s|mV#-R?Qd;u-SOAI{`KE?+;K;Xbo2s5fo~8fv6Kos*xufL^KX9ho2MjK1>sm4 zd>m;EnsKN|Nv$UjJ^)yE{`u$6S+Qcpb?Wfr4KysCJzvKq`YYSJaUH(7JW&ZYfx#M2k4?@>CTJZh?vDXzR#> zk0H12$}6v2a@=vp0lrx!z%lG%@e%+v7o7jz_rCYC6Hh$xn88Jx*eeayeSiP^-yiw; z&wqZuz}5x$0AmEC%C+(7r=Py*Z-4t+r*g*{;tW7&)lF~<7(8QD>+}Ynhg^g2B&~9< z6WFHN+Lh>30igavANtTmuX@$1P8M%HV=YI;=``H-2!#K8*IjpQ0))XQFsiIutUq0^(U--hcn&%xa3uHZ6 zIRt`?9}iQYdJ2meEo@FX;e->8z5o9EH<$8CWk6nj*0IMPyJGI#xob9U+SIN5Da?>E zj;CDJw1-<@yZ|)#plQA*T6fuHmn~beWXXRBY)$eEwE(bQLtp)c7hc%>@sEG}Dy@VE zEifhubcd@plrtbjYnCouI$vd3{qKMOyJi3W{oRgJD(W(0&YU^RG;BYvRk9Z*gjc~h zv{}a$GFAXa;0*$w_W0(?!rdT1%>;OW4)Ecxz4qGEHQ&2PD`C>4t(0+llO6z0#lP{5Z@fxRH&*1qclFg* zuX@+J-t~$~z!yOmdFf9shDF}-(0uqvfD{O81ww}74SVIjHybOF=bga~h_niV?U1`|G`ZZ|6zeIDs%K=}x zj0~7OMc!df%e7TSo_L2>%3G)9H4JxtBp=f)dvY!7vcb&Pxv85>&`6b0%c_}~E_7O-BM%(Gtk%2&Qm;5)Wt z{nCO%bFAs#`ObIVE{cU5;tZ~lC<&1<;4Dvg5$N(^`RjZ-uI;q)-TjGAeBvenEddZ9 zDm_n8{8%p@esHp*g_Z@6>KNnpX#@YqdRERON;~4COyn&yYC4)BI0BG#_VrrzzEK_2 z4EW@|=xF%#r$2p#=7lr!r80mFsz{YS0~Bnig9FC7^iU8?&t$v&4&6_v< zU;p~o7Ke$Z8&&$b>CzFg9PhCI?=(H`r0gz#scw`z)va{hsHw+_V~#oIDQ(Pie9bPk zL+K*&jvqCx6o3(Y6x7yls#cLp=Fgvhr9hHxwJ`K*#k>0Q%P)UfzC@~MAy6ESym?dW z;JRGAWlb%YPwQ)_foSSDJ(ZcS`5=oDo`|HnOD}b%Y^naDsnfVV+B|h~nIrEymD+=? zsO8!>eRAv8t!&5_0j?-aqLsVR0&o!clud&s?{8Is=L>+D<_w8?g`>opOo#E0L0Dub@LFO>am^y8w#6{4VhvJIj2`9c1Z&@ggCnb6;_dN5z z(j1UZ$T~tgkLLMcsv|$t1Nz{D54Px_?k-(3-=%Jes*l#)a?35h-MMoo!*M#mA?gi! zw}&aJDt46u5a1brEGT%2(Qw^$*WI9wIVpng(n~Kr`GX()-~}!LpvZdz(BLygE;=

boTy|z~t$vj^w@MH@Qtly_T^{GqrCL3~t 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 KMNUMnLSTZ8Qc0cw literal 0 HcmV?d00001 diff --git a/MasterPassword/Java/masterpassword-android/res/drawable/divider.png b/MasterPassword/Java/masterpassword-android/res/drawable/divider.png new file mode 100644 index 0000000000000000000000000000000000000000..35cf2a2381bb375755fc6294733d7ae9c438c635 GIT binary patch literal 697 zcmV;q0!ICbP)2#8q*d9p9 zk|o(ra%x8K5X9n76eNN&?6lKPJAHuU+b+64+f9vDElcfuo}#6^&b9E_l5{2a)^*m` zwl-hZKsPG3u6wW7|3v z+-?#-V~~D#&!<_$Uje)beh8iguYJH{oCH+>C#AlrDpds!0jU(60#Y@=I);_94q>^^ z*=4H~tAypIi4qwo;x!vym07W@7F*$%nK-hh zQkIo+O}SPLue~Fo;qZ$~%C9Mdd`Jj~!w`N>D28LgABPWyraAa20gi6t!SKuQ#Qw^O`T32(u<~f!IKE>8>Wir)wg-xrt0HH=4-UK<22mmO4XCYTB`h z^wI1dc^jqz6?aQ^$z$$m%+#8bI8Q9o*^^bcuW^ui%Nvo$yO@3xc_Cl>uG#vs`Pko? fop#!3r)~NNXTg4Dv0-oz00000NkvXXu0mjfQ6e>J literal 0 HcmV?d00001 diff --git a/MasterPassword/Java/masterpassword-android/res/layout/activity_emergency.xml b/MasterPassword/Java/masterpassword-android/res/layout/activity_emergency.xml index 2d8c6d95..4d578ce4 100644 --- a/MasterPassword/Java/masterpassword-android/res/layout/activity_emergency.xml +++ b/MasterPassword/Java/masterpassword-android/res/layout/activity_emergency.xml @@ -1,5 +1,6 @@ + + + android:textSize="16sp" /> @@ -46,16 +54,24 @@ android:hint="@string/masterPassword_hint" android:gravity="center" android:textColor="#FFFFFF" - android:textSize="18sp" /> + android:textSize="16sp" /> + + + android:textSize="16sp" /> @@ -115,54 +130,136 @@ android:id="@+id/maskPasswordField" android:layout_width="match_parent" android:layout_height="wrap_content" - android:textSize="14sp" + android:textSize="12sp" android:textColor="@android:color/tertiary_text_dark" android:text="@string/maskPassword" /> - + android:layout_marginTop="20dp" + android:layout_marginBottom="8dp" + android:importantForAccessibility="no" + android:src="@drawable/divider" /> - + style="?android:buttonBarStyle" + android:orientation="horizontal" + android:gravity="center"> - + - +