From 9a779ff8aad89774c780fdfaa4c777f002c5c5dd Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Thu, 7 Dec 2017 15:37:14 +0100 Subject: [PATCH] Refactoring --- .../smackx/omemo/OmemoManagerSetupHelper.java | 1 + .../omemo/signal/SignalOmemoKeyUtil.java | 2 +- ...onManager.java => SignalOmemoRatchet.java} | 14 +++++----- .../omemo/signal/SignalOmemoService.java | 4 +-- .../smackx/omemo/OmemoManager.java | 3 ++- ...oSessionManager.java => OmemoRatchet.java} | 8 +++--- .../smackx/omemo/OmemoService.java | 26 +++++++++---------- .../jivesoftware/smackx/omemo/OmemoStore.java | 1 + .../UntrustedOmemoIdentityException.java | 2 +- .../internal/OmemoMessageInformation.java | 4 +-- .../omemo/{ => trust}/OmemoFingerprint.java | 2 +- .../smackx/omemo/trust/TrustCallback.java | 1 - .../smackx/omemo/util/OmemoKeyUtil.java | 2 +- .../omemo/util/OmemoMessageBuilder.java | 24 +++++++++-------- .../smack/omemo/OmemoFingerprintTest.java | 2 +- .../smack/omemo/OmemoStoreTest.java | 3 ++- .../omemo/util/EphemeralTrustCallback.java | 2 +- 17 files changed, 53 insertions(+), 48 deletions(-) rename smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/{SignalOmemoSessionManager.java => SignalOmemoRatchet.java} (92%) rename smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/{OmemoSessionManager.java => OmemoRatchet.java} (94%) rename smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/{ => trust}/OmemoFingerprint.java (97%) diff --git a/smack-integration-test/src/main/java/org/jivesoftware/smackx/omemo/OmemoManagerSetupHelper.java b/smack-integration-test/src/main/java/org/jivesoftware/smackx/omemo/OmemoManagerSetupHelper.java index f5940c312..96a629be2 100644 --- a/smack-integration-test/src/main/java/org/jivesoftware/smackx/omemo/OmemoManagerSetupHelper.java +++ b/smack-integration-test/src/main/java/org/jivesoftware/smackx/omemo/OmemoManagerSetupHelper.java @@ -34,6 +34,7 @@ import org.jivesoftware.smackx.omemo.exceptions.CannotEstablishOmemoSessionExcep import org.jivesoftware.smackx.omemo.exceptions.CorruptedOmemoKeyException; import org.jivesoftware.smackx.omemo.internal.CachedDeviceList; import org.jivesoftware.smackx.omemo.internal.OmemoDevice; +import org.jivesoftware.smackx.omemo.trust.OmemoFingerprint; import org.jivesoftware.smackx.omemo.util.OmemoConstants; import org.jivesoftware.smackx.pubsub.PubSubException; import org.jivesoftware.smackx.pubsub.PubSubManager; diff --git a/smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoKeyUtil.java b/smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoKeyUtil.java index 3d1935f5c..ff53d3963 100644 --- a/smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoKeyUtil.java +++ b/smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoKeyUtil.java @@ -24,10 +24,10 @@ import java.io.IOException; import java.util.List; import java.util.TreeMap; -import org.jivesoftware.smackx.omemo.OmemoFingerprint; import org.jivesoftware.smackx.omemo.element.OmemoBundleVAxolotlElement; import org.jivesoftware.smackx.omemo.exceptions.CorruptedOmemoKeyException; import org.jivesoftware.smackx.omemo.internal.OmemoDevice; +import org.jivesoftware.smackx.omemo.trust.OmemoFingerprint; import org.jivesoftware.smackx.omemo.util.OmemoKeyUtil; import org.jxmpp.jid.impl.JidCreate; diff --git a/smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoSessionManager.java b/smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoRatchet.java similarity index 92% rename from smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoSessionManager.java rename to smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoRatchet.java index c7abaa1fe..4898bc34b 100644 --- a/smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoSessionManager.java +++ b/smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoRatchet.java @@ -24,7 +24,7 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.jivesoftware.smackx.omemo.OmemoManager; -import org.jivesoftware.smackx.omemo.OmemoSessionManager; +import org.jivesoftware.smackx.omemo.OmemoRatchet; import org.jivesoftware.smackx.omemo.OmemoStore; import org.jivesoftware.smackx.omemo.element.OmemoElement; import org.jivesoftware.smackx.omemo.exceptions.CorruptedOmemoKeyException; @@ -55,15 +55,15 @@ import org.whispersystems.libsignal.state.PreKeyRecord; import org.whispersystems.libsignal.state.SessionRecord; import org.whispersystems.libsignal.state.SignedPreKeyRecord; -public class SignalOmemoSessionManager - extends OmemoSessionManager +public class SignalOmemoRatchet + extends OmemoRatchet { - private static final Logger LOGGER = Logger.getLogger(OmemoSessionManager.class.getName()); + private static final Logger LOGGER = Logger.getLogger(OmemoRatchet.class.getName()); private final SignalOmemoStoreConnector storeConnector; - public SignalOmemoSessionManager(OmemoManager.KnownBareJidGuard managerGuard, - OmemoStore store) { diff --git a/smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoService.java b/smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoService.java index 99411a074..50164b747 100644 --- a/smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoService.java +++ b/smack-omemo-signal/src/main/java/org/jivesoftware/smackx/omemo/signal/SignalOmemoService.java @@ -65,12 +65,12 @@ public final class SignalOmemoService private static boolean LICENSE_ACKNOWLEDGED = false; @Override - protected SignalOmemoSessionManager createOmemoSessionManager( + protected SignalOmemoRatchet instantiateOmemoRatchet( OmemoManager.KnownBareJidGuard manager, OmemoStore store) { - return new SignalOmemoSessionManager(manager, getOmemoStoreBackend()); + return new SignalOmemoRatchet(manager, getOmemoStoreBackend()); } public static void setup() diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoManager.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoManager.java index 0279b22e4..b888cdb23 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoManager.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoManager.java @@ -70,6 +70,7 @@ import org.jivesoftware.smackx.omemo.internal.OmemoDevice; import org.jivesoftware.smackx.omemo.internal.OmemoMessageInformation; import org.jivesoftware.smackx.omemo.listener.OmemoMessageListener; import org.jivesoftware.smackx.omemo.listener.OmemoMucMessageListener; +import org.jivesoftware.smackx.omemo.trust.OmemoFingerprint; import org.jivesoftware.smackx.omemo.trust.TrustCallback; import org.jivesoftware.smackx.omemo.trust.TrustState; import org.jivesoftware.smackx.pep.PEPListener; @@ -1010,7 +1011,7 @@ public final class OmemoManager extends Manager { // Device List OmemoDeviceListVAxolotlElement omemoDeviceListElement = (OmemoDeviceListVAxolotlElement) payloadItem.getPayload(); - int ourDeviceId = getDeviceId(); + Integer ourDeviceId = getDeviceId(); getOmemoService().getOmemoStoreBackend() .mergeCachedDeviceList(managerGuard.get().getOwnDevice(), from, omemoDeviceListElement); diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoSessionManager.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoRatchet.java similarity index 94% rename from smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoSessionManager.java rename to smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoRatchet.java index 9f83ee9bf..3b39e5f6f 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoSessionManager.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoRatchet.java @@ -36,14 +36,14 @@ import org.jivesoftware.smackx.omemo.internal.CipherAndAuthTag; import org.jivesoftware.smackx.omemo.internal.CiphertextTuple; import org.jivesoftware.smackx.omemo.internal.OmemoDevice; -public abstract class OmemoSessionManager { - private static final Logger LOGGER = Logger.getLogger(OmemoSessionManager.class.getName()); +public abstract class OmemoRatchet { + private static final Logger LOGGER = Logger.getLogger(OmemoRatchet.class.getName()); protected final OmemoManager.KnownBareJidGuard managerGuard; protected final OmemoStore store; - public OmemoSessionManager(OmemoManager.KnownBareJidGuard managerGuard, - OmemoStore store) { + public OmemoRatchet(OmemoManager.KnownBareJidGuard managerGuard, + OmemoStore store) { this.managerGuard = managerGuard; this.store = store; } diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoService.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoService.java index 042ac2173..3b3f9b0c0 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoService.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoService.java @@ -114,7 +114,7 @@ public abstract class OmemoService INSTANCE; protected OmemoStore omemoStore; - protected final HashMap> sessionManagers = new HashMap<>(); + protected final HashMap> sessionManagers = new HashMap<>(); /** * Return the singleton instance of this class. When no instance is set, throw an IllegalStateException instead. @@ -223,7 +223,7 @@ public abstract class OmemoService builder; try { - builder = new OmemoMessageBuilder<>(managerGuard, getOmemoSessionManager(managerGuard), message.getBody()); + builder = new OmemoMessageBuilder<>(managerGuard, getOmemoRatchet(managerGuard), message.getBody()); } catch (UnsupportedEncodingException | BadPaddingException | IllegalBlockSizeException | NoSuchProviderException | NoSuchPaddingException | InvalidAlgorithmParameterException | InvalidKeyException | NoSuchAlgorithmException e) { throw new CryptoFailedException(e); @@ -1098,7 +1098,7 @@ public abstract class OmemoService builder; try { - builder = new OmemoMessageBuilder<>(managerGuard, getOmemoSessionManager(managerGuard), null); + builder = new OmemoMessageBuilder<>(managerGuard, getOmemoRatchet(managerGuard), null); } catch (UnsupportedEncodingException | BadPaddingException | IllegalBlockSizeException | NoSuchProviderException | NoSuchPaddingException | InvalidAlgorithmParameterException | InvalidKeyException | NoSuchAlgorithmException e) { @@ -1135,7 +1135,7 @@ public abstract class OmemoService builder; try { - builder = new OmemoMessageBuilder<>(managerGuard, getOmemoSessionManager(managerGuard), aesKey, iv); + builder = new OmemoMessageBuilder<>(managerGuard, getOmemoRatchet(managerGuard), aesKey, iv); } catch (UnsupportedEncodingException | BadPaddingException | IllegalBlockSizeException | NoSuchProviderException | NoSuchPaddingException | InvalidAlgorithmParameterException | InvalidKeyException | NoSuchAlgorithmException e) { @@ -1444,16 +1444,16 @@ public abstract class OmemoService - createOmemoSessionManager(OmemoManager.KnownBareJidGuard manager, - OmemoStore store); + protected abstract OmemoRatchet + instantiateOmemoRatchet(OmemoManager.KnownBareJidGuard manager, + OmemoStore store); - protected OmemoSessionManager - getOmemoSessionManager(OmemoManager.KnownBareJidGuard guard) { - OmemoSessionManager + protected OmemoRatchet + getOmemoRatchet(OmemoManager.KnownBareJidGuard guard) { + OmemoRatchet sessionManager = sessionManagers.get(guard.get()); if (sessionManager == null) { - sessionManager = createOmemoSessionManager(guard, omemoStore); + sessionManager = instantiateOmemoRatchet(guard, omemoStore); sessionManagers.put(guard.get(), sessionManager); } return sessionManager; diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoStore.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoStore.java index ebcf6ac28..61b797398 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoStore.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoStore.java @@ -32,6 +32,7 @@ import org.jivesoftware.smackx.omemo.exceptions.CannotEstablishOmemoSessionExcep import org.jivesoftware.smackx.omemo.exceptions.CorruptedOmemoKeyException; import org.jivesoftware.smackx.omemo.internal.CachedDeviceList; import org.jivesoftware.smackx.omemo.internal.OmemoDevice; +import org.jivesoftware.smackx.omemo.trust.OmemoFingerprint; import org.jivesoftware.smackx.omemo.util.OmemoKeyUtil; import org.jxmpp.jid.BareJid; diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/exceptions/UntrustedOmemoIdentityException.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/exceptions/UntrustedOmemoIdentityException.java index 17b171b95..91d4fe3c3 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/exceptions/UntrustedOmemoIdentityException.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/exceptions/UntrustedOmemoIdentityException.java @@ -16,8 +16,8 @@ */ package org.jivesoftware.smackx.omemo.exceptions; -import org.jivesoftware.smackx.omemo.OmemoFingerprint; import org.jivesoftware.smackx.omemo.internal.OmemoDevice; +import org.jivesoftware.smackx.omemo.trust.OmemoFingerprint; /** * Exception that gets thrown when we try to decrypt a message which contains an identityKey that differs from the one diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/internal/OmemoMessageInformation.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/internal/OmemoMessageInformation.java index 833ea39b8..9262b3c58 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/internal/OmemoMessageInformation.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/internal/OmemoMessageInformation.java @@ -16,7 +16,7 @@ */ package org.jivesoftware.smackx.omemo.internal; -import org.jivesoftware.smackx.omemo.OmemoFingerprint; +import org.jivesoftware.smackx.omemo.trust.OmemoFingerprint; /** * Class that contains information about a decrypted message (eg. which key was used, if it was a carbon...). @@ -32,7 +32,7 @@ public class OmemoMessageInformation { /** * Empty constructor. */ - // TOOD Move this class into smackx.omemo and make this constructor package protected. -Flow + // TODO Move this class into smackx.omemo and make this constructor package protected. -Flow public OmemoMessageInformation() { } diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoFingerprint.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/trust/OmemoFingerprint.java similarity index 97% rename from smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoFingerprint.java rename to smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/trust/OmemoFingerprint.java index 0ce186f78..522883c72 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/OmemoFingerprint.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/trust/OmemoFingerprint.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.omemo; +package org.jivesoftware.smackx.omemo.trust; public class OmemoFingerprint implements CharSequence { diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/trust/TrustCallback.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/trust/TrustCallback.java index ff4e088e1..6850a9905 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/trust/TrustCallback.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/trust/TrustCallback.java @@ -16,7 +16,6 @@ */ package org.jivesoftware.smackx.omemo.trust; -import org.jivesoftware.smackx.omemo.OmemoFingerprint; import org.jivesoftware.smackx.omemo.internal.OmemoDevice; public interface TrustCallback { diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/util/OmemoKeyUtil.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/util/OmemoKeyUtil.java index 6958458b6..9cd2e7fee 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/util/OmemoKeyUtil.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/util/OmemoKeyUtil.java @@ -23,10 +23,10 @@ import java.util.TreeMap; import java.util.logging.Level; import java.util.logging.Logger; -import org.jivesoftware.smackx.omemo.OmemoFingerprint; import org.jivesoftware.smackx.omemo.element.OmemoBundleVAxolotlElement; import org.jivesoftware.smackx.omemo.exceptions.CorruptedOmemoKeyException; import org.jivesoftware.smackx.omemo.internal.OmemoDevice; +import org.jivesoftware.smackx.omemo.trust.OmemoFingerprint; import org.jxmpp.stringprep.XmppStringprepException; diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/util/OmemoMessageBuilder.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/util/OmemoMessageBuilder.java index 572f530ab..302a31029 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/util/OmemoMessageBuilder.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/util/OmemoMessageBuilder.java @@ -39,9 +39,8 @@ import javax.crypto.spec.SecretKeySpec; import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.util.StringUtils; -import org.jivesoftware.smackx.omemo.OmemoFingerprint; import org.jivesoftware.smackx.omemo.OmemoManager; -import org.jivesoftware.smackx.omemo.OmemoSessionManager; +import org.jivesoftware.smackx.omemo.OmemoRatchet; import org.jivesoftware.smackx.omemo.element.OmemoVAxolotlElement; import org.jivesoftware.smackx.omemo.exceptions.CannotEstablishOmemoSessionException; import org.jivesoftware.smackx.omemo.exceptions.CorruptedOmemoKeyException; @@ -49,6 +48,8 @@ import org.jivesoftware.smackx.omemo.exceptions.CryptoFailedException; import org.jivesoftware.smackx.omemo.exceptions.UndecidedOmemoIdentityException; import org.jivesoftware.smackx.omemo.internal.CiphertextTuple; import org.jivesoftware.smackx.omemo.internal.OmemoDevice; +import org.jivesoftware.smackx.omemo.trust.OmemoFingerprint; + /** * Class used to build OMEMO messages. @@ -65,7 +66,7 @@ import org.jivesoftware.smackx.omemo.internal.OmemoDevice; * @author Paul Schaub */ public class OmemoMessageBuilder { - private final OmemoSessionManager sessionManager; + private final OmemoRatchet ratchet; private final OmemoManager.KnownBareJidGuard managerGuard; private byte[] messageKey = generateKey(); @@ -78,7 +79,7 @@ public class OmemoMessageBuilder sessionManager, + OmemoRatchet ratchet, byte[] aesKey, byte[] iv) - throws NoSuchPaddingException, BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, + throws NoSuchPaddingException, BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, + IllegalBlockSizeException, UnsupportedEncodingException, NoSuchProviderException, InvalidAlgorithmParameterException { this.managerGuard = managerGuard; - this.sessionManager = sessionManager; + this.ratchet = ratchet; this.messageKey = aesKey; this.initializationVector = iv; } @@ -105,7 +107,7 @@ public class OmemoMessageBuilder sessionManager, + OmemoRatchet ratchet, String message) throws NoSuchPaddingException, BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, UnsupportedEncodingException, NoSuchProviderException, InvalidAlgorithmParameterException { this.managerGuard = managerGuard; - this.sessionManager = sessionManager; + this.ratchet = ratchet; this.setMessage(message); } @@ -208,7 +210,7 @@ public class OmemoMessageBuilder { protected final OmemoStore store; diff --git a/smack-omemo/src/test/java/org/jivesoftware/smack/omemo/util/EphemeralTrustCallback.java b/smack-omemo/src/test/java/org/jivesoftware/smack/omemo/util/EphemeralTrustCallback.java index bad302523..458a5f42f 100644 --- a/smack-omemo/src/test/java/org/jivesoftware/smack/omemo/util/EphemeralTrustCallback.java +++ b/smack-omemo/src/test/java/org/jivesoftware/smack/omemo/util/EphemeralTrustCallback.java @@ -18,8 +18,8 @@ package org.jivesoftware.smack.omemo.util; import java.util.HashMap; -import org.jivesoftware.smackx.omemo.OmemoFingerprint; import org.jivesoftware.smackx.omemo.internal.OmemoDevice; +import org.jivesoftware.smackx.omemo.trust.OmemoFingerprint; import org.jivesoftware.smackx.omemo.trust.TrustCallback; import org.jivesoftware.smackx.omemo.trust.TrustState;