Add new rules to log scrubber.

This commit is contained in:
Alex Hart
2024-11-21 14:55:54 -04:00
committed by Greyson Parrelli
parent b7464ffca9
commit 91b411abb5
2 changed files with 17 additions and 1 deletions

View File

@@ -10,6 +10,7 @@ import kotlinx.parcelize.Parcelize
import okio.ByteString import okio.ByteString
import okio.ByteString.Companion.toByteString import okio.ByteString.Companion.toByteString
import org.signal.core.util.Base64 import org.signal.core.util.Base64
import org.signal.core.util.Hex
import org.signal.core.util.Serializer import org.signal.core.util.Serializer
import org.signal.ringrtc.CallLinkRootKey import org.signal.ringrtc.CallLinkRootKey
@@ -34,8 +35,11 @@ class CallLinkRoomId private constructor(private val roomId: ByteArray) : Parcel
return roomId.contentHashCode() return roomId.contentHashCode()
} }
/**
* Prints call link room id as a hex string, explicitly for logging.
*/
override fun toString(): String { override fun toString(): String {
return DatabaseSerializer.serialize(this) return Hex.toStringCondensed(roomId)
} }
object DatabaseSerializer : Serializer<CallLinkRoomId, String> { object DatabaseSerializer : Serializer<CallLinkRoomId, String> {

View File

@@ -75,6 +75,8 @@ object Scrubber {
private val CALL_LINK_PATTERN = Pattern.compile("([bBcCdDfFgGhHkKmMnNpPqQrRsStTxXzZ]{4})(-[bBcCdDfFgGhHkKmMnNpPqQrRsStTxXzZ]{4}){7}") 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 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 @JvmStatic
@Volatile @Volatile
var identifierHmacKeyProvider: () -> ByteArray? = { null } var identifierHmacKeyProvider: () -> ByteArray? = { null }
@@ -97,6 +99,7 @@ object Scrubber {
.scrubIpv4() .scrubIpv4()
.scrubIpv6() .scrubIpv6()
.scrubCallLinkKeys() .scrubCallLinkKeys()
.scrubCallLinkRoomIds()
} }
private fun CharSequence.scrubE164(): CharSequence { 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 { private fun scrub(input: CharSequence, pattern: Pattern, processMatch: MatchProcessor): CharSequence {
val output = StringBuilder(input.length) val output = StringBuilder(input.length)
val matcher: Matcher = pattern.matcher(input) val matcher: Matcher = pattern.matcher(input)