From 19afd5c0e6178f5cad6e0195f458decf9a083ce7 Mon Sep 17 00:00:00 2001 From: andrew-signal Date: Mon, 27 Oct 2025 12:19:11 -0400 Subject: [PATCH] Optimize padding block size based on real world experience. --- .../internal/push/PushTransportDetails.java | 7 ++++--- .../api/push/PushTransportDetailsTest.kt | 16 ++++++++-------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushTransportDetails.java b/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushTransportDetails.java index 937a6da3b8..e67ce7d8fc 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushTransportDetails.java +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushTransportDetails.java @@ -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; } } diff --git a/libsignal-service/src/test/java/org/whispersystems/signalservice/api/push/PushTransportDetailsTest.kt b/libsignal-service/src/test/java/org/whispersystems/signalservice/api/push/PushTransportDetailsTest.kt index 0894ad1c31..873e8345f7 100644 --- a/libsignal-service/src/test/java/org/whispersystems/signalservice/api/push/PushTransportDetailsTest.kt +++ b/libsignal-service/src/test/java/org/whispersystems/signalservice/api/push/PushTransportDetailsTest.kt @@ -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) } } }