From b61b73685fe297434977534052ef55942773297d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Sch=C3=A4ttgen?= Date: Thu, 12 Sep 2019 00:19:11 +0200 Subject: [PATCH] Add WinAuth importer Fix WinAuthImporter --- .../aegis/importers/DatabaseImporter.java | 1 + .../aegis/importers/WinAuthImporter.java | 83 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 app/src/main/java/com/beemdevelopment/aegis/importers/WinAuthImporter.java diff --git a/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseImporter.java b/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseImporter.java index c0916c5e..84c065b8 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseImporter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/importers/DatabaseImporter.java @@ -38,6 +38,7 @@ public abstract class DatabaseImporter { _importers.put("FreeOTP+", FreeOtpPlusImporter.class); _importers.put("Google Authenticator", GoogleAuthImporter.class); _importers.put("Steam", SteamImporter.class); + _importers.put("WinAuth", WinAuthImporter.class); _appImporters = new LinkedHashMap<>(); _appImporters.put("Authy", AuthyImporter.class); diff --git a/app/src/main/java/com/beemdevelopment/aegis/importers/WinAuthImporter.java b/app/src/main/java/com/beemdevelopment/aegis/importers/WinAuthImporter.java new file mode 100644 index 00000000..3926b55c --- /dev/null +++ b/app/src/main/java/com/beemdevelopment/aegis/importers/WinAuthImporter.java @@ -0,0 +1,83 @@ +package com.beemdevelopment.aegis.importers; + +import android.content.Context; +import com.beemdevelopment.aegis.db.DatabaseEntry; +import com.beemdevelopment.aegis.otp.GoogleAuthInfo; +import com.beemdevelopment.aegis.otp.GoogleAuthInfoException; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; + +public class WinAuthImporter extends DatabaseImporter { + public WinAuthImporter(Context context) { + super(context); + } + + @Override + protected String getAppPkgName() { + return null; + } + + @Override + protected String getAppSubPath() { + return null; + } + + @Override + public WinAuthImporter.State read(FileReader reader) throws DatabaseImporterException { + ArrayList lines = new ArrayList<>(); + + try { + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(reader.getStream())); + String line; + + while ((line = bufferedReader.readLine()) != null) { + lines.add(line); + } + } catch (IOException e) { + throw new DatabaseImporterException(e); + } + + return new State(lines); + } + + public static class State extends DatabaseImporter.State { + private ArrayList _lines; + + private State(ArrayList lines) { + super(false); + _lines = lines; + } + + @Override + public Result convert() { + Result result = new Result(); + + for (String line : _lines) { + try { + DatabaseEntry entry = convertEntry(line); + result.addEntry(entry); + } catch (DatabaseImporterEntryException e) { + result.addError(e); + } + } + + return result; + } + + private static DatabaseEntry convertEntry(String line) throws DatabaseImporterEntryException { + try { + GoogleAuthInfo info = GoogleAuthInfo.parseUri(line); + DatabaseEntry databaseEntry = new DatabaseEntry(info); + databaseEntry.setIssuer(databaseEntry.getName()); + databaseEntry.setName("WinAuth"); + + return databaseEntry; + } catch (GoogleAuthInfoException e) { + throw new DatabaseImporterEntryException(e, line); + } + } + } +}