Add support for call link epochs.

This commit is contained in:
emir-signal
2025-07-03 15:07:34 -04:00
committed by Alex Hart
parent 5d0f71e02c
commit b42dcece48
34 changed files with 211 additions and 71 deletions

View File

@@ -6,6 +6,7 @@
package org.thoughtcrime.securesms.backup.v2.database
import android.database.Cursor
import okio.ByteString
import okio.ByteString.Companion.toByteString
import org.signal.core.util.nullIfEmpty
import org.signal.ringrtc.CallLinkState
@@ -40,6 +41,7 @@ class CallLinkArchiveExporter(private val cursor: Cursor) : Iterator<ArchiveReci
id = callLink.recipientId.toLong(),
callLink = CallLink(
rootKey = callLink.credentials!!.linkKeyBytes.toByteString(),
epoch = callLink.credentials.epochBytes?.toByteString() ?: ByteString.EMPTY,
adminKey = callLink.credentials.adminPassBytes?.toByteString()?.nullIfEmpty(),
name = callLink.state.name,
expirationMs = expirationTime.takeIf { it != Long.MAX_VALUE }?.clampToValidBackupRange() ?: 0,

View File

@@ -7,6 +7,7 @@ package org.thoughtcrime.securesms.backup.v2.importer
import org.signal.core.util.isEmpty
import org.signal.core.util.logging.Log
import org.signal.core.util.nullIfEmpty
import org.signal.ringrtc.CallLinkRootKey
import org.signal.ringrtc.CallLinkState
import org.thoughtcrime.securesms.backup.v2.ArchiveCallLink
@@ -42,7 +43,11 @@ object CallLinkArchiveImporter {
CallLinkTable.CallLink(
recipientId = RecipientId.UNKNOWN,
roomId = CallLinkRoomId.fromCallLinkRootKey(rootKey),
credentials = CallLinkCredentials(callLink.rootKey.toByteArray(), callLink.adminKey?.toByteArray()),
credentials = CallLinkCredentials(
callLink.rootKey.toByteArray(),
callLink.epoch.nullIfEmpty()?.toByteArray(),
callLink.adminKey?.toByteArray()
),
state = SignalCallLinkState(
name = callLink.name,
restrictions = callLink.restrictions.toLocal(),