From 2b71b20a3e99253232d0820d805358369b290b98 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Thu, 11 Jan 2018 12:53:40 +0100 Subject: [PATCH] Add method to manually decrypt OmemoElement --- .../smackx/omemo/OmemoManager.java | 24 +++++++++++++++++++ .../smackx/omemo/OmemoService.java | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) 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 6d8141747..e91f8ae37 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 @@ -61,6 +61,7 @@ import org.jivesoftware.smackx.omemo.exceptions.CannotEstablishOmemoSessionExcep import org.jivesoftware.smackx.omemo.exceptions.CorruptedOmemoKeyException; import org.jivesoftware.smackx.omemo.exceptions.CryptoFailedException; import org.jivesoftware.smackx.omemo.exceptions.NoOmemoSupportException; +import org.jivesoftware.smackx.omemo.exceptions.NoRawSessionException; import org.jivesoftware.smackx.omemo.exceptions.UndecidedOmemoIdentityException; import org.jivesoftware.smackx.omemo.internal.OmemoCachedDeviceList; import org.jivesoftware.smackx.omemo.internal.OmemoDevice; @@ -373,10 +374,33 @@ public final class OmemoManager extends Manager { } } + /** + * Manually decrypt an OmemoElement. + * This method should only be used for use-cases, where the internal listeners don't pick up on an incoming message. + * (for example MAM query results). + * + * @param sender bareJid of the message sender (must be the jid of the contact who sent the message) + * @param omemoElement omemoElement + * @return decrypted OmemoMessage + * + * @throws SmackException.NotLoggedInException if the Manager is not authenticated + * @throws CorruptedOmemoKeyException if our or their key is corrupted + * @throws NoRawSessionException if the message was not a preKeyMessage, but we had no session with the contact + * @throws CryptoFailedException if decryption fails + */ + public OmemoMessage.Received decrypt(BareJid sender, OmemoElement omemoElement) + throws SmackException.NotLoggedInException, CorruptedOmemoKeyException, NoRawSessionException, + CryptoFailedException + { + LoggedInOmemoManager managerGuard = new LoggedInOmemoManager(this); + return getOmemoService().decryptMessage(managerGuard, sender, omemoElement); + } + /** * Trust that a fingerprint belongs to an OmemoDevice. * The fingerprint must be the lowercase, hexadecimal fingerprint of the identityKey of the device and must * be of length 64. + * * @param device device * @param fingerprint fingerprint */ 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 753436101..4cb392d0e 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 @@ -433,7 +433,7 @@ public abstract class OmemoService