diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ef0db840..e952c6eb 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,6 +3,7 @@ slf4j = "2.0.17" junit = "6.0.3" micronaut-json-schema = "2.0.0-M8" micronaut-core = "4.9.3" +signal-service = "2.15.3_unofficial_145" [libraries] bouncycastle = "org.bouncycastle:bcprov-jdk18on:1.84" @@ -18,7 +19,7 @@ slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" } slf4j-jul = { module = "org.slf4j:jul-to-slf4j", version.ref = "slf4j" } logback = "ch.qos.logback:logback-classic:1.5.32" -signalservice = "com.github.turasa:signal-service-java:2.15.3_unofficial_144" +signalnetwork = { module = "com.github.turasa:signal-network", version.ref = "signal-service" } sqlite = "org.xerial:sqlite-jdbc:3.53.0.0" hikari = "com.zaxxer:HikariCP:7.0.2" junit-jupiter-bom = { module = "org.junit:junit-bom", version.ref = "junit" } diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts index 45237064..510482e8 100644 --- a/lib/build.gradle.kts +++ b/lib/build.gradle.kts @@ -18,9 +18,9 @@ val libsignalClientPath = project.findProperty("libsignal_client_path")?.toStrin dependencies { if (libsignalClientPath == null) { - implementation(libs.signalservice) + implementation(libs.signalnetwork) } else { - implementation(libs.signalservice) { + implementation(libs.signalnetwork) { exclude(group = "org.signal", module = "libsignal-client") } implementation(files(libsignalClientPath)) diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/StorageHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/StorageHelper.java index aeeb3ac5..6f60f734 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/StorageHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/StorageHelper.java @@ -17,6 +17,9 @@ import org.asamk.signal.manager.util.KeyUtils; import org.signal.core.models.storageservice.StorageKey; import org.signal.core.util.SetUtil; import org.signal.libsignal.protocol.InvalidKeyException; +import org.signal.network.service.StorageServiceService; +import org.signal.network.service.StorageServiceService.ManifestIfDifferentVersionResult; +import org.signal.network.service.StorageServiceService.WriteStorageRecordsResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.whispersystems.signalservice.api.push.exceptions.NotFoundException; @@ -25,9 +28,6 @@ import org.whispersystems.signalservice.api.storage.SignalStorageManifest; import org.whispersystems.signalservice.api.storage.SignalStorageRecord; import org.whispersystems.signalservice.api.storage.StorageId; import org.whispersystems.signalservice.api.storage.StorageRecordConvertersKt; -import org.whispersystems.signalservice.api.storage.StorageServiceRepository; -import org.whispersystems.signalservice.api.storage.StorageServiceRepository.ManifestIfDifferentVersionResult; -import org.whispersystems.signalservice.api.storage.StorageServiceRepository.WriteStorageRecordsResult; import org.whispersystems.signalservice.internal.storage.protos.ManifestRecord; import org.whispersystems.signalservice.internal.storage.protos.StorageRecord; @@ -504,7 +504,7 @@ public class StorageHelper { final var result = dependencies.getStorageServiceRepository() .readStorageRecords(storageKey, manifest.recordIkm, storageIds); return switch (result) { - case StorageServiceRepository.StorageRecordResult.DecryptionError decryptionError -> { + case StorageServiceService.StorageRecordResult.DecryptionError decryptionError -> { if (decryptionError.getException() instanceof InvalidKeyException) { logger.warn("Failed to read storage records, ignoring."); yield List.of(); @@ -514,11 +514,11 @@ public class StorageHelper { throw new IOException(decryptionError.getException()); } } - case StorageServiceRepository.StorageRecordResult.NetworkError networkError -> + case StorageServiceService.StorageRecordResult.NetworkError networkError -> throw networkError.getException(); - case StorageServiceRepository.StorageRecordResult.StatusCodeError statusCodeError -> + case StorageServiceService.StorageRecordResult.StatusCodeError statusCodeError -> throw statusCodeError.getException(); - case StorageServiceRepository.StorageRecordResult.Success success -> success.getRecords(); + case StorageServiceService.StorageRecordResult.Success success -> success.getRecords(); default -> throw new IllegalStateException("Unexpected value: " + result); }; } diff --git a/lib/src/main/java/org/asamk/signal/manager/internal/SignalDependencies.java b/lib/src/main/java/org/asamk/signal/manager/internal/SignalDependencies.java index 77068eaa..d81078d4 100644 --- a/lib/src/main/java/org/asamk/signal/manager/internal/SignalDependencies.java +++ b/lib/src/main/java/org/asamk/signal/manager/internal/SignalDependencies.java @@ -6,6 +6,13 @@ import org.asamk.signal.manager.util.Utils; import org.signal.libsignal.metadata.certificate.CertificateValidator; import org.signal.libsignal.net.Network; import org.signal.libsignal.zkgroup.profiles.ClientZkProfileOperations; +import org.signal.network.api.CallingApi; +import org.signal.network.api.CdsApi; +import org.signal.network.api.CertificateApi; +import org.signal.network.api.LinkDeviceApi; +import org.signal.network.api.RateLimitChallengeApi; +import org.signal.network.api.UsernameApi; +import org.signal.network.service.StorageServiceService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.whispersystems.signalservice.api.SignalServiceAccountManager; @@ -15,26 +22,19 @@ import org.whispersystems.signalservice.api.SignalServiceMessageSender; import org.whispersystems.signalservice.api.SignalSessionLock; import org.whispersystems.signalservice.api.account.AccountApi; import org.whispersystems.signalservice.api.attachment.AttachmentApi; -import org.whispersystems.signalservice.api.calling.CallingApi; -import org.whispersystems.signalservice.api.cds.CdsApi; -import org.whispersystems.signalservice.api.certificate.CertificateApi; import org.whispersystems.signalservice.api.crypto.SignalServiceCipher; import org.whispersystems.signalservice.api.groupsv2.ClientZkOperations; import org.whispersystems.signalservice.api.groupsv2.GroupsV2Api; import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations; import org.whispersystems.signalservice.api.keys.KeysApi; -import org.whispersystems.signalservice.api.link.LinkDeviceApi; import org.whispersystems.signalservice.api.message.MessageApi; import org.whispersystems.signalservice.api.profiles.ProfileApi; import org.whispersystems.signalservice.api.push.ServiceIdType; import org.whispersystems.signalservice.api.push.SignalServiceAddress; -import org.whispersystems.signalservice.api.ratelimit.RateLimitChallengeApi; import org.whispersystems.signalservice.api.registration.RegistrationApi; import org.whispersystems.signalservice.api.services.ProfileService; import org.whispersystems.signalservice.api.storage.StorageServiceApi; -import org.whispersystems.signalservice.api.storage.StorageServiceRepository; import org.whispersystems.signalservice.api.svr.SecureValueRecovery; -import org.whispersystems.signalservice.api.username.UsernameApi; import org.whispersystems.signalservice.api.util.CredentialsProvider; import org.whispersystems.signalservice.api.util.UptimeSleepTimer; import org.whispersystems.signalservice.api.websocket.SignalWebSocket; @@ -243,8 +243,8 @@ public class SignalDependencies { getPushServiceSocket())); } - public StorageServiceRepository getStorageServiceRepository() { - return new StorageServiceRepository(getStorageServiceApi()); + public StorageServiceService getStorageServiceRepository() { + return new StorageServiceService(getStorageServiceApi()); } public CertificateApi getCertificateApi() {