X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/ac18006abb2538b97c4d1e9ad658795748264d90..6f5e72119e0c996f1efefecda11e33422d44a171:/src/main/java/org/asamk/signal/ReceiveMessageHandler.java diff --git a/src/main/java/org/asamk/signal/ReceiveMessageHandler.java b/src/main/java/org/asamk/signal/ReceiveMessageHandler.java index 15dbd1af..35790678 100644 --- a/src/main/java/org/asamk/signal/ReceiveMessageHandler.java +++ b/src/main/java/org/asamk/signal/ReceiveMessageHandler.java @@ -8,6 +8,7 @@ import org.asamk.signal.manager.groups.GroupUtils; import org.asamk.signal.util.DateUtils; import org.asamk.signal.util.Util; import org.slf4j.helpers.MessageFormatter; +import org.whispersystems.libsignal.protocol.DecryptionErrorMessage; import org.whispersystems.signalservice.api.messages.SignalServiceAttachment; import org.whispersystems.signalservice.api.messages.SignalServiceContent; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; @@ -60,13 +61,13 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { final var recipientName = getLegacyIdentifier(m.resolveSignalServiceAddress(e.getSender())); writer.println( "Use 'signal-cli -u {} listIdentities -n {}', verify the key and run 'signal-cli -u {} trust -v \"FINGER_PRINT\" {}' to mark it as trusted", - m.getUsername(), + m.getSelfNumber(), recipientName, - m.getUsername(), + m.getSelfNumber(), recipientName); writer.println( "If you don't care about security, use 'signal-cli -u {} trust -a {}' to trust it without verification", - m.getUsername(), + m.getSelfNumber(), recipientName); } else { writer.println("Exception: {} ({})", exception.getMessage(), exception.getClass().getSimpleName()); @@ -113,6 +114,11 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { var typingMessage = content.getTypingMessage().get(); printTypingMessage(writer.indentedWriter(), typingMessage); } + if (content.getDecryptionErrorMessage().isPresent()) { + writer.println("Received a decryption error message (resend request)"); + var decryptionErrorMessage = content.getDecryptionErrorMessage().get(); + printDecryptionErrorMessage(writer.indentedWriter(), decryptionErrorMessage); + } } } else { writer.println("Unknown message received."); @@ -215,6 +221,15 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { } } + private void printDecryptionErrorMessage( + final PlainTextWriter writer, final DecryptionErrorMessage decryptionErrorMessage + ) { + writer.println("Device id: {}", decryptionErrorMessage.getDeviceId()); + writer.println("Timestamp: {}", DateUtils.formatTimestamp(decryptionErrorMessage.getTimestamp())); + writer.println("Ratchet key: {}", + decryptionErrorMessage.getRatchetKey().isPresent() ? "is present" : "not present"); + } + private void printReceiptMessage( final PlainTextWriter writer, final SignalServiceReceiptMessage receiptMessage ) { @@ -642,7 +657,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { private void printMention( PlainTextWriter writer, SignalServiceDataMessage.Mention mention ) { - final var address = m.resolveSignalServiceAddress(mention.getUuid()); + final var address = m.resolveSignalServiceAddress(new SignalServiceAddress(mention.getUuid())); writer.println("- {}: {} (length: {})", formatContact(address), mention.getStart(), mention.getLength()); }