diff --git a/app/src/main/java/com/github/mondei1/offpass/CreateActivity.kt b/app/src/main/java/com/github/mondei1/offpass/CreateActivity.kt index adadcde..563cd24 100644 --- a/app/src/main/java/com/github/mondei1/offpass/CreateActivity.kt +++ b/app/src/main/java/com/github/mondei1/offpass/CreateActivity.kt @@ -8,6 +8,7 @@ import kotlinx.android.synthetic.main.activity_create.* class CreateActivity : AppCompatActivity() { private var fragment_title: TextInput? = null private var fragment_username: TextInput? = null + private var schema: QRSchema? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -19,6 +20,10 @@ class CreateActivity : AppCompatActivity() { .replace(R.id.username, fragment_username!!) .commit() + this.schema = QRSchema() + this.schema!!.decrypted_raw = "%JtuB4O9M42%Gitea|Nicolas|542superGoOD_pW&|klier.nicolas@protonmail.com|https://nicolasklier.de:3000|()What's your favorite series%Rick and morty|(2fa)otpauth://totp/OffPass%20Test?secret=d34gfkki5dkd5knifysrpgndd5xb2c7eddwki7ya4pvoisfa5c3ko5pv&issuer=Nicolas%20Klier" + this.schema!!.parse() + setSupportActionBar(findViewById(R.id.toolbar)) setContentView(R.layout.activity_create) diff --git a/app/src/main/java/com/github/mondei1/offpass/QRSchema.kt b/app/src/main/java/com/github/mondei1/offpass/QRSchema.kt new file mode 100644 index 0000000..638be08 --- /dev/null +++ b/app/src/main/java/com/github/mondei1/offpass/QRSchema.kt @@ -0,0 +1,84 @@ +package com.github.mondei1.offpass + +import android.util.Log +import java.lang.Error +import java.util.regex.Matcher +import java.util.regex.Pattern + +class QRSchema { + + var raw: String = "" + var decrypted_raw: String = "" + + // Parsed content + lateinit var session_key: String + lateinit var title: String + lateinit var username: String + lateinit var password: String + lateinit var email: String + lateinit var website_url: String + var custom: HashMap = HashMap() // All defined custom/optional fields + var question_awnser: HashMap = HashMap() // Used for security questions + + constructor() {} + + /** + * This function will take the already set raw content and tries to parse it. + * + * @return It will return `true` if the operation was successful and `false` if otherwise. + */ + fun parse(): Boolean { + if (decrypted_raw == "") { + throw Error("Tried to parse QR-Code schema but raw content must be first decrypted! " + + "Set raw content first and then use decrypt()") + } + + // First will be to split the string into it's parts + var fields: MutableList = this.decrypted_raw.split("|").toMutableList() + + for (i in 0 until fields.size) { + // First four items have to exist and are title, username, password, URL in this order. + if (i == 0) { + // Check if there is a session key + if (fields[0].startsWith("%")) { + fields[0] = fields[0].replace("%", "") + session_key = fields[0].substring(0, 9) // Get first 10 chars, which are the + // session key + this.title = fields[0].substring(10, fields[0].length) + } else { + this.title = fields[0] + } + + this.username = fields[1] + this.password = fields[2] + this.email = fields[3] + this.website_url = fields[4] + } + + // Here are optional/custom fields + if (i > 4) { + if (fields[i].startsWith("(")) { + var closingBracket = fields[i].indexOf(")") + var key = fields[i].substring(1, closingBracket) + var value = fields[i].substring(closingBracket+1, fields[i].length) + + // We got a security question/awnser + if (key == "") { + var qa = value.split("%") + question_awnser.put(qa[0], qa[1]); + } else { + custom.put(key, value) + } + Log.i("QR-Code schema", custom.toString()) + } else { + throw Error("Custom/optional field should start with an open bracket: " + + fields[i].toString()) + } + } + } + Log.i("QR-Code schema", "Found: $session_key, $title, $username, $password, $email, $website_url. ${custom.toString()} and ${question_awnser.toString()}") + return true + + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/baseline_shuffle_black_18.png b/app/src/main/res/drawable-hdpi/baseline_shuffle_black_18.png new file mode 100644 index 0000000..b4f76ac Binary files /dev/null and b/app/src/main/res/drawable-hdpi/baseline_shuffle_black_18.png differ diff --git a/app/src/main/res/drawable-hdpi/baseline_shuffle_black_24.png b/app/src/main/res/drawable-hdpi/baseline_shuffle_black_24.png new file mode 100644 index 0000000..a4d8bee Binary files /dev/null and b/app/src/main/res/drawable-hdpi/baseline_shuffle_black_24.png differ diff --git a/app/src/main/res/drawable-hdpi/baseline_shuffle_black_36.png b/app/src/main/res/drawable-hdpi/baseline_shuffle_black_36.png new file mode 100644 index 0000000..d7482b1 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/baseline_shuffle_black_36.png differ diff --git a/app/src/main/res/drawable-hdpi/baseline_shuffle_black_48.png b/app/src/main/res/drawable-hdpi/baseline_shuffle_black_48.png new file mode 100644 index 0000000..7201645 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/baseline_shuffle_black_48.png differ diff --git a/app/src/main/res/drawable-hdpi/baseline_visibility_black_18.png b/app/src/main/res/drawable-hdpi/baseline_visibility_black_18.png new file mode 100644 index 0000000..091cabb Binary files /dev/null and b/app/src/main/res/drawable-hdpi/baseline_visibility_black_18.png differ diff --git a/app/src/main/res/drawable-hdpi/baseline_visibility_black_24.png b/app/src/main/res/drawable-hdpi/baseline_visibility_black_24.png new file mode 100644 index 0000000..133618c Binary files /dev/null and b/app/src/main/res/drawable-hdpi/baseline_visibility_black_24.png differ diff --git a/app/src/main/res/drawable-hdpi/baseline_visibility_black_36.png b/app/src/main/res/drawable-hdpi/baseline_visibility_black_36.png new file mode 100644 index 0000000..2687675 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/baseline_visibility_black_36.png differ diff --git a/app/src/main/res/drawable-hdpi/baseline_visibility_black_48.png b/app/src/main/res/drawable-hdpi/baseline_visibility_black_48.png new file mode 100644 index 0000000..976001e Binary files /dev/null and b/app/src/main/res/drawable-hdpi/baseline_visibility_black_48.png differ diff --git a/app/src/main/res/drawable-mdpi/baseline_shuffle_black_18.png b/app/src/main/res/drawable-mdpi/baseline_shuffle_black_18.png new file mode 100644 index 0000000..162c72a Binary files /dev/null and b/app/src/main/res/drawable-mdpi/baseline_shuffle_black_18.png differ diff --git a/app/src/main/res/drawable-mdpi/baseline_shuffle_black_24.png b/app/src/main/res/drawable-mdpi/baseline_shuffle_black_24.png new file mode 100644 index 0000000..bba5fa5 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/baseline_shuffle_black_24.png differ diff --git a/app/src/main/res/drawable-mdpi/baseline_shuffle_black_36.png b/app/src/main/res/drawable-mdpi/baseline_shuffle_black_36.png new file mode 100644 index 0000000..a4d8bee Binary files /dev/null and b/app/src/main/res/drawable-mdpi/baseline_shuffle_black_36.png differ diff --git a/app/src/main/res/drawable-mdpi/baseline_shuffle_black_48.png b/app/src/main/res/drawable-mdpi/baseline_shuffle_black_48.png new file mode 100644 index 0000000..80498e4 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/baseline_shuffle_black_48.png differ diff --git a/app/src/main/res/drawable-mdpi/baseline_visibility_black_18.png b/app/src/main/res/drawable-mdpi/baseline_visibility_black_18.png new file mode 100644 index 0000000..ff070f4 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/baseline_visibility_black_18.png differ diff --git a/app/src/main/res/drawable-mdpi/baseline_visibility_black_24.png b/app/src/main/res/drawable-mdpi/baseline_visibility_black_24.png new file mode 100644 index 0000000..05fc754 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/baseline_visibility_black_24.png differ diff --git a/app/src/main/res/drawable-mdpi/baseline_visibility_black_36.png b/app/src/main/res/drawable-mdpi/baseline_visibility_black_36.png new file mode 100644 index 0000000..133618c Binary files /dev/null and b/app/src/main/res/drawable-mdpi/baseline_visibility_black_36.png differ diff --git a/app/src/main/res/drawable-mdpi/baseline_visibility_black_48.png b/app/src/main/res/drawable-mdpi/baseline_visibility_black_48.png new file mode 100644 index 0000000..a71ac92 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/baseline_visibility_black_48.png differ diff --git a/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_18.png b/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_18.png new file mode 100644 index 0000000..a4d8bee Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_18.png differ diff --git a/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_24.png b/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_24.png new file mode 100644 index 0000000..80498e4 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_24.png differ diff --git a/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_36.png b/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_36.png new file mode 100644 index 0000000..7201645 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_36.png differ diff --git a/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_48.png b/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_48.png new file mode 100644 index 0000000..5d6dc3f Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_48.png differ diff --git a/app/src/main/res/drawable-xhdpi/baseline_visibility_black_18.png b/app/src/main/res/drawable-xhdpi/baseline_visibility_black_18.png new file mode 100644 index 0000000..133618c Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/baseline_visibility_black_18.png differ diff --git a/app/src/main/res/drawable-xhdpi/baseline_visibility_black_24.png b/app/src/main/res/drawable-xhdpi/baseline_visibility_black_24.png new file mode 100644 index 0000000..a71ac92 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/baseline_visibility_black_24.png differ diff --git a/app/src/main/res/drawable-xhdpi/baseline_visibility_black_36.png b/app/src/main/res/drawable-xhdpi/baseline_visibility_black_36.png new file mode 100644 index 0000000..976001e Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/baseline_visibility_black_36.png differ diff --git a/app/src/main/res/drawable-xhdpi/baseline_visibility_black_48.png b/app/src/main/res/drawable-xhdpi/baseline_visibility_black_48.png new file mode 100644 index 0000000..8c736c7 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/baseline_visibility_black_48.png differ diff --git a/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_18.png b/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_18.png new file mode 100644 index 0000000..d7482b1 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_18.png differ diff --git a/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_24.png b/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_24.png new file mode 100644 index 0000000..7201645 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_24.png differ diff --git a/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_36.png b/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_36.png new file mode 100644 index 0000000..f2f293e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_36.png differ diff --git a/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_48.png b/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_48.png new file mode 100644 index 0000000..c615683 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_48.png differ diff --git a/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_18.png b/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_18.png new file mode 100644 index 0000000..2687675 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_18.png differ diff --git a/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_24.png b/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_24.png new file mode 100644 index 0000000..976001e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_24.png differ diff --git a/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_36.png b/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_36.png new file mode 100644 index 0000000..e01818e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_36.png differ diff --git a/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_48.png b/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_48.png new file mode 100644 index 0000000..874638e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_48.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_18.png b/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_18.png new file mode 100644 index 0000000..7201645 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_18.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_24.png b/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_24.png new file mode 100644 index 0000000..5d6dc3f Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_24.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_36.png b/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_36.png new file mode 100644 index 0000000..c615683 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_36.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_48.png b/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_48.png new file mode 100644 index 0000000..fe55185 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_48.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_18.png b/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_18.png new file mode 100644 index 0000000..976001e Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_18.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_24.png b/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_24.png new file mode 100644 index 0000000..8c736c7 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_24.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_36.png b/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_36.png new file mode 100644 index 0000000..874638e Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_36.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_48.png b/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_48.png new file mode 100644 index 0000000..1286445 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_48.png differ diff --git a/app/src/main/res/drawable/baseline_shuffle_24.xml b/app/src/main/res/drawable/baseline_shuffle_24.xml new file mode 100644 index 0000000..2469a90 --- /dev/null +++ b/app/src/main/res/drawable/baseline_shuffle_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_visibility_24.xml b/app/src/main/res/drawable/baseline_visibility_24.xml new file mode 100644 index 0000000..1618495 --- /dev/null +++ b/app/src/main/res/drawable/baseline_visibility_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/fragment_text_input.xml b/app/src/main/res/layout/fragment_text_input.xml index 5519ced..3541b0e 100644 --- a/app/src/main/res/layout/fragment_text_input.xml +++ b/app/src/main/res/layout/fragment_text_input.xml @@ -1,5 +1,6 @@ + + \ No newline at end of file