]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/ReceiveMessageHandler.java
Renew session if message decryption fails with ProtocolInvalidMessageException
[signal-cli] / src / main / java / org / asamk / signal / ReceiveMessageHandler.java
index b59eeee251035ef4b71c2720300342c70f3438bb..ce4f10686e630077cca42b560b910e5081b9157c 100644 (file)
@@ -18,6 +18,7 @@ import org.whispersystems.signalservice.api.messages.calls.SignalServiceCallMess
 import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage;
 import org.whispersystems.signalservice.api.messages.shared.SharedContact;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
+import org.whispersystems.signalservice.api.util.InvalidNumberException;
 
 import java.io.IOException;
 import java.util.Base64;
@@ -67,20 +68,23 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
                     var e = (UntrustedIdentityException) exception;
                     writer.println(
                             "The user’s key is untrusted, either the user has reinstalled Signal or a third party sent this message.");
+                    final var recipientName = m.resolveSignalServiceAddress(e.getName()).getLegacyIdentifier();
                     writer.println(
-                            "Use 'signal-cli -u {0} listIdentities -n {1}', verify the key and run 'signal-cli -u {0} trust -v \"FINGER_PRINT\" {1}' to mark it as trusted",
+                            "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(),
-                            e.getName());
+                            recipientName,
+                            m.getUsername(),
+                            recipientName);
                     writer.println(
                             "If you don't care about security, use 'signal-cli -u {} trust -a {}' to trust it without verification",
                             m.getUsername(),
-                            e.getName());
+                            recipientName);
                 } else {
                     writer.println("Exception: {} ({})", exception.getMessage(), exception.getClass().getSimpleName());
                 }
             }
             if (content == null) {
-                writer.println("Failed to decrypt message.");
+                writer.println("No message content");
             } else {
                 writer.println("Sender: {} (device: {})",
                         formatContact(content.getSender()),
@@ -664,7 +668,11 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
 
     private String formatContact(SignalServiceAddress address) {
         final var number = address.getLegacyIdentifier();
-        var name = m.getContactOrProfileName(number);
+        String name = null;
+        try {
+            name = m.getContactOrProfileName(number);
+        } catch (InvalidNumberException ignored) {
+        }
         if (name == null || name.isEmpty()) {
             return number;
         } else {