root / src / com / rackspace / cloud / android / PasswordManager.java @ 7dbfc514
History | View | Annotate | Download (2.1 kB)
1 |
package com.rackspace.cloud.android; |
---|---|
2 |
|
3 |
import java.security.MessageDigest; |
4 |
import java.security.NoSuchAlgorithmException; |
5 |
import java.util.Arrays; |
6 |
|
7 |
import android.content.SharedPreferences; |
8 |
|
9 |
public class PasswordManager { |
10 |
|
11 |
private SharedPreferences settings;
|
12 |
|
13 |
public PasswordManager(SharedPreferences sp) {
|
14 |
settings = sp; |
15 |
} |
16 |
|
17 |
/*
|
18 |
* checks the parameter string against the stored password
|
19 |
*/
|
20 |
public boolean verifyEnteredPassword(String password) { |
21 |
return Arrays.toString(getHash(password)).equals(getStoredPassword()); |
22 |
} |
23 |
|
24 |
/*
|
25 |
* return the hash of the password that is stored in shared preferences
|
26 |
*/
|
27 |
private String getStoredPassword() { |
28 |
return settings.getString(Preferences.PREF_KEY_PASSCODE_HASH, ""); |
29 |
} |
30 |
|
31 |
/*
|
32 |
* turns off password requirement
|
33 |
*/
|
34 |
public void turnOffPassword() { |
35 |
SharedPreferences.Editor editor = settings.edit(); |
36 |
editor.putString(Preferences.PREF_KEY_PASSCODE_HASH, ""); |
37 |
editor.putBoolean(Preferences.PREF_KEY_PASSWORD_LOCK, false); |
38 |
editor.commit(); |
39 |
} |
40 |
|
41 |
/*
|
42 |
* submits a password change into memory stores the sha-256 hash of the
|
43 |
* password
|
44 |
*/
|
45 |
private void storeNewPassword(String hashedPassword) { |
46 |
SharedPreferences.Editor editor = settings.edit(); |
47 |
editor.putString(Preferences.PREF_KEY_PASSCODE_HASH, hashedPassword);
|
48 |
editor.putBoolean(Preferences.PREF_KEY_PASSWORD_LOCK, true); |
49 |
editor.commit(); |
50 |
} |
51 |
|
52 |
/*
|
53 |
* changes the password for
|
54 |
*/
|
55 |
public void changePassword(String password) { |
56 |
storeNewPassword(Arrays.toString(getHash(password)));
|
57 |
} |
58 |
|
59 |
/*
|
60 |
* returns the sha-256 hash for a given string
|
61 |
*/
|
62 |
private byte[] getHash(String password) { |
63 |
MessageDigest m = null; |
64 |
try {
|
65 |
m = MessageDigest.getInstance("SHA-256"); |
66 |
m.update(password.getBytes()); |
67 |
} catch (NoSuchAlgorithmException e) { |
68 |
// TODO Auto-generated catch block
|
69 |
e.printStackTrace(); |
70 |
} catch (NullPointerException e) { |
71 |
// TODO Auto-generated catch block
|
72 |
e.printStackTrace(); |
73 |
} |
74 |
return m.digest();
|
75 |
} |
76 |
|
77 |
/*
|
78 |
* returns true if their is a password requirement
|
79 |
*/
|
80 |
public boolean hasPassword() { |
81 |
return settings.getBoolean(Preferences.PREF_KEY_PASSWORD_LOCK, false); |
82 |
} |
83 |
|
84 |
} |