diff --git a/app/src/main/java/com/etesync/syncadapter/ui/setup/BaseConfigurationFinder.java b/app/src/main/java/com/etesync/syncadapter/ui/setup/BaseConfigurationFinder.java
index 23110052..957e6c41 100644
--- a/app/src/main/java/com/etesync/syncadapter/ui/setup/BaseConfigurationFinder.java
+++ b/app/src/main/java/com/etesync/syncadapter/ui/setup/BaseConfigurationFinder.java
@@ -107,6 +107,8 @@ public class BaseConfigurationFinder {
public final String logs;
+ public Throwable error;
+
@Getter
private final boolean failed;
}
diff --git a/app/src/main/java/com/etesync/syncadapter/ui/setup/SetupEncryptionFragment.java b/app/src/main/java/com/etesync/syncadapter/ui/setup/SetupEncryptionFragment.java
index f400c414..19aa9616 100644
--- a/app/src/main/java/com/etesync/syncadapter/ui/setup/SetupEncryptionFragment.java
+++ b/app/src/main/java/com/etesync/syncadapter/ui/setup/SetupEncryptionFragment.java
@@ -89,23 +89,37 @@ public class SetupEncryptionFragment extends DialogFragment {
@Override
protected void onPostExecute(Configuration result) {
- try {
- if (createAccount(config.userName, config)) {
- getActivity().setResult(Activity.RESULT_OK);
- getActivity().finish();
- }
- } catch (InvalidAccountException e) {
- App.log.severe("Account creation failed!");
+ if ((config.error != null) && (config.error instanceof Exceptions.IntegrityException)) {
+ App.log.severe("Wrong encryption password.");
new AlertDialog.Builder(getActivity())
- .setTitle(R.string.account_creation_failed)
+ .setTitle(R.string.wrong_encryption_password)
.setIcon(R.drawable.ic_error_dark)
- .setMessage(e.getLocalizedMessage())
+ .setMessage(getString(R.string.wrong_encryption_password_content, config.error.getLocalizedMessage()))
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// dismiss
}
}).show();
+ } else {
+ try {
+ if (createAccount(config.userName, config)) {
+ getActivity().setResult(Activity.RESULT_OK);
+ getActivity().finish();
+ }
+ } catch (InvalidAccountException e) {
+ App.log.severe("Account creation failed!");
+ new AlertDialog.Builder(getActivity())
+ .setTitle(R.string.account_creation_failed)
+ .setIcon(R.drawable.ic_error_dark)
+ .setMessage(e.getLocalizedMessage())
+ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ // dismiss
+ }
+ }).show();
+ }
}
dismissAllowingStateLoss();
@@ -116,6 +130,7 @@ public class SetupEncryptionFragment extends DialogFragment {
App.log.info("Started deriving key");
config.password = Crypto.deriveKey(config.userName, config.rawPassword);
App.log.info("Finished deriving key");
+ config.error = null;
try {
Crypto.CryptoManager cryptoManager;
@@ -129,12 +144,9 @@ public class SetupEncryptionFragment extends DialogFragment {
userInfo.verify(cryptoManager);
config.keyPair = new Crypto.AsymmetricKeyPair(userInfo.getContent(cryptoManager), userInfo.getPubkey());
}
- } catch (Exceptions.HttpException e) {
- e.printStackTrace();
- } catch (Exceptions.IntegrityException e) {
- e.printStackTrace();
- } catch (Exceptions.VersionTooNewException e) {
+ } catch (Exception e) {
e.printStackTrace();
+ config.error = e;
}
return config;
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a8a7b3a6..02a114e0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -194,6 +194,8 @@
Please wait, setting up encryption…
Account creation failed
+ Wrong encryption password
+ Got an integrity error while accessing your account, which most likely means you put in the wrong encryption password.\n\n%s
Encryption Error