From 0ff3c0b3b446fef371d8d768f78e65fc993b3386 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 15 Jan 2017 11:40:32 +0100 Subject: don't allow to purge keys. offer distrust instead --- .../de/pixart/messenger/crypto/axolotl/AxolotlService.java | 6 ++++-- .../de/pixart/messenger/crypto/axolotl/FingerprintStatus.java | 10 +++++----- .../de/pixart/messenger/crypto/axolotl/XmppAxolotlSession.java | 2 ++ 3 files changed, 11 insertions(+), 7 deletions(-) (limited to 'src/main/java/de/pixart/messenger/crypto/axolotl') 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 11f51eaa2..b889418c1 100644 --- a/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java +++ b/src/main/java/de/pixart/messenger/crypto/axolotl/AxolotlService.java @@ -436,8 +436,10 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded { mXmppConnectionService.sendIqPacket(account, publish, null); } - public void purgeKey(final String fingerprint) { - axolotlStore.setFingerprintStatus(fingerprint.replaceAll("\\s", ""), FingerprintStatus.createCompromised()); + public void distrustFingerprint(final String fingerprint) { + final String fp = fingerprint.replaceAll("\\s", ""); + final FingerprintStatus fingerprintStatus = axolotlStore.getFingerprintStatus(fp); + axolotlStore.setFingerprintStatus(fp, fingerprintStatus.toUntrusted()); } public void publishOwnDeviceIdIfNeeded() { diff --git a/src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java b/src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java index c38847be5..d47df0a0b 100644 --- a/src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java +++ b/src/main/java/de/pixart/messenger/crypto/axolotl/FingerprintStatus.java @@ -126,17 +126,17 @@ public class FingerprintStatus implements Comparable { return trust; } - public static FingerprintStatus createCompromised() { + public FingerprintStatus toVerified() { FingerprintStatus status = new FingerprintStatus(); - status.active = false; - status.trust = Trust.COMPROMISED; + status.active = active; + status.trust = Trust.VERIFIED; return status; } - public FingerprintStatus toVerified() { + public FingerprintStatus toUntrusted() { FingerprintStatus status = new FingerprintStatus(); status.active = active; - status.trust = Trust.VERIFIED; + status.trust = Trust.UNTRUSTED; return status; } 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 59a7fc71f..6a314a760 100644 --- a/src/main/java/de/pixart/messenger/crypto/axolotl/XmppAxolotlSession.java +++ b/src/main/java/de/pixart/messenger/crypto/axolotl/XmppAxolotlSession.java @@ -118,6 +118,8 @@ public class XmppAxolotlSession implements Comparable { setTrust(status.toActive()); } } + } else { + Log.d(Config.LOGTAG, account.getJid().toBareJid() + " not encrypting omemo message from fingerprint " + getFingerprint() + " because it was marked as compromised"); } return plaintext; } -- cgit v1.2.3