aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/crypto
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/de/pixart/messenger/crypto/OtrService.java4
-rw-r--r--src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java13
-rw-r--r--src/main/java/de/pixart/messenger/crypto/axolotl/XmppAxolotlMessage.java32
-rw-r--r--src/main/java/de/pixart/messenger/crypto/axolotl/XmppAxolotlSession.java8
-rw-r--r--src/main/java/de/pixart/messenger/crypto/sasl/ScramMechanism.java4
5 files changed, 51 insertions, 10 deletions
diff --git a/src/main/java/de/pixart/messenger/crypto/OtrService.java b/src/main/java/de/pixart/messenger/crypto/OtrService.java
index f355ac348..cf41ec26f 100644
--- a/src/main/java/de/pixart/messenger/crypto/OtrService.java
+++ b/src/main/java/de/pixart/messenger/crypto/OtrService.java
@@ -95,7 +95,9 @@ public class OtrService extends OtrCryptoEngineImpl implements OtrEngineHost {
this.account.setKey("otr_p", privateKeySpec.getP().toString(16));
this.account.setKey("otr_q", privateKeySpec.getQ().toString(16));
this.account.setKey("otr_y", publicKeySpec.getY().toString(16));
- } catch (final NoSuchAlgorithmException | InvalidKeySpecException e) {
+ } catch (final NoSuchAlgorithmException e) {
+ e.printStackTrace();
+ } catch (final InvalidKeySpecException e) {
e.printStackTrace();
}
diff --git a/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java b/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java
index 3b3fda228..f45668c49 100644
--- a/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java
+++ b/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java
@@ -1115,7 +1115,18 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
callback.onSessionBuildSuccessful();
}
}
- } catch (UntrustedIdentityException | InvalidKeyException e) {
+ } catch (UntrustedIdentityException e) {
+ Log.e(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Error building session for " + address + ": "
+ + e.getClass().getName() + ", " + e.getMessage());
+ fetchStatusMap.put(address, FetchStatus.ERROR);
+ finishBuildingSessionsFromPEP(address);
+ if (oneOfOurs && cleanedOwnDeviceIds.add(address.getDeviceId())) {
+ removeFromDeviceAnnouncement(address.getDeviceId());
+ }
+ if (callback != null) {
+ callback.onSessionBuildFailed();
+ }
+ } catch (InvalidKeyException e) {
Log.e(Config.LOGTAG, AxolotlService.getLogprefix(account) + "Error building session for " + address + ": "
+ e.getClass().getName() + ", " + e.getMessage());
fetchStatusMap.put(address, FetchStatus.ERROR);
diff --git a/src/main/java/de/pixart/messenger/crypto/axolotl/XmppAxolotlMessage.java b/src/main/java/de/pixart/messenger/crypto/axolotl/XmppAxolotlMessage.java
index 60aa1e357..c89ad2172 100644
--- a/src/main/java/de/pixart/messenger/crypto/axolotl/XmppAxolotlMessage.java
+++ b/src/main/java/de/pixart/messenger/crypto/axolotl/XmppAxolotlMessage.java
@@ -189,9 +189,19 @@ public class XmppAxolotlMessage {
System.arraycopy(this.innerKey, 0, authtagPlusInnerKey, 0, this.innerKey.length);
this.ciphertext = ciphertext;
}
- } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException
- | IllegalBlockSizeException | BadPaddingException | NoSuchProviderException
- | InvalidAlgorithmParameterException e) {
+ } catch (NoSuchAlgorithmException e) {
+ throw new CryptoFailedException(e);
+ } catch (NoSuchPaddingException e) {
+ throw new CryptoFailedException(e);
+ } catch (InvalidKeyException e) {
+ throw new CryptoFailedException(e);
+ } catch (IllegalBlockSizeException e) {
+ throw new CryptoFailedException(e);
+ } catch (BadPaddingException e) {
+ throw new CryptoFailedException(e);
+ } catch (NoSuchProviderException e) {
+ throw new CryptoFailedException(e);
+ } catch (InvalidAlgorithmParameterException e) {
throw new CryptoFailedException(e);
}
}
@@ -308,9 +318,19 @@ public class XmppAxolotlMessage {
String plaintext = new String(cipher.doFinal(ciphertext));
plaintextMessage = new XmppAxolotlPlaintextMessage(Config.OMEMO_PADDING ? plaintext.trim() : plaintext, session.getFingerprint());
- } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException
- | InvalidAlgorithmParameterException | IllegalBlockSizeException
- | BadPaddingException | NoSuchProviderException e) {
+ } catch (NoSuchAlgorithmException e) {
+ throw new CryptoFailedException(e);
+ } catch (NoSuchPaddingException e) {
+ throw new CryptoFailedException(e);
+ } catch (InvalidKeyException e) {
+ throw new CryptoFailedException(e);
+ } catch (InvalidAlgorithmParameterException e) {
+ throw new CryptoFailedException(e);
+ } catch (IllegalBlockSizeException e) {
+ throw new CryptoFailedException(e);
+ } catch (BadPaddingException e) {
+ throw new CryptoFailedException(e);
+ } catch (NoSuchProviderException e) {
throw new CryptoFailedException(e);
}
}
diff --git a/src/main/java/de/pixart/messenger/crypto/axolotl/XmppAxolotlSession.java b/src/main/java/de/pixart/messenger/crypto/axolotl/XmppAxolotlSession.java
index 71e20676e..f7a9c0a6f 100644
--- a/src/main/java/de/pixart/messenger/crypto/axolotl/XmppAxolotlSession.java
+++ b/src/main/java/de/pixart/messenger/crypto/axolotl/XmppAxolotlSession.java
@@ -115,7 +115,13 @@ public class XmppAxolotlSession implements Comparable<XmppAxolotlSession> {
SignalMessage signalMessage = new SignalMessage(encryptedKey.key);
try {
plaintext = cipher.decrypt(signalMessage);
- } catch (InvalidMessageException | NoSessionException e) {
+ } catch (InvalidMessageException e) {
+ if (iterator.hasNext()) {
+ Log.w(Config.LOGTAG, account.getJid().asBareJid() + ": ignoring crypto exception because possible keys left to try", e);
+ continue;
+ }
+ throw new BrokenSessionException(this.remoteAddress, e);
+ } catch (NoSessionException e) {
if (iterator.hasNext()) {
Log.w(Config.LOGTAG, account.getJid().asBareJid() + ": ignoring crypto exception because possible keys left to try", e);
continue;
diff --git a/src/main/java/de/pixart/messenger/crypto/sasl/ScramMechanism.java b/src/main/java/de/pixart/messenger/crypto/sasl/ScramMechanism.java
index e1a153ef6..4a6fa42e5 100644
--- a/src/main/java/de/pixart/messenger/crypto/sasl/ScramMechanism.java
+++ b/src/main/java/de/pixart/messenger/crypto/sasl/ScramMechanism.java
@@ -43,7 +43,9 @@ abstract class ScramMechanism extends SaslMechanism {
clientKey = hmac(saltedPassword, CLIENT_KEY_BYTES);
return new KeyPair(clientKey, serverKey);
- } catch (final InvalidKeyException | NumberFormatException e) {
+ } catch (final InvalidKeyException e) {
+ return null;
+ } catch (final NumberFormatException e) {
return null;
}
}