Statistics
| Branch: | Revision:

root / src / com / rackspacecloud / android / PasswordManager.java @ 038ac9a4

History | View | Annotate | Download (2.1 kB)

1
package com.rackspacecloud.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
}