X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/de273586b4106171a3940ce5ec2c2b3712430c8c..d783df510a58b1dbed973cbc193a57b7ad700f68:/lib/src/main/java/org/asamk/signal/manager/DeviceLinkInfo.java diff --git a/lib/src/main/java/org/asamk/signal/manager/DeviceLinkInfo.java b/lib/src/main/java/org/asamk/signal/manager/DeviceLinkInfo.java index 82d8a37f..3e35aced 100644 --- a/lib/src/main/java/org/asamk/signal/manager/DeviceLinkInfo.java +++ b/lib/src/main/java/org/asamk/signal/manager/DeviceLinkInfo.java @@ -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); + } } }