package org.asamk.signal.manager.api;
-import com.google.protobuf.ByteString;
-
import org.asamk.signal.manager.groups.GroupLinkPassword;
import org.signal.libsignal.zkgroup.InvalidInputException;
import org.signal.libsignal.zkgroup.groups.GroupMasterKey;
import java.net.URI;
import java.net.URISyntaxException;
+import okio.ByteString;
+
public final class GroupInviteLinkUrl {
private static final String GROUP_URL_HOST = "signal.group";
public static GroupInviteLinkUrl forGroup(GroupMasterKey groupMasterKey, DecryptedGroup group) {
return new GroupInviteLinkUrl(groupMasterKey,
- GroupLinkPassword.fromBytes(group.getInviteLinkPassword().toByteArray()));
+ GroupLinkPassword.fromBytes(group.inviteLinkPassword.toByteArray()));
}
/**
}
var bytes = Base64UrlSafe.decodePaddingAgnostic(encoding);
- var groupInviteLink = GroupInviteLink.parseFrom(bytes);
-
- switch (groupInviteLink.getContentsCase()) {
- case V1CONTENTS -> {
- var groupInviteLinkContentsV1 = groupInviteLink.getV1Contents();
- var groupMasterKey = new GroupMasterKey(groupInviteLinkContentsV1.getGroupMasterKey()
- .toByteArray());
- var password = GroupLinkPassword.fromBytes(groupInviteLinkContentsV1.getInviteLinkPassword()
- .toByteArray());
-
- return new GroupInviteLinkUrl(groupMasterKey, password);
- }
- default -> throw new UnknownGroupLinkVersionException("Url contains no known group link content");
+ GroupInviteLink groupInviteLink = GroupInviteLink.ADAPTER.decode(bytes);
+
+ if (groupInviteLink.v1Contents != null) {
+ var groupInviteLinkContentsV1 = groupInviteLink.v1Contents;
+ var groupMasterKey = new GroupMasterKey(groupInviteLinkContentsV1.groupMasterKey.toByteArray());
+ var password = GroupLinkPassword.fromBytes(groupInviteLinkContentsV1.inviteLinkPassword.toByteArray());
+
+ return new GroupInviteLinkUrl(groupMasterKey, password);
+ } else {
+ throw new UnknownGroupLinkVersionException("Url contains no known group link content");
}
} catch (InvalidInputException | IOException e) {
throw new InvalidGroupLinkException(e);
}
private static String createUrl(GroupMasterKey groupMasterKey, GroupLinkPassword password) {
- var groupInviteLink = GroupInviteLink.newBuilder()
- .setV1Contents(GroupInviteLink.GroupInviteLinkContentsV1.newBuilder()
- .setGroupMasterKey(ByteString.copyFrom(groupMasterKey.serialize()))
- .setInviteLinkPassword(ByteString.copyFrom(password.serialize())))
- .build();
+ var groupInviteLink = new GroupInviteLink.Builder().v1Contents(new GroupInviteLink.GroupInviteLinkContentsV1.Builder().groupMasterKey(
+ ByteString.of(groupMasterKey.serialize()))
+ .inviteLinkPassword(ByteString.of(password.serialize()))
+ .build()).build();
- var encoding = Base64UrlSafe.encodeBytesWithoutPadding(groupInviteLink.toByteArray());
+ var encoding = Base64UrlSafe.encodeBytesWithoutPadding(groupInviteLink.encode());
return GROUP_URL_PREFIX + encoding;
}