]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/DeviceLinkInfo.java
Add Pair record
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / DeviceLinkInfo.java
index 82d8a37fb9722978d0a6de57d3c395c638133c71..3e35acedcfd7927416f62b33446a30c709bfd5da 100644 (file)
@@ -5,6 +5,7 @@ import org.whispersystems.libsignal.ecc.Curve;
 import org.whispersystems.libsignal.ecc.ECPublicKey;
 
 import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
@@ -14,10 +15,7 @@ import java.util.Map;
 
 import static org.whispersystems.signalservice.internal.util.Util.isEmpty;
 
-public class DeviceLinkInfo {
-
-    final String deviceIdentifier;
-    final ECPublicKey deviceKey;
+public record DeviceLinkInfo(String deviceIdentifier, ECPublicKey deviceKey) {
 
     public static DeviceLinkInfo parseDeviceLinkUri(URI linkUri) throws InvalidKeyException {
         final var rawQuery = linkUri.getRawQuery();
@@ -56,16 +54,15 @@ public class DeviceLinkInfo {
         return map;
     }
 
-    public DeviceLinkInfo(final String deviceIdentifier, final ECPublicKey deviceKey) {
-        this.deviceIdentifier = deviceIdentifier;
-        this.deviceKey = deviceKey;
-    }
-
-    public String createDeviceLinkUri() {
+    public URI createDeviceLinkUri() {
         final var deviceKeyString = Base64.getEncoder().encodeToString(deviceKey.serialize()).replace("=", "");
-        return "tsdevice:/?uuid="
-                + URLEncoder.encode(deviceIdentifier, StandardCharsets.UTF_8)
-                + "&pub_key="
-                + URLEncoder.encode(deviceKeyString, StandardCharsets.UTF_8);
+        try {
+            return new URI("sgnl://linkdevice?uuid="
+                    + URLEncoder.encode(deviceIdentifier, StandardCharsets.UTF_8)
+                    + "&pub_key="
+                    + URLEncoder.encode(deviceKeyString, StandardCharsets.UTF_8));
+        } catch (URISyntaxException e) {
+            throw new AssertionError(e);
+        }
     }
 }