]>
nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/groups/GroupId.java
1 package org
.asamk
.signal
.manager
.groups
;
3 import java
.util
.Arrays
;
4 import java
.util
.Base64
;
6 public abstract class GroupId
{
8 private final byte[] id
;
10 public static GroupIdV1
v1(byte[] id
) {
11 return new GroupIdV1(id
);
14 public static GroupIdV2
v2(byte[] id
) {
15 return new GroupIdV2(id
);
18 public static GroupId
unknownVersion(byte[] id
) {
19 if (id
.length
== 16) {
20 return new GroupIdV1(id
);
21 } else if (id
.length
== 32) {
22 return new GroupIdV2(id
);
25 throw new AssertionError("Invalid group id of size " + id
.length
);
28 public static GroupId
fromBase64(String id
) throws GroupIdFormatException
{
30 return unknownVersion(java
.util
.Base64
.getDecoder().decode(id
));
31 } catch (Throwable e
) {
32 throw new GroupIdFormatException(id
, e
);
36 protected GroupId(final byte[] id
) {
40 public byte[] serialize() {
44 public String
toBase64() {
45 return Base64
.getEncoder().encodeToString(id
);
49 public boolean equals(final Object o
) {
50 if (this == o
) return true;
51 if (o
== null || getClass() != o
.getClass()) return false;
53 final GroupId groupId
= (GroupId
) o
;
55 return Arrays
.equals(id
, groupId
.id
);
59 public int hashCode() {
60 return Arrays
.hashCode(id
);