From 107ca181873dfd7ae66a9bc0e8bb51314757197e Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Sun, 3 Dec 2017 18:06:35 +0100 Subject: [PATCH] Add a key importer for plain text aegis databases --- .../java/me/impy/aegis/crypto/KeyInfo.java | 2 +- .../java/me/impy/aegis/db/DatabaseEntry.java | 3 +- .../java/me/impy/aegis/ext/AegisImporter.java | 30 +++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/me/impy/aegis/ext/AegisImporter.java diff --git a/app/src/main/java/me/impy/aegis/crypto/KeyInfo.java b/app/src/main/java/me/impy/aegis/crypto/KeyInfo.java index bac02c8c..21fc5df5 100644 --- a/app/src/main/java/me/impy/aegis/crypto/KeyInfo.java +++ b/app/src/main/java/me/impy/aegis/crypto/KeyInfo.java @@ -16,7 +16,7 @@ public class KeyInfo implements Serializable { private int _digits = 6; private int _period = 30; - public String getURL() throws Exception { + public String getURL() { Uri.Builder builder = new Uri.Builder(); builder.scheme("otpauth"); builder.authority(_type); diff --git a/app/src/main/java/me/impy/aegis/db/DatabaseEntry.java b/app/src/main/java/me/impy/aegis/db/DatabaseEntry.java index 300eb00e..54dd3dd6 100644 --- a/app/src/main/java/me/impy/aegis/db/DatabaseEntry.java +++ b/app/src/main/java/me/impy/aegis/db/DatabaseEntry.java @@ -1,5 +1,6 @@ package me.impy.aegis.db; +import org.json.JSONException; import org.json.JSONObject; import java.io.Serializable; @@ -17,7 +18,7 @@ public class DatabaseEntry implements Serializable { _info = info; } - public JSONObject serialize() throws Exception { + public JSONObject serialize() throws JSONException { JSONObject obj = new JSONObject(); obj.put("id", _id); obj.put("name", _name); diff --git a/app/src/main/java/me/impy/aegis/ext/AegisImporter.java b/app/src/main/java/me/impy/aegis/ext/AegisImporter.java new file mode 100644 index 00000000..1a5d1a4a --- /dev/null +++ b/app/src/main/java/me/impy/aegis/ext/AegisImporter.java @@ -0,0 +1,30 @@ +package me.impy.aegis.ext; + +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.util.List; + +import me.impy.aegis.db.Database; +import me.impy.aegis.db.DatabaseEntry; + +public class AegisImporter extends KeyConverter { + + public AegisImporter(InputStream stream) { + super(stream); + } + + @Override + public List convert() throws Exception { + int read; + byte[] buffer = new byte[4096]; + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + while ((read = _stream.read(buffer, 0, buffer.length)) != -1) { + stream.write(buffer, 0, read); + } + + byte[] bytes = stream.toByteArray(); + Database db = new Database(); + db.deserialize(bytes); + return db.getKeys(); + } +}