mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-31 00:26:37 +00:00
New GV2 internal prefix and scrubber.
This commit is contained in:
committed by
Greyson Parrelli
parent
456857bbbd
commit
ff28d72db6
@@ -14,11 +14,12 @@ import java.security.SecureRandom;
|
||||
|
||||
public abstract class GroupId {
|
||||
|
||||
private static final String ENCODED_SIGNAL_GROUP_PREFIX = "__textsecure_group__!";
|
||||
private static final String ENCODED_MMS_GROUP_PREFIX = "__signal_mms_group__!";
|
||||
private static final int MMS_BYTE_LENGTH = 16;
|
||||
private static final int V1_MMS_BYTE_LENGTH = 16;
|
||||
private static final int V2_BYTE_LENGTH = GroupIdentifier.SIZE;
|
||||
private static final String ENCODED_SIGNAL_GROUP_V1_PREFIX = "__textsecure_group__!";
|
||||
private static final String ENCODED_SIGNAL_GROUP_V2_PREFIX = "__signal_group__v2__!";
|
||||
private static final String ENCODED_MMS_GROUP_PREFIX = "__signal_mms_group__!";
|
||||
private static final int MMS_BYTE_LENGTH = 16;
|
||||
private static final int V1_MMS_BYTE_LENGTH = 16;
|
||||
private static final int V2_BYTE_LENGTH = GroupIdentifier.SIZE;
|
||||
|
||||
private final String encodedId;
|
||||
|
||||
@@ -106,7 +107,11 @@ public abstract class GroupId {
|
||||
|
||||
byte[] bytes = extractDecodedId(encodedGroupId);
|
||||
|
||||
return encodedGroupId.startsWith(ENCODED_MMS_GROUP_PREFIX) ? mms(bytes) : push(bytes);
|
||||
if (encodedGroupId.startsWith(ENCODED_SIGNAL_GROUP_V2_PREFIX)) return v2(bytes);
|
||||
else if (encodedGroupId.startsWith(ENCODED_SIGNAL_GROUP_V1_PREFIX)) return v1(bytes);
|
||||
else if (encodedGroupId.startsWith(ENCODED_MMS_GROUP_PREFIX)) return mms(bytes);
|
||||
|
||||
throw new BadGroupIdException();
|
||||
} catch (IOException e) {
|
||||
throw new BadGroupIdException(e);
|
||||
}
|
||||
@@ -129,7 +134,9 @@ public abstract class GroupId {
|
||||
}
|
||||
|
||||
public static boolean isEncodedGroup(@NonNull String groupId) {
|
||||
return groupId.startsWith(ENCODED_SIGNAL_GROUP_PREFIX) || groupId.startsWith(ENCODED_MMS_GROUP_PREFIX);
|
||||
return groupId.startsWith(ENCODED_SIGNAL_GROUP_V2_PREFIX) ||
|
||||
groupId.startsWith(ENCODED_SIGNAL_GROUP_V1_PREFIX) ||
|
||||
groupId.startsWith(ENCODED_MMS_GROUP_PREFIX);
|
||||
}
|
||||
|
||||
private static byte[] extractDecodedId(@NonNull String encodedGroupId) throws IOException {
|
||||
@@ -220,8 +227,8 @@ public abstract class GroupId {
|
||||
}
|
||||
|
||||
public static abstract class Push extends GroupId {
|
||||
private Push(@NonNull byte[] bytes) {
|
||||
super(ENCODED_SIGNAL_GROUP_PREFIX, bytes);
|
||||
private Push(@NonNull String prefix, @NonNull byte[] bytes) {
|
||||
super(prefix, bytes);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -238,7 +245,7 @@ public abstract class GroupId {
|
||||
public static final class V1 extends GroupId.Push {
|
||||
|
||||
private V1(@NonNull byte[] bytes) {
|
||||
super(bytes);
|
||||
super(ENCODED_SIGNAL_GROUP_V1_PREFIX, bytes);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -255,7 +262,7 @@ public abstract class GroupId {
|
||||
public static final class V2 extends GroupId.Push {
|
||||
|
||||
private V2(@NonNull byte[] bytes) {
|
||||
super(bytes);
|
||||
super(ENCODED_SIGNAL_GROUP_V2_PREFIX, bytes);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
|
||||
package org.thoughtcrime.securesms.logsubmit.util;
|
||||
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
@@ -49,8 +47,14 @@ public final class Scrubber {
|
||||
/**
|
||||
* The middle group will be censored.
|
||||
*/
|
||||
private static final Pattern GROUP_ID_PATTERN = Pattern.compile("(__)(textsecure_group__![^\\s]+)([^\\s]{2})");
|
||||
private static final String GROUP_ID_CENSOR = "...group...";
|
||||
private static final Pattern GROUP_ID_V1_PATTERN = Pattern.compile("(__)(textsecure_group__![^\\s]+)([^\\s]{2})");
|
||||
private static final String GROUP_ID_V1_CENSOR = "...group...";
|
||||
|
||||
/**
|
||||
* The middle group will be censored.
|
||||
*/
|
||||
private static final Pattern GROUP_ID_V2_PATTERN = Pattern.compile("(__)(signal_group__v2__![^\\s]+)([^\\s]{2})");
|
||||
private static final String GROUP_ID_V2_CENSOR = "...group_v2...";
|
||||
|
||||
/**
|
||||
* The middle group will be censored.
|
||||
@@ -62,7 +66,8 @@ public final class Scrubber {
|
||||
|
||||
in = scrubE164(in);
|
||||
in = scrubEmail(in);
|
||||
in = scrubGroups(in);
|
||||
in = scrubGroupsV1(in);
|
||||
in = scrubGroupsV2(in);
|
||||
in = scrubUuids(in);
|
||||
|
||||
return in;
|
||||
@@ -83,11 +88,19 @@ public final class Scrubber {
|
||||
.append(EMAIL_CENSOR));
|
||||
}
|
||||
|
||||
private static CharSequence scrubGroups(@NonNull CharSequence in) {
|
||||
private static CharSequence scrubGroupsV1(@NonNull CharSequence in) {
|
||||
return scrub(in,
|
||||
GROUP_ID_PATTERN,
|
||||
GROUP_ID_V1_PATTERN,
|
||||
(matcher, output) -> output.append(matcher.group(1))
|
||||
.append(GROUP_ID_CENSOR)
|
||||
.append(GROUP_ID_V1_CENSOR)
|
||||
.append(matcher.group(3)));
|
||||
}
|
||||
|
||||
private static CharSequence scrubGroupsV2(@NonNull CharSequence in) {
|
||||
return scrub(in,
|
||||
GROUP_ID_V2_PATTERN,
|
||||
(matcher, output) -> output.append(matcher.group(1))
|
||||
.append(GROUP_ID_V2_CENSOR)
|
||||
.append(matcher.group(3)));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user