kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix envelope type conversion.
rodzic
6bd689504c
commit
0a7a7cf5a9
|
@ -43,6 +43,7 @@ import org.thoughtcrime.securesms.recipients.Recipient;
|
||||||
import org.thoughtcrime.securesms.util.FeatureFlags;
|
import org.thoughtcrime.securesms.util.FeatureFlags;
|
||||||
import org.thoughtcrime.securesms.util.GroupUtil;
|
import org.thoughtcrime.securesms.util.GroupUtil;
|
||||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||||
|
import org.whispersystems.libsignal.protocol.CiphertextMessage;
|
||||||
import org.whispersystems.libsignal.protocol.DecryptionErrorMessage;
|
import org.whispersystems.libsignal.protocol.DecryptionErrorMessage;
|
||||||
import org.whispersystems.libsignal.state.SignalProtocolStore;
|
import org.whispersystems.libsignal.state.SignalProtocolStore;
|
||||||
import org.whispersystems.libsignal.util.guava.Optional;
|
import org.whispersystems.libsignal.util.guava.Optional;
|
||||||
|
@ -51,6 +52,7 @@ import org.whispersystems.signalservice.api.crypto.SignalServiceCipher;
|
||||||
import org.whispersystems.signalservice.api.messages.SignalServiceContent;
|
import org.whispersystems.signalservice.api.messages.SignalServiceContent;
|
||||||
import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
|
import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
|
||||||
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
|
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
|
||||||
|
import org.whispersystems.signalservice.internal.push.SignalServiceProtos;
|
||||||
import org.whispersystems.signalservice.internal.push.UnsupportedDataMessageException;
|
import org.whispersystems.signalservice.internal.push.UnsupportedDataMessageException;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
@ -171,7 +173,7 @@ public final class MessageDecryptionUtil {
|
||||||
envelopeType = protocolException.getUnidentifiedSenderMessageContent().get().getType();
|
envelopeType = protocolException.getUnidentifiedSenderMessageContent().get().getType();
|
||||||
} else {
|
} else {
|
||||||
originalContent = envelope.getContent();
|
originalContent = envelope.getContent();
|
||||||
envelopeType = envelope.getType();
|
envelopeType = envelopeTypeToCiphertextMessageType(envelope.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
DecryptionErrorMessage decryptionErrorMessage = DecryptionErrorMessage.forOriginalMessage(originalContent, envelopeType, envelope.getTimestamp(), senderDevice);
|
DecryptionErrorMessage decryptionErrorMessage = DecryptionErrorMessage.forOriginalMessage(originalContent, envelopeType, envelope.getTimestamp(), senderDevice);
|
||||||
|
@ -179,7 +181,6 @@ public final class MessageDecryptionUtil {
|
||||||
return new SendRetryReceiptJob(sender.getId(), groupId, decryptionErrorMessage);
|
return new SendRetryReceiptJob(sender.getId(), groupId, decryptionErrorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static ExceptionMetadata toExceptionMetadata(@NonNull UnsupportedDataMessageException e)
|
private static ExceptionMetadata toExceptionMetadata(@NonNull UnsupportedDataMessageException e)
|
||||||
throws NoSenderException
|
throws NoSenderException
|
||||||
{
|
{
|
||||||
|
@ -220,6 +221,16 @@ public final class MessageDecryptionUtil {
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int envelopeTypeToCiphertextMessageType(int envelopeType) {
|
||||||
|
switch (envelopeType) {
|
||||||
|
case SignalServiceProtos.Envelope.Type.CIPHERTEXT_VALUE: return CiphertextMessage.WHISPER_TYPE;
|
||||||
|
case SignalServiceProtos.Envelope.Type.PREKEY_BUNDLE_VALUE: return CiphertextMessage.PREKEY_TYPE;
|
||||||
|
case SignalServiceProtos.Envelope.Type.UNIDENTIFIED_SENDER_VALUE: return CiphertextMessage.SENDERKEY_TYPE;
|
||||||
|
case SignalServiceProtos.Envelope.Type.PLAINTEXT_CONTENT_VALUE: return CiphertextMessage.PLAINTEXT_CONTENT_TYPE;
|
||||||
|
default: return CiphertextMessage.WHISPER_TYPE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static class NoSenderException extends Exception {}
|
private static class NoSenderException extends Exception {}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue