aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/PasswordEntry.java
diff options
context:
space:
mode:
authorFelix Bechstein <f@ub0r.de>2017-07-22 12:09:34 +0200
committerMohamed Zenadi <zeapo@users.noreply.github.com>2017-07-22 12:09:34 +0200
commit5cba6c62d7b4628dfaf482dd883e333f93d323d4 (patch)
treeb28df0db4ca187df0cabc575bbd89c009f69e127 /app/src/main/java/com/zeapo/pwdstore/PasswordEntry.java
parent6ce31056c987b8fd73513d5b4eebc8d0d763a7a2 (diff)
downloadHardenedPass-5cba6c62d7b4628dfaf482dd883e333f93d323d4.tar.gz
HardenedPass-5cba6c62d7b4628dfaf482dd883e333f93d323d4.zip
Parse username from password entry, refs #192 (#318)
This is a first step of letting APS handle usernames from password entries. It shows the username in PgpHandler and allows to copy it to the clipboard.
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/PasswordEntry.java')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/PasswordEntry.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordEntry.java b/app/src/main/java/com/zeapo/pwdstore/PasswordEntry.java
new file mode 100644
index 00000000..d4d3fe81
--- /dev/null
+++ b/app/src/main/java/com/zeapo/pwdstore/PasswordEntry.java
@@ -0,0 +1,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;
+ }
+}