diff --git a/app/src/main/java/com/beemdevelopment/aegis/crypto/KeyStoreHandle.java b/app/src/main/java/com/beemdevelopment/aegis/crypto/KeyStoreHandle.java
index 81e39380..b0af51eb 100644
--- a/app/src/main/java/com/beemdevelopment/aegis/crypto/KeyStoreHandle.java
+++ b/app/src/main/java/com/beemdevelopment/aegis/crypto/KeyStoreHandle.java
@@ -14,6 +14,7 @@ import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
+import java.util.Collections;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
@@ -100,6 +101,16 @@ public class KeyStoreHandle {
}
}
+ public void clear() throws KeyStoreHandleException {
+ try {
+ for (String alias : Collections.list(_keyStore.aliases())) {
+ deleteKey(alias);
+ }
+ } catch (KeyStoreException e) {
+ throw new KeyStoreHandleException(e);
+ }
+ }
+
public static boolean isSupported() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
}
diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java b/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java
index a7a68ee7..34c95774 100644
--- a/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java
+++ b/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java
@@ -20,6 +20,8 @@ import com.beemdevelopment.aegis.BuildConfig;
import com.beemdevelopment.aegis.R;
import com.beemdevelopment.aegis.Theme;
import com.beemdevelopment.aegis.ViewMode;
+import com.beemdevelopment.aegis.crypto.KeyStoreHandle;
+import com.beemdevelopment.aegis.crypto.KeyStoreHandleException;
import com.beemdevelopment.aegis.db.DatabaseEntry;
import com.beemdevelopment.aegis.db.DatabaseFileCredentials;
import com.beemdevelopment.aegis.db.DatabaseManager;
@@ -257,8 +259,18 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
try {
_db.disableEncryption();
} catch (DatabaseManagerException e) {
- Toast.makeText(getActivity(), getString(R.string.encrypting_error), Toast.LENGTH_SHORT).show();
+ Toast.makeText(getActivity(), getString(R.string.disable_encryption_error), Toast.LENGTH_SHORT).show();
+ return;
}
+
+ // clear the KeyStore
+ try {
+ KeyStoreHandle handle = new KeyStoreHandle();
+ handle.clear();
+ } catch (KeyStoreHandleException e) {
+ e.printStackTrace();
+ }
+
updateEncryptionPreferences();
}
})
@@ -284,6 +296,14 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
slots.remove(slot);
_db.setCredentials(creds);
+ // remove the KeyStore key
+ try {
+ KeyStoreHandle handle = new KeyStoreHandle();
+ handle.deleteKey(slot.getUUID().toString());
+ } catch (KeyStoreHandleException e) {
+ e.printStackTrace();
+ }
+
saveDatabase();
updateEncryptionPreferences();
}
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 3cd6f188..6e8972ac 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -106,7 +106,7 @@
Произошла ошибка при попытке сохранить хранилище
Отключить шифрование
Вы уверены что хотите отключить шифрование? Это приведет к хранению хранилища в виде простого текста.
- Произошла ошибка при включении шифрования
+ Произошла ошибка при включении шифрования
Доступ запрещен
Выберите приложение из которого вы хотите импортировать базу данных.
Выберите тему
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b62e2a1a..bed03f22 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -119,7 +119,8 @@
An error occurred while trying to save the vault
Disable encryption
Are you sure you want to disable encryption? This will cause the vault to be stored in plain text.
- An error occurred while enabling encryption
+ An error occurred while enabling encryption
+ An error occurred while disabling encryption
Permission denied
Select the application you\'d like to import a database from
Select your desired theme