mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-05 19:55:59 +01:00
Add method to manually decrypt OmemoElement
This commit is contained in:
parent
0a681f7353
commit
2b71b20a3e
2 changed files with 25 additions and 1 deletions
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -433,7 +433,7 @@ public abstract class OmemoService<T_IdKeyPair, T_IdKey, T_PreKey, T_SigPreKey,
|
|||
* @throws CryptoFailedException if decryption fails.
|
||||
* @throws NoRawSessionException if we have no session with the device and it sent a normal (non-preKey) message.
|
||||
*/
|
||||
private OmemoMessage.Received decryptMessage(OmemoManager.LoggedInOmemoManager managerGuard,
|
||||
OmemoMessage.Received decryptMessage(OmemoManager.LoggedInOmemoManager managerGuard,
|
||||
BareJid senderJid,
|
||||
OmemoElement omemoElement)
|
||||
throws CorruptedOmemoKeyException, CryptoFailedException, NoRawSessionException
|
||||
|
|
Loading…
Reference in a new issue