blob: d4d3fe81078f32bacae74b56d2e12492c5e57d0e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
package com.zeapo.pwdstore;
import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
/**
* A single entry in password store.
*/
public class PasswordEntry {
private static final String[] USERNAME_FIELDS = new String[]{"login", "username"};
private final String extraContent;
private final String password;
private final String username;
public PasswordEntry(final ByteArrayOutputStream os) throws UnsupportedEncodingException {
this(os.toString("UTF-8"));
}
public PasswordEntry(final String decryptedContent) {
final String[] passContent = decryptedContent.split("\n", 2);
password = passContent[0];
extraContent = passContent.length > 1 ? passContent[1] : "";
username = findUsername();
}
public String getPassword() {
return password;
}
public String getExtraContent() {
return extraContent;
}
public String getUsername() {
return username;
}
public boolean hasExtraContent() {
return extraContent.length() != 0;
}
public boolean hasUsername() {
return username != null;
}
private String findUsername() {
final String[] extraLines = extraContent.split("\n");
for (String line : extraLines) {
for (String field : USERNAME_FIELDS) {
if (line.toLowerCase().startsWith(field + ":")) {
return line.split(": *", 2)[1];
}
}
}
return null;
}
}
|