diff options
| author | Felix Bechstein <f@ub0r.de> | 2017-07-22 12:09:34 +0200 |
|---|---|---|
| committer | Mohamed Zenadi <zeapo@users.noreply.github.com> | 2017-07-22 12:09:34 +0200 |
| commit | 5cba6c62d7b4628dfaf482dd883e333f93d323d4 (patch) | |
| tree | b28df0db4ca187df0cabc575bbd89c009f69e127 /app/src/main/java/com/zeapo/pwdstore/PasswordEntry.java | |
| parent | 6ce31056c987b8fd73513d5b4eebc8d0d763a7a2 (diff) | |
| download | HardenedPass-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.java | 59 |
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; + } +} |
