Optimize padding block size based on real world experience.

This commit is contained in:
andrew-signal
2025-10-29 14:33:50 -04:00
committed by jeffrey-signal
parent 5a9c546dac
commit 19afd5c0e6
2 changed files with 12 additions and 11 deletions
@@ -12,6 +12,7 @@ import org.signal.libsignal.protocol.logging.Log;
public class PushTransportDetails {
private static final String TAG = PushTransportDetails.class.getSimpleName();
private static final int PADDING_BLOCK_SIZE = 80;
public byte[] getStrippedPaddingMessageBody(byte[] messageWithPadding) {
@@ -46,12 +47,12 @@ public class PushTransportDetails {
private int getPaddedMessageLength(int messageLength) {
int messageLengthWithTerminator = messageLength + 1;
int messagePartCount = messageLengthWithTerminator / 160;
int messagePartCount = messageLengthWithTerminator / PADDING_BLOCK_SIZE;
if (messageLengthWithTerminator % 160 != 0) {
if (messageLengthWithTerminator % PADDING_BLOCK_SIZE != 0) {
messagePartCount++;
}
return messagePartCount * 160;
return messagePartCount * PADDING_BLOCK_SIZE;
}
}
@@ -15,19 +15,19 @@ class PushTransportDetailsTest {
@Test
fun testV3Padding() {
(0 until 159).forEach { i ->
(0 until 79).forEach { i ->
val message = ByteArray(i)
assertThat(transportV3.getPaddedMessageBody(message)).hasSize(79)
}
(79 until 159).forEach { i ->
val message = ByteArray(i)
assertThat(transportV3.getPaddedMessageBody(message)).hasSize(159)
}
(159 until 319).forEach { i ->
(159 until 239).forEach { i ->
val message = ByteArray(i)
assertThat(transportV3.getPaddedMessageBody(message)).hasSize(319)
}
(319 until 479).forEach { i ->
val message = ByteArray(i)
assertThat(transportV3.getPaddedMessageBody(message)).hasSize(479)
assertThat(transportV3.getPaddedMessageBody(message)).hasSize(239)
}
}
}