diff --git a/app/build.gradle b/app/build.gradle
index e53c02032..52915c4e8 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -107,9 +107,7 @@ dependencies {
implementation 'biz.source_code:base64coder:2010-12-19'
implementation 'com.google.code.gson:gson:2.8.4'
implementation 'com.google.guava:guava:23.0-android'
- // Icon pack, classic for all, material for libre and pro
+ // Icon pack
implementation project(path: ':icon-pack-classic')
implementation project(path: ':icon-pack-material')
- implementation project(path: ':magikeyboard')
- implementation project(path: ':keepass-model')
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 36986775d..158909098 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -132,7 +132,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/EntryRetrieverActivity.java b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/EntryRetrieverActivity.java
similarity index 94%
rename from magikeyboard/src/main/java/com/kunzisoft/magikeyboard/EntryRetrieverActivity.java
rename to app/src/main/java/com/kunzisoft/keepass/magikeyboard/EntryRetrieverActivity.java
index 8b2b1fc76..607316b5c 100644
--- a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/EntryRetrieverActivity.java
+++ b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/EntryRetrieverActivity.java
@@ -1,4 +1,4 @@
-package com.kunzisoft.magikeyboard;
+package com.kunzisoft.keepass.magikeyboard;
import android.app.Activity;
import android.content.Intent;
@@ -9,7 +9,8 @@ import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
-import com.kunzisoft.keepass_model.Entry;
+import com.kunzisoft.keepass.R;
+import com.kunzisoft.keepass.model.Entry;
public class EntryRetrieverActivity extends AppCompatActivity {
diff --git a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/KeyboardEntryNotificationService.java b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/KeyboardEntryNotificationService.java
similarity index 93%
rename from magikeyboard/src/main/java/com/kunzisoft/magikeyboard/KeyboardEntryNotificationService.java
rename to app/src/main/java/com/kunzisoft/keepass/magikeyboard/KeyboardEntryNotificationService.java
index e7f53f765..f31823c26 100644
--- a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/KeyboardEntryNotificationService.java
+++ b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/KeyboardEntryNotificationService.java
@@ -1,4 +1,4 @@
-package com.kunzisoft.magikeyboard;
+package com.kunzisoft.keepass.magikeyboard;
import android.app.NotificationChannel;
import android.app.NotificationManager;
@@ -12,11 +12,12 @@ import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
-import com.kunzisoft.magikeyboard.receiver.LockBroadcastReceiver;
-import com.kunzisoft.magikeyboard.receiver.NotificationDeleteBroadcastReceiver;
+import com.kunzisoft.keepass.R;
+import com.kunzisoft.keepass.magikeyboard.receiver.LockBroadcastReceiver;
+import com.kunzisoft.keepass.magikeyboard.receiver.NotificationDeleteBroadcastReceiver;
import static android.content.ContentValues.TAG;
-import static com.kunzisoft.magikeyboard.receiver.LockBroadcastReceiver.LOCK_ACTION;
+import static com.kunzisoft.keepass.magikeyboard.receiver.LockBroadcastReceiver.LOCK_ACTION;
public class KeyboardEntryNotificationService extends Service {
diff --git a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/MagikIME.java b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikIME.java
similarity index 96%
rename from magikeyboard/src/main/java/com/kunzisoft/magikeyboard/MagikIME.java
rename to app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikIME.java
index 8ae649b93..eaba92a89 100644
--- a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/MagikIME.java
+++ b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikIME.java
@@ -17,7 +17,7 @@
* along with KeePass DX. If not, see .
*
*/
-package com.kunzisoft.magikeyboard;
+package com.kunzisoft.keepass.magikeyboard;
import android.content.Context;
import android.content.Intent;
@@ -36,10 +36,11 @@ import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodManager;
-import com.kunzisoft.keepass_model.Entry;
-import com.kunzisoft.magikeyboard.receiver.LockBroadcastReceiver;
+import com.kunzisoft.keepass.R;
+import com.kunzisoft.keepass.magikeyboard.receiver.LockBroadcastReceiver;
+import com.kunzisoft.keepass.model.Entry;
-import static com.kunzisoft.magikeyboard.receiver.LockBroadcastReceiver.LOCK_ACTION;
+import static com.kunzisoft.keepass.magikeyboard.receiver.LockBroadcastReceiver.LOCK_ACTION;
public class MagikIME extends InputMethodService
implements KeyboardView.OnKeyboardActionListener {
diff --git a/app/src/main/java/com/kunzisoft/keepass/magikeyboard/Utility.java b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/Utility.java
new file mode 100644
index 000000000..5eecdae92
--- /dev/null
+++ b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/Utility.java
@@ -0,0 +1,6 @@
+package com.kunzisoft.keepass.magikeyboard;
+
+public class Utility {
+
+
+}
diff --git a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/receiver/LockBroadcastReceiver.java b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/receiver/LockBroadcastReceiver.java
similarity index 91%
rename from magikeyboard/src/main/java/com/kunzisoft/magikeyboard/receiver/LockBroadcastReceiver.java
rename to app/src/main/java/com/kunzisoft/keepass/magikeyboard/receiver/LockBroadcastReceiver.java
index bb4ac5841..721ff5220 100644
--- a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/receiver/LockBroadcastReceiver.java
+++ b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/receiver/LockBroadcastReceiver.java
@@ -1,4 +1,4 @@
-package com.kunzisoft.magikeyboard.receiver;
+package com.kunzisoft.keepass.magikeyboard.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
diff --git a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/receiver/NotificationDeleteBroadcastReceiver.java b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/receiver/NotificationDeleteBroadcastReceiver.java
similarity index 80%
rename from magikeyboard/src/main/java/com/kunzisoft/magikeyboard/receiver/NotificationDeleteBroadcastReceiver.java
rename to app/src/main/java/com/kunzisoft/keepass/magikeyboard/receiver/NotificationDeleteBroadcastReceiver.java
index e429b388b..80c71db13 100644
--- a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/receiver/NotificationDeleteBroadcastReceiver.java
+++ b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/receiver/NotificationDeleteBroadcastReceiver.java
@@ -1,13 +1,13 @@
-package com.kunzisoft.magikeyboard.receiver;
+package com.kunzisoft.keepass.magikeyboard.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
-import com.kunzisoft.magikeyboard.KeyboardEntryNotificationService;
-import com.kunzisoft.magikeyboard.MagikIME;
-import com.kunzisoft.magikeyboard.R;
+import com.kunzisoft.keepass.R;
+import com.kunzisoft.keepass.magikeyboard.KeyboardEntryNotificationService;
+import com.kunzisoft.keepass.magikeyboard.MagikIME;
public class NotificationDeleteBroadcastReceiver extends BroadcastReceiver {
diff --git a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/settings/MagikIMESettings.java b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/settings/MagikIMESettings.java
similarity index 97%
rename from magikeyboard/src/main/java/com/kunzisoft/magikeyboard/settings/MagikIMESettings.java
rename to app/src/main/java/com/kunzisoft/keepass/magikeyboard/settings/MagikIMESettings.java
index e053954c5..493971306 100644
--- a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/settings/MagikIMESettings.java
+++ b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/settings/MagikIMESettings.java
@@ -17,7 +17,7 @@
* along with KeePass DX. If not, see .
*
*/
-package com.kunzisoft.magikeyboard.settings;
+package com.kunzisoft.keepass.magikeyboard.settings;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
@@ -25,7 +25,7 @@ import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
-import com.kunzisoft.magikeyboard.R;
+import com.kunzisoft.keepass.R;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
diff --git a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/settings/MagikIMESettingsFragment.java b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/settings/MagikIMESettingsFragment.java
similarity index 67%
rename from magikeyboard/src/main/java/com/kunzisoft/magikeyboard/settings/MagikIMESettingsFragment.java
rename to app/src/main/java/com/kunzisoft/keepass/magikeyboard/settings/MagikIMESettingsFragment.java
index a4727175f..7144cee68 100644
--- a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/settings/MagikIMESettingsFragment.java
+++ b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/settings/MagikIMESettingsFragment.java
@@ -1,15 +1,15 @@
-package com.kunzisoft.magikeyboard.settings;
+package com.kunzisoft.keepass.magikeyboard.settings;
import android.os.Bundle;
import android.support.v7.preference.PreferenceFragmentCompat;
-import com.kunzisoft.magikeyboard.R;
+import com.kunzisoft.keepass.R;
public class MagikIMESettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
// Load the preferences from an XML resource
- setPreferencesFromResource(R.xml.ime_preferences, rootKey);
+ setPreferencesFromResource(R.xml.keyboard_preferences, rootKey);
}
}
diff --git a/keepass-model/src/main/java/com/kunzisoft/keepass_model/Entry.java b/app/src/main/java/com/kunzisoft/keepass/model/Entry.java
similarity index 98%
rename from keepass-model/src/main/java/com/kunzisoft/keepass_model/Entry.java
rename to app/src/main/java/com/kunzisoft/keepass/model/Entry.java
index 02f334c50..db722499a 100644
--- a/keepass-model/src/main/java/com/kunzisoft/keepass_model/Entry.java
+++ b/app/src/main/java/com/kunzisoft/keepass/model/Entry.java
@@ -1,4 +1,4 @@
-package com.kunzisoft.keepass_model;
+package com.kunzisoft.keepass.model;
import android.os.Parcel;
import android.os.Parcelable;
diff --git a/app/src/main/java/com/kunzisoft/keepass/selection/EntrySelectionHelper.java b/app/src/main/java/com/kunzisoft/keepass/selection/EntrySelectionHelper.java
index 70caafe3b..a70873b67 100644
--- a/app/src/main/java/com/kunzisoft/keepass/selection/EntrySelectionHelper.java
+++ b/app/src/main/java/com/kunzisoft/keepass/selection/EntrySelectionHelper.java
@@ -5,7 +5,7 @@ import android.content.Intent;
import android.util.Log;
import com.kunzisoft.keepass.database.PwEntry;
-import com.kunzisoft.keepass_model.Entry;
+import com.kunzisoft.keepass.model.Entry;
public class EntrySelectionHelper {
diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/NestedSettingsFragment.java b/app/src/main/java/com/kunzisoft/keepass/settings/NestedSettingsFragment.java
index 48167cea2..6ccda6254 100644
--- a/app/src/main/java/com/kunzisoft/keepass/settings/NestedSettingsFragment.java
+++ b/app/src/main/java/com/kunzisoft/keepass/settings/NestedSettingsFragment.java
@@ -60,7 +60,7 @@ import com.kunzisoft.keepass.settings.preferenceDialogFragment.MemoryUsagePrefer
import com.kunzisoft.keepass.settings.preferenceDialogFragment.ParallelismPreferenceDialogFragmentCompat;
import com.kunzisoft.keepass.settings.preferenceDialogFragment.RoundsPreferenceDialogFragmentCompat;
import com.kunzisoft.keepass.stylish.Stylish;
-import com.kunzisoft.magikeyboard.settings.MagikIMESettings;
+import com.kunzisoft.keepass.magikeyboard.settings.MagikIMESettings;
public class NestedSettingsFragment extends PreferenceFragmentCompat
implements Preference.OnPreferenceClickListener {
diff --git a/magikeyboard/src/main/res/drawable/ic_backspace_white_24dp.xml b/app/src/main/res/drawable/ic_backspace_white_24dp.xml
similarity index 100%
rename from magikeyboard/src/main/res/drawable/ic_backspace_white_24dp.xml
rename to app/src/main/res/drawable/ic_backspace_white_24dp.xml
diff --git a/magikeyboard/src/main/res/drawable/ic_comment_white_24dp.xml b/app/src/main/res/drawable/ic_comment_white_24dp.xml
similarity index 100%
rename from magikeyboard/src/main/res/drawable/ic_comment_white_24dp.xml
rename to app/src/main/res/drawable/ic_comment_white_24dp.xml
diff --git a/magikeyboard/src/main/res/drawable/ic_keyboard_return_white_24dp.xml b/app/src/main/res/drawable/ic_keyboard_return_white_24dp.xml
similarity index 100%
rename from magikeyboard/src/main/res/drawable/ic_keyboard_return_white_24dp.xml
rename to app/src/main/res/drawable/ic_keyboard_return_white_24dp.xml
diff --git a/magikeyboard/src/main/res/drawable/ic_keyboard_white_24dp.xml b/app/src/main/res/drawable/ic_keyboard_white_24dp.xml
similarity index 100%
rename from magikeyboard/src/main/res/drawable/ic_keyboard_white_24dp.xml
rename to app/src/main/res/drawable/ic_keyboard_white_24dp.xml
diff --git a/magikeyboard/src/main/res/drawable/ic_link_black_24dp.xml b/app/src/main/res/drawable/ic_link_black_24dp.xml
similarity index 100%
rename from magikeyboard/src/main/res/drawable/ic_link_black_24dp.xml
rename to app/src/main/res/drawable/ic_link_black_24dp.xml
diff --git a/magikeyboard/src/main/res/drawable/ic_list_white_24dp.xml b/app/src/main/res/drawable/ic_list_white_24dp.xml
similarity index 100%
rename from magikeyboard/src/main/res/drawable/ic_list_white_24dp.xml
rename to app/src/main/res/drawable/ic_list_white_24dp.xml
diff --git a/magikeyboard/src/main/res/drawable/ic_password_white_24dp.xml b/app/src/main/res/drawable/ic_password_white_24dp.xml
similarity index 100%
rename from magikeyboard/src/main/res/drawable/ic_password_white_24dp.xml
rename to app/src/main/res/drawable/ic_password_white_24dp.xml
diff --git a/magikeyboard/src/main/res/drawable/ic_person_white_24dp.xml b/app/src/main/res/drawable/ic_person_white_24dp.xml
similarity index 100%
rename from magikeyboard/src/main/res/drawable/ic_person_white_24dp.xml
rename to app/src/main/res/drawable/ic_person_white_24dp.xml
diff --git a/magikeyboard/src/main/res/drawable/ic_vpn_key_white_24dp.xml b/app/src/main/res/drawable/ic_vpn_key_white_24dp.xml
similarity index 100%
rename from magikeyboard/src/main/res/drawable/ic_vpn_key_white_24dp.xml
rename to app/src/main/res/drawable/ic_vpn_key_white_24dp.xml
diff --git a/magikeyboard/src/main/res/drawable/key_background.xml b/app/src/main/res/drawable/key_background.xml
similarity index 100%
rename from magikeyboard/src/main/res/drawable/key_background.xml
rename to app/src/main/res/drawable/key_background.xml
diff --git a/magikeyboard/src/main/res/drawable/key_background_normal.xml b/app/src/main/res/drawable/key_background_normal.xml
similarity index 100%
rename from magikeyboard/src/main/res/drawable/key_background_normal.xml
rename to app/src/main/res/drawable/key_background_normal.xml
diff --git a/magikeyboard/src/main/res/drawable/key_background_pressed.xml b/app/src/main/res/drawable/key_background_pressed.xml
similarity index 100%
rename from magikeyboard/src/main/res/drawable/key_background_pressed.xml
rename to app/src/main/res/drawable/key_background_pressed.xml
diff --git a/magikeyboard/src/main/res/layout/empty.xml b/app/src/main/res/layout/empty.xml
similarity index 100%
rename from magikeyboard/src/main/res/layout/empty.xml
rename to app/src/main/res/layout/empty.xml
diff --git a/magikeyboard/src/main/res/layout/key_preview.xml b/app/src/main/res/layout/key_preview.xml
similarity index 100%
rename from magikeyboard/src/main/res/layout/key_preview.xml
rename to app/src/main/res/layout/key_preview.xml
diff --git a/magikeyboard/src/main/res/layout/keyboard.xml b/app/src/main/res/layout/keyboard.xml
similarity index 100%
rename from magikeyboard/src/main/res/layout/keyboard.xml
rename to app/src/main/res/layout/keyboard.xml
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 6d1f08c8a..2a25749df 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -68,4 +68,9 @@
#c7c7c7
#999999
#565656
+
+ #3c474c
+ #263238
+ #3c464c
+ #263238
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 643f3e375..fc7af7090 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -288,6 +288,50 @@
Lock the database.
Go back to your main keyboard.
+ Magikeyboard
+ Magikeyboard (KeePass DX)
+ Magikeyboard settings
+
+ Entry
+
+ erase_entry_timeout_key
+ Timeout
+ Timeout to clear the keyboard entry
+
+ notification_entry_key
+ Notification information
+ Show a notification when an entry is available
+ true
+
+ Entry
+ %1$s available on Magikeyboard
+ %1$s
+
+ notification_entry_slide_close_key
+ Clear at closing
+ Clear the keyboard entry when closing the notification
+ true
+
+ Appearance
+
+ theme_key
+ Theme
+
+ Keys
+ key_vibrate_key
+ Vibrate on keypress
+ true
+
+ key_vibrate_duration_key
+ Keypress vibration duration
+
+ key_sound_key
+ Sound on keypress
+ false
+
+ key_long_press_delay_key
+ Key long press delay
+
Allow no password
Enable the open button if no password identification is selected
Read only
diff --git a/magikeyboard/src/main/res/xml/keyboard_fields_list.xml b/app/src/main/res/xml/keyboard_fields_list.xml
similarity index 100%
rename from magikeyboard/src/main/res/xml/keyboard_fields_list.xml
rename to app/src/main/res/xml/keyboard_fields_list.xml
diff --git a/magikeyboard/src/main/res/xml/keyboard_password.xml b/app/src/main/res/xml/keyboard_password.xml
similarity index 100%
rename from magikeyboard/src/main/res/xml/keyboard_password.xml
rename to app/src/main/res/xml/keyboard_password.xml
diff --git a/magikeyboard/src/main/res/xml/keyboard_password_entry.xml b/app/src/main/res/xml/keyboard_password_entry.xml
similarity index 100%
rename from magikeyboard/src/main/res/xml/keyboard_password_entry.xml
rename to app/src/main/res/xml/keyboard_password_entry.xml
diff --git a/magikeyboard/src/main/res/xml/ime_preferences.xml b/app/src/main/res/xml/keyboard_preferences.xml
similarity index 100%
rename from magikeyboard/src/main/res/xml/ime_preferences.xml
rename to app/src/main/res/xml/keyboard_preferences.xml
diff --git a/magikeyboard/src/main/res/xml/method.xml b/app/src/main/res/xml/method.xml
similarity index 100%
rename from magikeyboard/src/main/res/xml/method.xml
rename to app/src/main/res/xml/method.xml
diff --git a/app/src/main/resources/com/kunzisoft/keepass/.gitignore b/app/src/main/resources/com/kunzisoft/keepass/.gitignore
deleted file mode 100644
index 48c029696..000000000
--- a/app/src/main/resources/com/kunzisoft/keepass/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-R.java
diff --git a/app/src/main/resources/org/bouncycastle/asn1/util/ASN1Dump.java.orig b/app/src/main/resources/org/bouncycastle/asn1/util/ASN1Dump.java.orig
deleted file mode 100644
index 68c65cbe1..000000000
--- a/app/src/main/resources/org/bouncycastle/asn1/util/ASN1Dump.java.orig
+++ /dev/null
@@ -1,440 +0,0 @@
-package org.bouncycastle.asn1.util;
-
-import org.bouncycastle.asn1.ASN1OctetString;
-import org.bouncycastle.asn1.ASN1Sequence;
-import org.bouncycastle.asn1.ASN1Set;
-import org.bouncycastle.asn1.BERConstructedOctetString;
-import org.bouncycastle.asn1.BERConstructedSequence;
-import org.bouncycastle.asn1.BERSequence;
-import org.bouncycastle.asn1.BERSet;
-import org.bouncycastle.asn1.BERTaggedObject;
-import org.bouncycastle.asn1.DERBMPString;
-import org.bouncycastle.asn1.DERBitString;
-import org.bouncycastle.asn1.DERBoolean;
-import org.bouncycastle.asn1.DERConstructedSequence;
-import org.bouncycastle.asn1.DERConstructedSet;
-import org.bouncycastle.asn1.DEREncodable;
-import org.bouncycastle.asn1.DERGeneralizedTime;
-import org.bouncycastle.asn1.DERIA5String;
-import org.bouncycastle.asn1.DERInteger;
-import org.bouncycastle.asn1.DERNull;
-import org.bouncycastle.asn1.DERObject;
-import org.bouncycastle.asn1.DERObjectIdentifier;
-import org.bouncycastle.asn1.DEROctetString;
-import org.bouncycastle.asn1.DERPrintableString;
-import org.bouncycastle.asn1.DERSequence;
-import org.bouncycastle.asn1.DERSet;
-import org.bouncycastle.asn1.DERT61String;
-import org.bouncycastle.asn1.DERTaggedObject;
-import org.bouncycastle.asn1.DERUTCTime;
-import org.bouncycastle.asn1.DERUTF8String;
-import org.bouncycastle.asn1.DERUnknownTag;
-import org.bouncycastle.asn1.DERVisibleString;
-import org.bouncycastle.asn1.DERApplicationSpecific;
-import org.bouncycastle.asn1.DERTags;
-import org.bouncycastle.asn1.BERApplicationSpecific;
-import org.bouncycastle.util.encoders.Hex;
-
-import java.util.Enumeration;
-import java.io.IOException;
-
-public class ASN1Dump
-{
- private static final String TAB = " ";
- private static final int SAMPLE_SIZE = 32;
-
- /**
- * dump a DER object as a formatted string with indentation
- *
- * @param obj the DERObject to be dumped out.
- */
- static String _dumpAsString(
- String indent,
- boolean verbose,
- DERObject obj)
- {
- String nl = System.getProperty("line.separator");
- if (obj instanceof ASN1Sequence)
- {
- StringBuffer buf = new StringBuffer();
- Enumeration e = ((ASN1Sequence)obj).getObjects();
- String tab = indent + TAB;
-
- buf.append(indent);
- if (obj instanceof BERConstructedSequence)
- {
- buf.append("BER ConstructedSequence");
- }
- else if (obj instanceof DERConstructedSequence)
- {
- buf.append("DER ConstructedSequence");
- }
- else if (obj instanceof BERSequence)
- {
- buf.append("BER Sequence");
- }
- else if (obj instanceof DERSequence)
- {
- buf.append("DER Sequence");
- }
- else
- {
- buf.append("Sequence");
- }
-
- buf.append(nl);
-
- while (e.hasMoreElements())
- {
- Object o = e.nextElement();
-
- if (o == null || o.equals(new DERNull()))
- {
- buf.append(tab);
- buf.append("NULL");
- buf.append(nl);
- }
- else if (o instanceof DERObject)
- {
- buf.append(_dumpAsString(tab, verbose, (DERObject)o));
- }
- else
- {
- buf.append(_dumpAsString(tab, verbose, ((DEREncodable)o).getDERObject()));
- }
- }
- return buf.toString();
- }
- else if (obj instanceof DERTaggedObject)
- {
- StringBuffer buf = new StringBuffer();
- String tab = indent + TAB;
-
- buf.append(indent);
- if (obj instanceof BERTaggedObject)
- {
- buf.append("BER Tagged [");
- }
- else
- {
- buf.append("Tagged [");
- }
-
- DERTaggedObject o = (DERTaggedObject)obj;
-
- buf.append(Integer.toString(o.getTagNo()));
- buf.append(']');
-
- if (!o.isExplicit())
- {
- buf.append(" IMPLICIT ");
- }
-
- buf.append(nl);
-
- if (o.isEmpty())
- {
- buf.append(tab);
- buf.append("EMPTY");
- buf.append(nl);
- }
- else
- {
- buf.append(_dumpAsString(tab, verbose, o.getObject()));
- }
-
- return buf.toString();
- }
- else if (obj instanceof DERConstructedSet)
- {
- StringBuffer buf = new StringBuffer();
- Enumeration e = ((ASN1Set)obj).getObjects();
- String tab = indent + TAB;
-
- buf.append(indent);
- buf.append("ConstructedSet");
- buf.append(nl);
-
- while (e.hasMoreElements())
- {
- Object o = e.nextElement();
-
- if (o == null)
- {
- buf.append(tab);
- buf.append("NULL");
- buf.append(nl);
- }
- else if (o instanceof DERObject)
- {
- buf.append(_dumpAsString(tab, verbose, (DERObject)o));
- }
- else
- {
- buf.append(_dumpAsString(tab, verbose, ((DEREncodable)o).getDERObject()));
- }
- }
- return buf.toString();
- }
- else if (obj instanceof BERSet)
- {
- StringBuffer buf = new StringBuffer();
- Enumeration e = ((ASN1Set)obj).getObjects();
- String tab = indent + TAB;
-
- buf.append(indent);
- buf.append("BER Set");
- buf.append(nl);
-
- while (e.hasMoreElements())
- {
- Object o = e.nextElement();
-
- if (o == null)
- {
- buf.append(tab);
- buf.append("NULL");
- buf.append(nl);
- }
- else if (o instanceof DERObject)
- {
- buf.append(_dumpAsString(tab, verbose, (DERObject)o));
- }
- else
- {
- buf.append(_dumpAsString(tab, verbose, ((DEREncodable)o).getDERObject()));
- }
- }
- return buf.toString();
- }
- else if (obj instanceof DERSet)
- {
- StringBuffer buf = new StringBuffer();
- Enumeration e = ((ASN1Set)obj).getObjects();
- String tab = indent + TAB;
-
- buf.append(indent);
- buf.append("DER Set");
- buf.append(nl);
-
- while (e.hasMoreElements())
- {
- Object o = e.nextElement();
-
- if (o == null)
- {
- buf.append(tab);
- buf.append("NULL");
- buf.append(nl);
- }
- else if (o instanceof DERObject)
- {
- buf.append(_dumpAsString(tab, verbose, (DERObject)o));
- }
- else
- {
- buf.append(_dumpAsString(tab, verbose, ((DEREncodable)o).getDERObject()));
- }
- }
- return buf.toString();
- }
- else if (obj instanceof DERObjectIdentifier)
- {
- return indent + "ObjectIdentifier(" + ((DERObjectIdentifier)obj).getId() + ")" + nl;
- }
- else if (obj instanceof DERBoolean)
- {
- return indent + "Boolean(" + ((DERBoolean)obj).isTrue() + ")" + nl;
- }
- else if (obj instanceof DERInteger)
- {
- return indent + "Integer(" + ((DERInteger)obj).getValue() + ")" + nl;
- }
- else if (obj instanceof BERConstructedOctetString)
- {
- ASN1OctetString oct = (ASN1OctetString)obj;
- if (verbose)
- {
- return indent + "BER Constructed Octet String" + "[" + oct.getOctets().length + "] " + dumpBinaryDataAsString(indent, oct.getOctets()) + nl;
- }
- return indent + "BER Constructed Octet String" + "[" + oct.getOctets().length + "] " + nl;
- }
- else if (obj instanceof DEROctetString)
- {
- ASN1OctetString oct = (ASN1OctetString)obj;
- if (verbose)
- {
- return indent + "DER Octet String" + "[" + oct.getOctets().length + "] " + dumpBinaryDataAsString(indent, oct.getOctets()) + nl;
- }
- return indent + "DER Octet String" + "[" + oct.getOctets().length + "] " + nl;
- }
- else if (obj instanceof DERBitString)
- {
- DERBitString bt = (DERBitString)obj;
- if (verbose)
- {
- return indent + "DER Bit String" + "[" + bt.getBytes().length + ", " + bt.getPadBits() + "] " + dumpBinaryDataAsString(indent, bt.getBytes()) + nl;
- }
- return indent + "DER Bit String" + "[" + bt.getBytes().length + ", " + bt.getPadBits() + "] " + nl;
- }
- else if (obj instanceof DERIA5String)
- {
- return indent + "IA5String(" + ((DERIA5String)obj).getString() + ") " + nl;
- }
- else if (obj instanceof DERUTF8String)
- {
- return indent + "UTF8String(" + ((DERUTF8String)obj).getString() + ") " + nl;
- }
- else if (obj instanceof DERPrintableString)
- {
- return indent + "PrintableString(" + ((DERPrintableString)obj).getString() + ") " + nl;
- }
- else if (obj instanceof DERVisibleString)
- {
- return indent + "VisibleString(" + ((DERVisibleString)obj).getString() + ") " + nl;
- }
- else if (obj instanceof DERBMPString)
- {
- return indent + "BMPString(" + ((DERBMPString)obj).getString() + ") " + nl;
- }
- else if (obj instanceof DERT61String)
- {
- return indent + "T61String(" + ((DERT61String)obj).getString() + ") " + nl;
- }
- else if (obj instanceof DERUTCTime)
- {
- return indent + "UTCTime(" + ((DERUTCTime)obj).getTime() + ") " + nl;
- }
- else if (obj instanceof DERGeneralizedTime)
- {
- return indent + "GeneralizedTime(" + ((DERGeneralizedTime)obj).getTime() + ") " + nl;
- }
- else if (obj instanceof DERUnknownTag)
- {
- return indent + "Unknown " + Integer.toString(((DERUnknownTag)obj).getTag(), 16) + " " + new String(Hex.encode(((DERUnknownTag)obj).getData())) + nl;
- }
- else if (obj instanceof BERApplicationSpecific)
- {
- return outputApplicationSpecific("BER", indent, verbose, obj, nl);
- }
- else if (obj instanceof DERApplicationSpecific)
- {
- return outputApplicationSpecific("DER", indent, verbose, obj, nl);
- }
- else
- {
- return indent + obj.toString() + nl;
- }
- }
-
- private static String outputApplicationSpecific(String type, String indent, boolean verbose, DERObject obj, String nl)
- {
- DERApplicationSpecific app = (DERApplicationSpecific)obj;
- StringBuffer buf = new StringBuffer();
-
- if (app.isConstructed())
- {
- try
- {
- ASN1Sequence s = ASN1Sequence.getInstance(app.getObject(DERTags.SEQUENCE));
- buf.append(indent + type + " ApplicationSpecific[" + app.getApplicationTag() + "]" + nl);
- for (Enumeration e = s.getObjects(); e.hasMoreElements();)
- {
- buf.append(_dumpAsString(indent + TAB, verbose, (DERObject)e.nextElement()));
- }
- }
- catch (IOException e)
- {
- buf.append(e);
- }
- return buf.toString();
- }
-
- return indent + type + " ApplicationSpecific[" + app.getApplicationTag() + "] (" + new String(Hex.encode(app.getContents())) + ")" + nl;
- }
-
- /**
- * dump out a DER object as a formatted string, in non-verbose mode.
- *
- * @param obj the DERObject to be dumped out.
- * @return the resulting string.
- */
- public static String dumpAsString(
- Object obj)
- {
- return dumpAsString(obj, false);
- }
-
- /**
- * Dump out the object as a string.
- *
- * @param obj the object to be dumped
- * @param verbose if true, dump out the contents of octet and bit strings.
- * @return the resulting string.
- */
- public static String dumpAsString(
- Object obj,
- boolean verbose)
- {
- if (obj instanceof DERObject)
- {
- return _dumpAsString("", verbose, (DERObject)obj);
- }
- else if (obj instanceof DEREncodable)
- {
- return _dumpAsString("", verbose, ((DEREncodable)obj).getDERObject());
- }
-
- return "unknown object type " + obj.toString();
- }
-
- private static String dumpBinaryDataAsString(String indent, byte[] bytes)
- {
- String nl = System.getProperty("line.separator");
- StringBuffer buf = new StringBuffer();
-
- indent += TAB;
-
- buf.append(nl);
- for (int i = 0; i < bytes.length; i += SAMPLE_SIZE)
- {
- if (bytes.length - i > SAMPLE_SIZE)
- {
- buf.append(indent);
- buf.append(new String(Hex.encode(bytes, i, SAMPLE_SIZE)));
- buf.append(TAB);
- buf.append(calculateAscString(bytes, i, SAMPLE_SIZE));
- buf.append(nl);
- }
- else
- {
- buf.append(indent);
- buf.append(new String(Hex.encode(bytes, i, bytes.length - i)));
- for (int j = bytes.length - i; j != SAMPLE_SIZE; j++)
- {
- buf.append(" ");
- }
- buf.append(TAB);
- buf.append(calculateAscString(bytes, i, bytes.length - i));
- buf.append(nl);
- }
- }
-
- return buf.toString();
- }
-
- private static String calculateAscString(byte[] bytes, int off, int len)
- {
- StringBuffer buf = new StringBuffer();
-
- for (int i = off; i != off + len; i++)
- {
- if (bytes[i] >= ' ' && bytes[i] <= '~')
- {
- buf.append((char)bytes[i]);
- }
- }
-
- return buf.toString();
- }
-}
diff --git a/keepass-model/.gitignore b/keepass-model/.gitignore
deleted file mode 100644
index 796b96d1c..000000000
--- a/keepass-model/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
diff --git a/keepass-model/build.gradle b/keepass-model/build.gradle
deleted file mode 100644
index 176fe1e78..000000000
--- a/keepass-model/build.gradle
+++ /dev/null
@@ -1,26 +0,0 @@
-apply plugin: 'com.android.library'
-
-android {
- compileSdkVersion 27
-
-
-
- defaultConfig {
- minSdkVersion 14
- targetSdkVersion 27
- versionCode 1
- versionName "1.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
-
-}
-
-dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-}
diff --git a/keepass-model/proguard-rules.pro b/keepass-model/proguard-rules.pro
deleted file mode 100644
index f1b424510..000000000
--- a/keepass-model/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
diff --git a/keepass-model/src/main/AndroidManifest.xml b/keepass-model/src/main/AndroidManifest.xml
deleted file mode 100644
index 4bb046d14..000000000
--- a/keepass-model/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
diff --git a/magikeyboard/.gitignore b/magikeyboard/.gitignore
deleted file mode 100644
index 796b96d1c..000000000
--- a/magikeyboard/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
diff --git a/magikeyboard/build.gradle b/magikeyboard/build.gradle
deleted file mode 100644
index 42a36a60a..000000000
--- a/magikeyboard/build.gradle
+++ /dev/null
@@ -1,33 +0,0 @@
-apply plugin: 'com.android.library'
-
-android {
- compileSdkVersion 27
-
- defaultConfig {
- minSdkVersion 14
- targetSdkVersion 27
- versionCode 1
- versionName "1.0"
-
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
-
-}
-
-def supportVersion = "27.1.1"
-
-dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation "com.android.support:appcompat-v7:$supportVersion"
- implementation "com.android.support:preference-v7:$supportVersion"
- implementation "com.android.support:preference-v14:$supportVersion"
- implementation project(path: ':keepass-model')
-}
diff --git a/magikeyboard/proguard-rules.pro b/magikeyboard/proguard-rules.pro
deleted file mode 100644
index f1b424510..000000000
--- a/magikeyboard/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
diff --git a/magikeyboard/src/main/AndroidManifest.xml b/magikeyboard/src/main/AndroidManifest.xml
deleted file mode 100644
index 5e678663b..000000000
--- a/magikeyboard/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/Utility.java b/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/Utility.java
deleted file mode 100644
index 8095f1246..000000000
--- a/magikeyboard/src/main/java/com/kunzisoft/magikeyboard/Utility.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.kunzisoft.magikeyboard;
-
-public class Utility {
-
-
-}
diff --git a/magikeyboard/src/main/res/drawable/ic_lock_open_white_24dp.xml b/magikeyboard/src/main/res/drawable/ic_lock_open_white_24dp.xml
deleted file mode 100644
index 6c09b2a90..000000000
--- a/magikeyboard/src/main/res/drawable/ic_lock_open_white_24dp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
diff --git a/magikeyboard/src/main/res/drawable/ic_lock_white_24dp.xml b/magikeyboard/src/main/res/drawable/ic_lock_white_24dp.xml
deleted file mode 100644
index 27a2aa1dc..000000000
--- a/magikeyboard/src/main/res/drawable/ic_lock_white_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/magikeyboard/src/main/res/layout/activity_toolbar.xml b/magikeyboard/src/main/res/layout/activity_toolbar.xml
deleted file mode 100644
index 382cffe0b..000000000
--- a/magikeyboard/src/main/res/layout/activity_toolbar.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/magikeyboard/src/main/res/layout/list_fields.xml b/magikeyboard/src/main/res/layout/list_fields.xml
deleted file mode 100644
index 87e80311c..000000000
--- a/magikeyboard/src/main/res/layout/list_fields.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/magikeyboard/src/main/res/layout/toolbar_default.xml b/magikeyboard/src/main/res/layout/toolbar_default.xml
deleted file mode 100644
index 56fba7001..000000000
--- a/magikeyboard/src/main/res/layout/toolbar_default.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
\ No newline at end of file
diff --git a/magikeyboard/src/main/res/values/colors.xml b/magikeyboard/src/main/res/values/colors.xml
deleted file mode 100644
index b33fb36a5..000000000
--- a/magikeyboard/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
- #3c474c
- #263238
- #3c464c
- #263238
-
diff --git a/magikeyboard/src/main/res/values/strings.xml b/magikeyboard/src/main/res/values/strings.xml
deleted file mode 100644
index 6619f8735..000000000
--- a/magikeyboard/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
- Magikeyboard
- Magikeyboard (KeePass DX)
- Magikeyboard settings
-
- Entry
-
- erase_entry_timeout_key
- Timeout
- Timeout to clear the keyboard entry
-
- notification_entry_key
- Notification information
- Show a notification when an entry is available
- true
-
- Entry
- %1$s available on Magikeyboard
- %1$s
-
- notification_entry_slide_close_key
- Clear at closing
- Clear the keyboard entry when closing the notification
- true
-
- Appearance
-
- theme_key
- Theme
-
- Keys
- key_vibrate_key
- Vibrate on keypress
- true
-
- key_vibrate_duration_key
- Keypress vibration duration
-
- key_sound_key
- Sound on keypress
- false
-
- key_long_press_delay_key
- Key long press delay
-
-
diff --git a/settings.gradle b/settings.gradle
index a214e0b2d..48a1ac76b 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':app', ':icon-pack-classic', ':icon-pack-material', ':magikeyboard', ':keepass-model'
+include ':app', ':icon-pack-classic', ':icon-pack-material'