]> nmode's Git Repositories - signal-cli/commitdiff
Canonicalize number when listing identities
authorAsamK <asamk@gmx.de>
Tue, 21 Jan 2020 21:09:21 +0000 (22:09 +0100)
committerAsamK <asamk@gmx.de>
Tue, 21 Jan 2020 21:09:21 +0000 (22:09 +0100)
src/main/java/org/asamk/signal/commands/ListIdentitiesCommand.java
src/main/java/org/asamk/signal/manager/Manager.java

index 14250eeaa51e0dfe771b580b462f1c0d7cdd24e4..dd3e5e46be71793720dc750bc887eb8ac86f7e20 100644 (file)
@@ -7,6 +7,8 @@ import org.asamk.signal.manager.Manager;
 import org.asamk.signal.storage.protocol.JsonIdentityKeyStore;
 import org.asamk.signal.util.Hex;
 import org.asamk.signal.util.Util;
+import org.whispersystems.libsignal.util.Pair;
+import org.whispersystems.signalservice.api.util.InvalidNumberException;
 
 import java.util.List;
 import java.util.Map;
@@ -39,8 +41,13 @@ public class ListIdentitiesCommand implements LocalCommand {
             }
         } else {
             String number = ns.getString("number");
-            for (JsonIdentityKeyStore.Identity id : m.getIdentities(number)) {
-                printIdentityFingerprint(m, number, id);
+            try {
+                Pair<String, List<JsonIdentityKeyStore.Identity>> key = m.getIdentities(number);
+                for (JsonIdentityKeyStore.Identity id : key.second()) {
+                    printIdentityFingerprint(m, key.first(), id);
+                }
+            } catch (InvalidNumberException e) {
+                System.out.println("Invalid number: " + e.getMessage());
             }
         }
         return 0;
index 50da5f23f748c725e6764d5b7e5357eb6273b5da..37091ad056d151b70b78d3bc79a91d10167e1bda 100644 (file)
@@ -53,6 +53,7 @@ import org.whispersystems.libsignal.state.PreKeyRecord;
 import org.whispersystems.libsignal.state.SignedPreKeyRecord;
 import org.whispersystems.libsignal.util.KeyHelper;
 import org.whispersystems.libsignal.util.Medium;
+import org.whispersystems.libsignal.util.Pair;
 import org.whispersystems.libsignal.util.guava.Optional;
 import org.whispersystems.signalservice.api.SignalServiceAccountManager;
 import org.whispersystems.signalservice.api.SignalServiceMessagePipe;
@@ -1545,8 +1546,9 @@ public class Manager implements Signal {
         return account.getSignalProtocolStore().getIdentities();
     }
 
-    public List<JsonIdentityKeyStore.Identity> getIdentities(String number) {
-        return account.getSignalProtocolStore().getIdentities(number);
+    public Pair<String, List<JsonIdentityKeyStore.Identity>> getIdentities(String number) throws InvalidNumberException {
+        String canonicalizedNumber = Utils.canonicalizeNumber(number, username);
+        return new Pair<>(canonicalizedNumber, account.getSignalProtocolStore().getIdentities(canonicalizedNumber));
     }
 
     /**