From 91b411abb5178376d8af0d1fdfa8ad9cd14cc87c Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 21 Nov 2024 14:55:54 -0400 Subject: [PATCH] Add new rules to log scrubber. --- .../securesms/service/webrtc/links/CallLinkRoomId.kt | 6 +++++- .../java/org/signal/core/util/logging/Scrubber.kt | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/links/CallLinkRoomId.kt b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/links/CallLinkRoomId.kt index ca2fcd3624..d6ff220261 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/links/CallLinkRoomId.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/links/CallLinkRoomId.kt @@ -10,6 +10,7 @@ import kotlinx.parcelize.Parcelize import okio.ByteString import okio.ByteString.Companion.toByteString import org.signal.core.util.Base64 +import org.signal.core.util.Hex import org.signal.core.util.Serializer import org.signal.ringrtc.CallLinkRootKey @@ -34,8 +35,11 @@ class CallLinkRoomId private constructor(private val roomId: ByteArray) : Parcel return roomId.contentHashCode() } + /** + * Prints call link room id as a hex string, explicitly for logging. + */ override fun toString(): String { - return DatabaseSerializer.serialize(this) + return Hex.toStringCondensed(roomId) } object DatabaseSerializer : Serializer { diff --git a/core-util-jvm/src/main/java/org/signal/core/util/logging/Scrubber.kt b/core-util-jvm/src/main/java/org/signal/core/util/logging/Scrubber.kt index 3766b5b5e8..288bd77015 100644 --- a/core-util-jvm/src/main/java/org/signal/core/util/logging/Scrubber.kt +++ b/core-util-jvm/src/main/java/org/signal/core/util/logging/Scrubber.kt @@ -75,6 +75,8 @@ object Scrubber { private val CALL_LINK_PATTERN = Pattern.compile("([bBcCdDfFgGhHkKmMnNpPqQrRsStTxXzZ]{4})(-[bBcCdDfFgGhHkKmMnNpPqQrRsStTxXzZ]{4}){7}") private const val CALL_LINK_CENSOR_SUFFIX = "-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX" + private val CALL_LINK_ROOM_ID_PATTERN = Pattern.compile("[0-9a-f]{61}([0-9a-f]{3})") + @JvmStatic @Volatile var identifierHmacKeyProvider: () -> ByteArray? = { null } @@ -97,6 +99,7 @@ object Scrubber { .scrubIpv4() .scrubIpv6() .scrubCallLinkKeys() + .scrubCallLinkRoomIds() } private fun CharSequence.scrubE164(): CharSequence { @@ -192,6 +195,15 @@ object Scrubber { } } + private fun CharSequence.scrubCallLinkRoomIds(): CharSequence { + return scrub(this, CALL_LINK_ROOM_ID_PATTERN) { matcher, output -> + val match = matcher.group(1) + output + .append("[REDACTED]") + .append(match) + } + } + private fun scrub(input: CharSequence, pattern: Pattern, processMatch: MatchProcessor): CharSequence { val output = StringBuilder(input.length) val matcher: Matcher = pattern.matcher(input)