diff options
4 files changed, 22 insertions, 13 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Account.java b/src/main/java/eu/siacs/conversations/entities/Account.java index ea6c0187b..d5a316ab8 100644 --- a/src/main/java/eu/siacs/conversations/entities/Account.java +++ b/src/main/java/eu/siacs/conversations/entities/Account.java @@ -42,17 +42,18 @@ public class Account extends AbstractEntity { public static final int OPTION_USECOMPRESSION = 3; public static enum State { - DISABLED, - OFFLINE, - CONNECTING, - ONLINE, - NO_INTERNET, + DISABLED, + OFFLINE, + CONNECTING, + ONLINE, + NO_INTERNET, UNAUTHORIZED(true), SERVER_NOT_FOUND(true), REGISTRATION_FAILED(true), REGISTRATION_CONFLICT(true), - REGISTRATION_SUCCESSFUL, - REGISTRATION_NOT_SUPPORTED(true); + REGISTRATION_SUCCESSFUL, + REGISTRATION_NOT_SUPPORTED(true), + SECURITY_ERROR(true); private boolean isError; @@ -92,6 +93,8 @@ public class Account extends AbstractEntity { return R.string.account_status_regis_success; case REGISTRATION_NOT_SUPPORTED: return R.string.account_status_regis_not_sup; + case SECURITY_ERROR: + return R.string.account_status_security_error; default: return R.string.account_status_unknown; } @@ -126,8 +129,8 @@ public class Account extends AbstractEntity { } public Account(final String uuid, final Jid jid, - final String password, final int options, final String rosterVersion, final String keys, - final String avatar) { + final String password, final int options, final String rosterVersion, final String keys, + final String avatar) { this.uuid = uuid; this.jid = jid; if (jid.isBareJid()) { @@ -293,7 +296,7 @@ public class Account extends AbstractEntity { if (this.otrFingerprint == null) { try { DSAPublicKey pubkey = (DSAPublicKey) this.otrEngine - .getPublicKey(); + .getPublicKey(); if (pubkey == null) { return null; } @@ -394,12 +397,12 @@ public class Account extends AbstractEntity { } public int getReadableStatusId() { - return this.getStatus().getReadableId(); + return this.getStatus().getReadableId(); } public void activateGracePeriod() { this.mEndGracePeriod = SystemClock.elapsedRealtime() - + (Config.CARBON_GRACE_PERIOD * 1000); + + (Config.CARBON_GRACE_PERIOD * 1000); } public void deactivateGracePeriod() { diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java index 25e0f99d8..7404e161d 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java @@ -92,6 +92,10 @@ public class AccountAdapter extends ArrayAdapter<Account> { R.string.account_status_regis_not_sup)); statusView.setTextColor(activity.getWarningTextColor()); break; + case SECURITY_ERROR: + statusView.setText(getContext().getString + (R.string.account_status_security_error)); + statusView.setTextColor(activity.getWarningTextColor()); default: statusView.setText(""); break; diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 16ef1b505..42a89610d 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -649,7 +649,8 @@ public class XmppConnection implements Runnable { ") than pinned priority (" + keys.getInt(Account.PINNED_MECHANISM_KEY) + "). Possible downgrade attack?"); disconnect(true); - } + account.setStatus(Account.State.SECURITY_ERROR); + } } catch (final JSONException e) { Log.d(Config.LOGTAG, "Parse error while checking pinned auth mechanism"); } diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index e720101c1..4a1ec6759 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -141,6 +141,7 @@ <string name="account_status_regis_conflict">Username already in use</string> <string name="account_status_regis_success">Registration completed</string> <string name="account_status_regis_not_sup">Server does not support registration</string> + <string name="account_status_security_error">Security error</string> <string name="encryption_choice_none">Plain text</string> <string name="encryption_choice_otr">OTR</string> <string name="encryption_choice_pgp">OpenPGP</string> |