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