]> nmode's Git Repositories - signal-cli/commitdiff
Extend error information in json output for received messages from untrusted identity
authorAsamK <asamk@gmx.de>
Sun, 22 Aug 2021 17:28:13 +0000 (19:28 +0200)
committerAsamK <asamk@gmx.de>
Sun, 22 Aug 2021 17:28:13 +0000 (19:28 +0200)
Fixes #91

src/main/java/org/asamk/signal/JsonReceiveMessageHandler.java
src/main/java/org/asamk/signal/json/JsonError.java
src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java

index 4cade79974c751ace9a818b9499ad9fb4a7a7931..73c88947c413abac3b3544d23673ef647ab61f05 100644 (file)
@@ -28,8 +28,9 @@ public class JsonReceiveMessageHandler implements Manager.ReceiveMessageHandler
         if (exception != null) {
             object.put("error", new JsonError(exception));
         }
+
         if (envelope != null) {
-            object.put("envelope", new JsonMessageEnvelope(envelope, content, m));
+            object.put("envelope", new JsonMessageEnvelope(envelope, content, exception, m));
         }
 
         jsonWriter.write(object);
index d8b3e5f5c555e75b746c7a159beec14bbc445976..45274dea3a4bbeaaca66d3de94d6e30b9be6c6eb 100644 (file)
@@ -7,7 +7,11 @@ public class JsonError {
     @JsonProperty
     final String message;
 
+    @JsonProperty
+    final String type;
+
     public JsonError(Throwable exception) {
         this.message = exception.getMessage();
+        this.type = exception.getClass().getSimpleName();
     }
 }
index c7a3f8910e79bba5d6ee3d01791da69f06ade562..e53b5ca55c35b3376743d7a8aedc043fff1ede90 100644 (file)
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 
 import org.asamk.Signal;
 import org.asamk.signal.manager.Manager;
+import org.signal.libsignal.metadata.ProtocolUntrustedIdentityException;
 import org.whispersystems.signalservice.api.messages.SignalServiceContent;
 import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
 import org.whispersystems.signalservice.api.util.InvalidNumberException;
@@ -59,7 +60,9 @@ public class JsonMessageEnvelope {
     @JsonInclude(JsonInclude.Include.NON_NULL)
     final JsonTypingMessage typingMessage;
 
-    public JsonMessageEnvelope(SignalServiceEnvelope envelope, SignalServiceContent content, Manager m) {
+    public JsonMessageEnvelope(
+            SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception, Manager m
+    ) {
         if (!envelope.isUnidentifiedSender() && envelope.hasSource()) {
             var source = envelope.getSourceAddress();
             this.source = getLegacyIdentifier(source);
@@ -74,6 +77,14 @@ public class JsonMessageEnvelope {
             this.sourceUuid = source.getUuid().transform(UUID::toString).orNull();
             this.sourceDevice = content.getSenderDevice();
             this.relay = null;
+        } else if (exception instanceof ProtocolUntrustedIdentityException) {
+            var e = (ProtocolUntrustedIdentityException) exception;
+            final var source = m.resolveSignalServiceAddress(e.getSender());
+            this.source = getLegacyIdentifier(source);
+            this.sourceNumber = source.getNumber().orNull();
+            this.sourceUuid = source.getUuid().transform(UUID::toString).orNull();
+            this.sourceDevice = e.getSenderDevice();
+            this.relay = null;
         } else {
             this.source = null;
             this.sourceNumber = null;