Revision 72d577fb
app/res/values/strings.xml | ||
---|---|---|
32 | 32 |
<string name="pass_err_upper">Your passphrase did not contain any uppercase letters</string> |
33 | 33 |
<string name="pass_err_lower">Your passphrase did not contain any lowercase letters</string> |
34 | 34 |
<string name="pass_err_num">Your passphrase did not contain any numbers</string> |
35 |
<string name="pass_err">Error during passphrase change!</string> |
|
35 | 36 |
|
36 | 37 |
<string name="lock_screen_open">Open</string> |
37 | 38 |
<string name="title_activity_lock_screen">NoteCipher Locked</string> |
... | ... | |
59 | 60 |
<string name="use_lines_in_notes_summ">If enabled, empty lines will be displayed on all notes to resemble a notepad</string> |
60 | 61 |
<string name="vibrate_when_unlocked">Vibrate when unlocked</string> |
61 | 62 |
<string name="vibrate_when_unlocked_summ">If enabled, the device will vibrate every time NoteCipher is unlocked with a passphrase</string> |
63 |
<string name="change_passphrase">Change Passphrase</string> |
|
62 | 64 |
|
63 | 65 |
</resources> |
app/res/xml/settings.xml | ||
---|---|---|
5 | 5 |
<Preference |
6 | 6 |
android:key="cacheword_timeout" |
7 | 7 |
android:title="@string/change_timeout_prompt_title" /> |
8 |
<EditTextPreference |
|
9 |
android:key="encrypted_secrets" |
|
10 |
android:title="@string/change_passphrase" |
|
11 |
android:dialogTitle="@string/change_passphrase" /> |
|
8 | 12 |
<CheckBoxPreference |
9 | 13 |
android:key="use_lines_in_notes" |
10 | 14 |
android:title="@string/use_lines_in_notes" |
app/src/info/guardianproject/notepadbot/LockScreenActivity.java | ||
---|---|---|
31 | 31 |
public class LockScreenActivity extends SherlockActivity implements ICacheWordSubscriber { |
32 | 32 |
private static final String TAG = "LockScreenActivity"; |
33 | 33 |
|
34 |
private final static int MIN_PASS_LENGTH = 8; |
|
35 |
// private final static int MAX_PASS_ATTEMPTS = 3; |
|
36 |
// private final static int PASS_RETRY_WAIT_TIMEOUT = 30000; |
|
37 |
|
|
38 | 34 |
private EditText mEnterPassphrase; |
39 | 35 |
private EditText mNewPassphrase; |
40 | 36 |
private EditText mConfirmNewPassphrase; |
... | ... | |
119 | 115 |
} |
120 | 116 |
|
121 | 117 |
private boolean isPasswordValid() { |
122 |
return validatePassword(mNewPassphrase.getText().toString().toCharArray()); |
|
118 |
boolean valid = NConstants.validatePassword(mNewPassphrase.getText().toString().toCharArray()); |
|
119 |
if(!valid) |
|
120 |
mPasswordError = getString(R.string.pass_err_length); |
|
121 |
return valid; |
|
123 | 122 |
} |
124 | 123 |
|
125 | 124 |
private boolean isConfirmationFieldEmpty() { |
... | ... | |
233 | 232 |
}); |
234 | 233 |
} |
235 | 234 |
|
236 |
private boolean validatePassword(char[] pass) |
|
237 |
{ |
|
238 |
if (pass.length < MIN_PASS_LENGTH) { |
|
239 |
// should we support some user string message here? |
|
240 |
mPasswordError = getString(R.string.pass_err_length); |
|
241 |
return false; |
|
242 |
} |
|
243 |
return true; |
|
244 |
} |
|
245 |
|
|
246 | 235 |
public class TwoViewSlider { |
247 | 236 |
|
248 | 237 |
private boolean firstIsShown = true; |
app/src/info/guardianproject/notepadbot/NConstants.java | ||
---|---|---|
5 | 5 |
|
6 | 6 |
public static final String TAG = "NoteCipher"; |
7 | 7 |
public static final int MAX_STREAM_SIZE = 1000000; |
8 |
public static final int MIN_PASS_LENGTH = 8; |
|
9 |
// public final static int MAX_PASS_ATTEMPTS = 3; |
|
10 |
// public final static int PASS_RETRY_WAIT_TIMEOUT = 30000; |
|
11 |
|
|
12 |
/** |
|
13 |
* Checks if the password is valid based on it's length |
|
14 |
* @param pass |
|
15 |
* @return True if the password is a valid one, false otherwise |
|
16 |
*/ |
|
17 |
public static final boolean validatePassword(char[] pass) { |
|
18 |
if (pass.length < NConstants.MIN_PASS_LENGTH) { |
|
19 |
return false; |
|
20 |
} |
|
21 |
return true; |
|
22 |
} |
|
8 | 23 |
} |
app/src/info/guardianproject/notepadbot/Settings.java | ||
---|---|---|
1 | 1 |
package info.guardianproject.notepadbot; |
2 | 2 |
|
3 | 3 |
|
4 |
import java.io.IOException; |
|
5 |
import java.security.GeneralSecurityException; |
|
6 |
|
|
4 | 7 |
import net.simonvt.numberpicker.NumberPicker; |
5 | 8 |
import info.guardianproject.cacheword.CacheWordActivityHandler; |
6 | 9 |
import info.guardianproject.cacheword.Constants; |
7 | 10 |
import info.guardianproject.cacheword.ICacheWordSubscriber; |
11 |
import info.guardianproject.cacheword.PassphraseSecrets; |
|
8 | 12 |
|
9 | 13 |
import android.annotation.SuppressLint; |
10 | 14 |
import android.app.AlertDialog; |
... | ... | |
19 | 23 |
import android.preference.PreferenceManager; |
20 | 24 |
import android.support.v4.app.NavUtils; |
21 | 25 |
import android.util.Log; |
26 |
import android.widget.Toast; |
|
22 | 27 |
|
23 | 28 |
import com.actionbarsherlock.app.SherlockPreferenceActivity; |
24 | 29 |
import com.actionbarsherlock.view.MenuItem; |
... | ... | |
50 | 55 |
.setOnPreferenceClickListener(changeLockTimeoutListener); |
51 | 56 |
findPreference(Constants.SHARED_PREFS_VIBRATE) |
52 | 57 |
.setOnPreferenceChangeListener(vibrateChangeListener); |
58 |
findPreference(Constants.SHARED_PREFS_SECRETS) |
|
59 |
.setOnPreferenceChangeListener(passphraseChangeListener); |
|
60 |
|
|
53 | 61 |
} |
54 | 62 |
}) |
55 | 63 |
.commit(); |
... | ... | |
60 | 68 |
.setOnPreferenceClickListener(changeLockTimeoutListener); |
61 | 69 |
findPreference(Constants.SHARED_PREFS_VIBRATE) |
62 | 70 |
.setOnPreferenceChangeListener(vibrateChangeListener); |
71 |
findPreference(Constants.SHARED_PREFS_SECRETS) |
|
72 |
.setOnPreferenceChangeListener(passphraseChangeListener); |
|
63 | 73 |
} |
64 | 74 |
} |
65 | 75 |
|
... | ... | |
99 | 109 |
} |
100 | 110 |
}; |
101 | 111 |
|
112 |
private Preference.OnPreferenceChangeListener passphraseChangeListener = |
|
113 |
new OnPreferenceChangeListener(){ |
|
114 |
@Override |
|
115 |
public boolean onPreferenceChange(Preference pref, Object newValue) { |
|
116 |
try { |
|
117 |
char[] pass = ((String) newValue).toCharArray(); |
|
118 |
if (NConstants.validatePassword(pass)) { |
|
119 |
mCacheWord.changePassphrase((PassphraseSecrets) mCacheWord.getCachedSecrets(), pass); |
|
120 |
} else { |
|
121 |
Toast.makeText(getApplicationContext(), |
|
122 |
R.string.pass_err_length, Toast.LENGTH_SHORT).show(); |
|
123 |
} |
|
124 |
} catch (IOException e) { |
|
125 |
Toast.makeText(getApplicationContext(), |
|
126 |
R.string.pass_err, Toast.LENGTH_SHORT).show(); |
|
127 |
} |
|
128 |
return false; |
|
129 |
} |
|
130 |
}; |
|
131 |
|
|
102 | 132 |
public static final boolean getNoteLinesOption(Context context) { |
103 | 133 |
boolean defValue = context.getResources().getBoolean(R.bool.notecipher_uselines_default); |
104 | 134 |
return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(NConstants.SHARED_PREFS_NOTELINES, defValue); |
... | ... | |
175 | 205 |
startActivity(intent); |
176 | 206 |
finish(); |
177 | 207 |
} |
178 |
} |
|
208 |
} |
Also available in: Unified diff