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