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