make session completion work with untrusted devices as well
This commit is contained in:
parent
ffe610f961
commit
18a8a6e5ac
|
@ -1437,7 +1437,7 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
|
|||
|
||||
private void completeSession(XmppAxolotlSession session) {
|
||||
final XmppAxolotlMessage axolotlMessage = new XmppAxolotlMessage(account.getJid().asBareJid(), getOwnDeviceId());
|
||||
axolotlMessage.addDevice(session);
|
||||
axolotlMessage.addDevice(session, true);
|
||||
try {
|
||||
Jid jid = Jid.of(session.getRemoteAddress().getName());
|
||||
MessagePacket packet = mXmppConnectionService.getMessageGenerator().generateKeyTransportMessage(jid, axolotlMessage);
|
||||
|
|
|
@ -218,16 +218,20 @@ public class XmppAxolotlMessage {
|
|||
return this.from;
|
||||
}
|
||||
|
||||
public int getSenderDeviceId() {
|
||||
int getSenderDeviceId() {
|
||||
return sourceDeviceId;
|
||||
}
|
||||
|
||||
public void addDevice(XmppAxolotlSession session) {
|
||||
void addDevice(XmppAxolotlSession session) {
|
||||
addDevice(session, false);
|
||||
}
|
||||
|
||||
void addDevice(XmppAxolotlSession session, boolean ignoreSessionTrust) {
|
||||
XmppAxolotlSession.AxolotlKey key;
|
||||
if (authtagPlusInnerKey != null) {
|
||||
key = session.processSending(authtagPlusInnerKey);
|
||||
key = session.processSending(authtagPlusInnerKey, ignoreSessionTrust);
|
||||
} else {
|
||||
key = session.processSending(innerKey);
|
||||
key = session.processSending(innerKey, ignoreSessionTrust);
|
||||
}
|
||||
if (key != null) {
|
||||
keys.put(session.getRemoteAddress().getDeviceId(), key);
|
||||
|
|
|
@ -118,9 +118,9 @@ public class XmppAxolotlSession implements Comparable<XmppAxolotlSession> {
|
|||
}
|
||||
|
||||
@Nullable
|
||||
public AxolotlKey processSending(@NonNull byte[] outgoingMessage) {
|
||||
public AxolotlKey processSending(@NonNull byte[] outgoingMessage, boolean ignoreSessionTrust) {
|
||||
FingerprintStatus status = getTrust();
|
||||
if (status.isTrustedAndActive()) {
|
||||
if (ignoreSessionTrust || status.isTrustedAndActive()) {
|
||||
try {
|
||||
CiphertextMessage ciphertextMessage = cipher.encrypt(outgoingMessage);
|
||||
return new AxolotlKey(ciphertextMessage.serialize(),ciphertextMessage.getType() == CiphertextMessage.PREKEY_TYPE);
|
||||
|
|
Loading…
Reference in a new issue