Statistics
| Branch: | Revision:

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
}