Fix envelope type conversion.

fork-5.53.8
Greyson Parrelli 2021-07-14 16:58:39 -04:00
rodzic 6bd689504c
commit 0a7a7cf5a9
1 zmienionych plików z 13 dodań i 2 usunięć

Wyświetl plik

@ -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 {}