]> nmode's Git Repositories - signal-cli/commitdiff
Update dependencies
authorAsamK <asamk@gmx.de>
Thu, 18 May 2023 09:00:22 +0000 (11:00 +0200)
committerAsamK <asamk@gmx.de>
Thu, 18 May 2023 09:00:22 +0000 (11:00 +0200)
14 files changed:
CHANGELOG.md
graalvm-config-dir/jni-config.json
graalvm-config-dir/reflect-config.json
graalvm-config-dir/resource-config.json
lib/src/main/java/org/asamk/signal/manager/actions/SendPniIdentityKeyAction.java [deleted file]
lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java
lib/src/main/java/org/asamk/signal/manager/helper/IdentityHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java
lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/UnidentifiedAccessHelper.java
lib/src/main/java/org/asamk/signal/manager/storage/protocol/SignalProtocolStore.java
lib/src/main/java/org/asamk/signal/manager/util/PinHashing.java [deleted file]
settings.gradle.kts

index 011fedc59d3cc283287f165fc50414147e2350fd..fe72cadfc8a5ad4ebd8dcae498a00c84f1f0b8de 100644 (file)
@@ -1,6 +1,7 @@
 # Changelog
 
 ## [Unreleased]
 # Changelog
 
 ## [Unreleased]
+**Attention**: Now requires native libsignal-client version 0.24.0
 
 ## [0.11.10] - 2023-05-11
 **Attention**: Now requires native libsignal-client version 0.23.1
 
 ## [0.11.10] - 2023-05-11
 **Attention**: Now requires native libsignal-client version 0.23.1
index 9f1cab28f95513c6d5a1f25b440cf289c87db22d..98c05c7c1d9619a52d4704ca872265b66e0a5ece 100644 (file)
     {"name":"SENDING"}
   ]
 },
     {"name":"SENDING"}
   ]
 },
+{
+  "name":"org.signal.libsignal.protocol.state.KyberPreKeyStore"
+},
 {
   "name":"org.signal.libsignal.protocol.state.PreKeyRecord",
   "fields":[{"name":"unsafeHandle"}]
 {
   "name":"org.signal.libsignal.protocol.state.PreKeyRecord",
   "fields":[{"name":"unsafeHandle"}]
index f4a975bc756b171ab2bbdfd8bfb684a8efb008cb..5ace3d390023d0534f455279d7b80d0892f6ac21 100644 (file)
   "name":"org.asamk.signal.json.JsonTypingMessage",
   "allDeclaredFields":true,
   "allDeclaredMethods":true,
   "name":"org.asamk.signal.json.JsonTypingMessage",
   "allDeclaredFields":true,
   "allDeclaredMethods":true,
-  "allDeclaredConstructors":true
+  "allDeclaredConstructors":true,
+  "methods":[
+    {"name":"action","parameterTypes":[] }, 
+    {"name":"groupId","parameterTypes":[] }, 
+    {"name":"timestamp","parameterTypes":[] }
+  ]
 },
 {
   "name":"org.asamk.signal.jsonrpc.JsonRpcBatchMessage",
 },
 {
   "name":"org.asamk.signal.jsonrpc.JsonRpcBatchMessage",
index bd88f0bc78a5e486685dd06f88a708d0a3b18e84..2ebe89738d5749c24a4fad53eaf5a53d05134d4a 100644 (file)
     {
       "pattern":"\\Qjni/x86_64-Linux/libjffi-1.2.so\\E"
     }, 
     {
       "pattern":"\\Qjni/x86_64-Linux/libjffi-1.2.so\\E"
     }, 
-    {
-      "pattern":"\\Qlibsignal_jni.so\\E"
-    }, 
     {
       "pattern":"\\Qlibsignal_jni.dylib\\E"
     }, 
     {
     {
       "pattern":"\\Qlibsignal_jni.dylib\\E"
     }, 
     {
-      "pattern":"\\Qsignal_jni.dll\\E"
+      "pattern":"\\Qlibsignal_jni.so\\E"
     }, 
     {
       "pattern":"\\Qorg/asamk/signal/manager/config/ias.store\\E"
     }, 
     {
       "pattern":"\\Qorg/asamk/signal/manager/config/ias.store\\E"
     {
       "pattern":"\\Qorg/sqlite/native/Linux/x86_64/libsqlitejdbc.so\\E"
     }, 
     {
       "pattern":"\\Qorg/sqlite/native/Linux/x86_64/libsqlitejdbc.so\\E"
     }, 
+    {
+      "pattern":"\\Qsignal_jni.dll\\E"
+    }, 
     {
       "pattern":"\\Qsqlite-jdbc.properties\\E"
     }, 
     {
       "pattern":"\\Qsqlite-jdbc.properties\\E"
     }, 
diff --git a/lib/src/main/java/org/asamk/signal/manager/actions/SendPniIdentityKeyAction.java b/lib/src/main/java/org/asamk/signal/manager/actions/SendPniIdentityKeyAction.java
deleted file mode 100644 (file)
index fe70a66..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.asamk.signal.manager.actions;
-
-import org.asamk.signal.manager.helper.Context;
-
-public class SendPniIdentityKeyAction implements HandleAction {
-
-    private static final SendPniIdentityKeyAction INSTANCE = new SendPniIdentityKeyAction();
-
-    private SendPniIdentityKeyAction() {
-    }
-
-    public static SendPniIdentityKeyAction create() {
-        return INSTANCE;
-    }
-
-    @Override
-    public void execute(Context context) throws Throwable {
-        context.getSyncHelper().sendPniIdentity();
-    }
-}
index c56d9e86ba40405d4d0d53968800273d2430ce04..7100c32627b5fd9962576cb86ec4465904ca0c40 100644 (file)
@@ -44,17 +44,7 @@ public class ServiceConfig {
 
     public static AccountAttributes.Capabilities getCapabilities(boolean isPrimaryDevice) {
         final var giftBadges = !isPrimaryDevice;
 
     public static AccountAttributes.Capabilities getCapabilities(boolean isPrimaryDevice) {
         final var giftBadges = !isPrimaryDevice;
-        return new AccountAttributes.Capabilities(false,
-                true,
-                false,
-                true,
-                true,
-                true,
-                true,
-                true,
-                giftBadges,
-                false,
-                false);
+        return new AccountAttributes.Capabilities(false, true, true, true, true, giftBadges, false, false);
     }
 
     public static boolean isSignalClientAvailable() {
     }
 
     public static boolean isSignalClientAvailable() {
index c9cfaedcbb40c765cbd3717c1d9b5d6b1b0b3a03..c150abedcbbd9c802a5bc6b20dec1d8253906223 100644 (file)
@@ -73,7 +73,7 @@ public class IdentityHelper {
         final var recipientId = account.getRecipientResolver().resolveRecipient(serviceId);
         final var address = account.getRecipientAddressResolver().resolveRecipientAddress(recipientId);
 
         final var recipientId = account.getRecipientResolver().resolveRecipient(serviceId);
         final var address = account.getRecipientAddressResolver().resolveRecipientAddress(recipientId);
 
-        if (account.getAccountCapabilities().getUuid()) {
+        if (false) {
             if (serviceId.isUnknown()) {
                 return null;
             }
             if (serviceId.isUnknown()) {
                 return null;
             }
index 5261ad733fc53328bd4c65776f075fdff46317f6..d0a6a5c00bde22ebf797e8bd58591781d3ffde36 100644 (file)
@@ -10,7 +10,6 @@ import org.asamk.signal.manager.actions.RetrieveProfileAction;
 import org.asamk.signal.manager.actions.RetrieveStorageDataAction;
 import org.asamk.signal.manager.actions.SendGroupInfoAction;
 import org.asamk.signal.manager.actions.SendGroupInfoRequestAction;
 import org.asamk.signal.manager.actions.RetrieveStorageDataAction;
 import org.asamk.signal.manager.actions.SendGroupInfoAction;
 import org.asamk.signal.manager.actions.SendGroupInfoRequestAction;
-import org.asamk.signal.manager.actions.SendPniIdentityKeyAction;
 import org.asamk.signal.manager.actions.SendProfileKeyAction;
 import org.asamk.signal.manager.actions.SendReceiptAction;
 import org.asamk.signal.manager.actions.SendRetryMessageRequestAction;
 import org.asamk.signal.manager.actions.SendProfileKeyAction;
 import org.asamk.signal.manager.actions.SendReceiptAction;
 import org.asamk.signal.manager.actions.SendRetryMessageRequestAction;
@@ -35,7 +34,6 @@ import org.asamk.signal.manager.storage.groups.GroupInfoV1;
 import org.asamk.signal.manager.storage.recipients.Profile;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.asamk.signal.manager.storage.stickers.StickerPack;
 import org.asamk.signal.manager.storage.recipients.Profile;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.asamk.signal.manager.storage.stickers.StickerPack;
-import org.asamk.signal.manager.util.KeyUtils;
 import org.signal.libsignal.metadata.ProtocolInvalidKeyException;
 import org.signal.libsignal.metadata.ProtocolInvalidKeyIdException;
 import org.signal.libsignal.metadata.ProtocolInvalidMessageException;
 import org.signal.libsignal.metadata.ProtocolInvalidKeyException;
 import org.signal.libsignal.metadata.ProtocolInvalidKeyIdException;
 import org.signal.libsignal.metadata.ProtocolInvalidMessageException;
@@ -525,9 +523,6 @@ public final class IncomingMessageHandler {
             if (rm.isConfigurationRequest()) {
                 actions.add(SendSyncConfigurationAction.create());
             }
             if (rm.isConfigurationRequest()) {
                 actions.add(SendSyncConfigurationAction.create());
             }
-            if (rm.isPniIdentityRequest()) {
-                actions.add(SendPniIdentityKeyAction.create());
-            }
         }
         if (syncMessage.getGroups().isPresent()) {
             try {
         }
         if (syncMessage.getGroups().isPresent()) {
             try {
@@ -631,12 +626,6 @@ public final class IncomingMessageHandler {
                         .get());
             }
         }
                         .get());
             }
         }
-        if (syncMessage.getPniIdentity().isPresent()) {
-            final var pniIdentity = syncMessage.getPniIdentity().get();
-            account.setPniIdentityKeyPair(KeyUtils.getIdentityKeyPair(pniIdentity.getPublicKey().toByteArray(),
-                    pniIdentity.getPrivateKey().toByteArray()));
-            actions.add(RefreshPreKeysAction.create());
-        }
         if (syncMessage.getPniChangeNumber().isPresent()) {
             final var pniChangeNumber = syncMessage.getPniChangeNumber().get();
             logger.debug("Received PNI change number sync message, applying.");
         if (syncMessage.getPniChangeNumber().isPresent()) {
             final var pniChangeNumber = syncMessage.getPniChangeNumber().get();
             logger.debug("Received PNI change number sync message, applying.");
index 6b925c692233ac27c41a0b50e10d0b5f39153a90..6bc3978fc7485947e0051e6b981718f06b90e211 100644 (file)
@@ -2,7 +2,6 @@ package org.asamk.signal.manager.helper;
 
 import org.asamk.signal.manager.api.IncorrectPinException;
 import org.asamk.signal.manager.api.Pair;
 
 import org.asamk.signal.manager.api.IncorrectPinException;
 import org.asamk.signal.manager.api.Pair;
-import org.asamk.signal.manager.util.PinHashing;
 import org.signal.libsignal.protocol.InvalidKeyException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.signal.libsignal.protocol.InvalidKeyException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -11,6 +10,7 @@ import org.whispersystems.signalservice.api.KeyBackupService;
 import org.whispersystems.signalservice.api.KeyBackupServicePinException;
 import org.whispersystems.signalservice.api.KeyBackupSystemNoDataException;
 import org.whispersystems.signalservice.api.kbs.MasterKey;
 import org.whispersystems.signalservice.api.KeyBackupServicePinException;
 import org.whispersystems.signalservice.api.KeyBackupSystemNoDataException;
 import org.whispersystems.signalservice.api.kbs.MasterKey;
+import org.whispersystems.signalservice.api.kbs.PinHashUtil;
 import org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException;
 import org.whispersystems.signalservice.internal.contacts.entities.TokenResponse;
 import org.whispersystems.signalservice.internal.push.LockedException;
 import org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException;
 import org.whispersystems.signalservice.internal.contacts.entities.TokenResponse;
 import org.whispersystems.signalservice.internal.push.LockedException;
@@ -37,7 +37,7 @@ public class PinHelper {
             String pin, MasterKey masterKey
     ) throws IOException {
         final var pinChangeSession = keyBackupService.newPinChangeSession();
             String pin, MasterKey masterKey
     ) throws IOException {
         final var pinChangeSession = keyBackupService.newPinChangeSession();
-        final var hashedPin = PinHashing.hashPin(pin, pinChangeSession);
+        final var hashedPin = PinHashUtil.hashPin(pin, pinChangeSession.hashSalt());
 
         try {
             pinChangeSession.setPin(hashedPin, masterKey);
 
         try {
             pinChangeSession.setPin(hashedPin, masterKey);
@@ -128,7 +128,7 @@ public class PinHelper {
         var session = keyBackupService.newRegistrationSession(basicStorageCredentials, tokenResponse);
 
         try {
         var session = keyBackupService.newRegistrationSession(basicStorageCredentials, tokenResponse);
 
         try {
-            var hashedPin = PinHashing.hashPin(pin, session);
+            var hashedPin = PinHashUtil.hashPin(pin, session.hashSalt());
             var kbsData = session.restorePin(hashedPin);
             if (kbsData == null) {
                 throw new AssertionError("Null not expected");
             var kbsData = session.restorePin(hashedPin);
             if (kbsData == null) {
                 throw new AssertionError("Null not expected");
index bad2efce3acad478967d3da7bd4e0755f3adf537..a005f07dab5d962edb067c9e334812d14ec70313 100644 (file)
@@ -1,7 +1,5 @@
 package org.asamk.signal.manager.helper;
 
 package org.asamk.signal.manager.helper;
 
-import com.google.protobuf.ByteString;
-
 import org.asamk.signal.manager.api.TrustLevel;
 import org.asamk.signal.manager.groups.GroupId;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.api.TrustLevel;
 import org.asamk.signal.manager.groups.GroupId;
 import org.asamk.signal.manager.storage.SignalAccount;
@@ -233,15 +231,6 @@ public class SyncHelper {
         context.getSendHelper().sendSyncMessage(SignalServiceSyncMessage.forConfiguration(configurationMessage));
     }
 
         context.getSendHelper().sendSyncMessage(SignalServiceSyncMessage.forConfiguration(configurationMessage));
     }
 
-    public void sendPniIdentity() {
-        final var pniIdentityKeyPair = account.getPniIdentityKeyPair();
-        var pniIdentity = SignalServiceProtos.SyncMessage.PniIdentity.newBuilder()
-                .setPrivateKey(ByteString.copyFrom(pniIdentityKeyPair.getPrivateKey().serialize()))
-                .setPublicKey(ByteString.copyFrom(pniIdentityKeyPair.getPublicKey().serialize()))
-                .build();
-        context.getSendHelper().sendSyncMessage(SignalServiceSyncMessage.forPniIdentity(pniIdentity));
-    }
-
     public void handleSyncDeviceGroups(final InputStream input) {
         final var s = new DeviceGroupsInputStream(input);
         DeviceGroup g;
     public void handleSyncDeviceGroups(final InputStream input) {
         final var s = new DeviceGroupsInputStream(input);
         DeviceGroup g;
index 0f0da15c4cb1417abbb002cc2dd6d900d8644bf5..920315765fce70859dfc28f4e4b26a68ba17b2ff 100644 (file)
@@ -71,7 +71,8 @@ public class UnidentifiedAccessHelper {
 
         try {
             return Optional.of(new UnidentifiedAccessPair(new UnidentifiedAccess(recipientUnidentifiedAccessKey,
 
         try {
             return Optional.of(new UnidentifiedAccessPair(new UnidentifiedAccess(recipientUnidentifiedAccessKey,
-                    senderCertificate), new UnidentifiedAccess(selfUnidentifiedAccessKey, senderCertificate)));
+                    senderCertificate,
+                    false), new UnidentifiedAccess(selfUnidentifiedAccessKey, senderCertificate, false)));
         } catch (InvalidCertificateException e) {
             return Optional.empty();
         }
         } catch (InvalidCertificateException e) {
             return Optional.empty();
         }
@@ -87,8 +88,9 @@ public class UnidentifiedAccessHelper {
 
         try {
             return Optional.of(new UnidentifiedAccessPair(new UnidentifiedAccess(selfUnidentifiedAccessKey,
 
         try {
             return Optional.of(new UnidentifiedAccessPair(new UnidentifiedAccess(selfUnidentifiedAccessKey,
-                    selfUnidentifiedAccessCertificate),
-                    new UnidentifiedAccess(selfUnidentifiedAccessKey, selfUnidentifiedAccessCertificate)));
+                    selfUnidentifiedAccessCertificate,
+                    false),
+                    new UnidentifiedAccess(selfUnidentifiedAccessKey, selfUnidentifiedAccessCertificate, false)));
         } catch (InvalidCertificateException e) {
             return Optional.empty();
         }
         } catch (InvalidCertificateException e) {
             return Optional.empty();
         }
index f804bc6dabc978543ebfd740ee7366192a812a9e..223f39fc7757f2950d726ce216568ca382172de1 100644 (file)
@@ -7,6 +7,7 @@ import org.signal.libsignal.protocol.NoSessionException;
 import org.signal.libsignal.protocol.SignalProtocolAddress;
 import org.signal.libsignal.protocol.groups.state.SenderKeyRecord;
 import org.signal.libsignal.protocol.state.IdentityKeyStore;
 import org.signal.libsignal.protocol.SignalProtocolAddress;
 import org.signal.libsignal.protocol.groups.state.SenderKeyRecord;
 import org.signal.libsignal.protocol.state.IdentityKeyStore;
+import org.signal.libsignal.protocol.state.KyberPreKeyRecord;
 import org.signal.libsignal.protocol.state.PreKeyRecord;
 import org.signal.libsignal.protocol.state.PreKeyStore;
 import org.signal.libsignal.protocol.state.SessionRecord;
 import org.signal.libsignal.protocol.state.PreKeyRecord;
 import org.signal.libsignal.protocol.state.PreKeyStore;
 import org.signal.libsignal.protocol.state.SessionRecord;
@@ -197,4 +198,32 @@ public class SignalProtocolStore implements SignalServiceAccountDataStore {
     public boolean isMultiDevice() {
         return isMultiDevice.get();
     }
     public boolean isMultiDevice() {
         return isMultiDevice.get();
     }
+
+    @Override
+    public KyberPreKeyRecord loadKyberPreKey(final int kyberPreKeyId) throws InvalidKeyIdException {
+        // TODO
+        throw new InvalidKeyIdException("Missing kyber prekey with ID: $kyberPreKeyId");
+    }
+
+    @Override
+    public List<KyberPreKeyRecord> loadKyberPreKeys() {
+        // TODO
+        return List.of();
+    }
+
+    @Override
+    public void storeKyberPreKey(final int kyberPreKeyId, final KyberPreKeyRecord record) {
+        // TODO
+    }
+
+    @Override
+    public boolean containsKyberPreKey(final int kyberPreKeyId) {
+        // TODO
+        return false;
+    }
+
+    @Override
+    public void markKyberPreKeyUsed(final int kyberPreKeyId) {
+        // TODO
+    }
 }
 }
diff --git a/lib/src/main/java/org/asamk/signal/manager/util/PinHashing.java b/lib/src/main/java/org/asamk/signal/manager/util/PinHashing.java
deleted file mode 100644 (file)
index 5dc5a5b..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.asamk.signal.manager.util;
-
-import org.bouncycastle.crypto.generators.Argon2BytesGenerator;
-import org.bouncycastle.crypto.params.Argon2Parameters;
-import org.whispersystems.signalservice.api.KeyBackupService;
-import org.whispersystems.signalservice.api.kbs.HashedPin;
-import org.whispersystems.signalservice.internal.registrationpin.PinHasher;
-
-public final class PinHashing {
-
-    private PinHashing() {
-    }
-
-    public static HashedPin hashPin(String pin, KeyBackupService.HashSession hashSession) {
-        final var params = new Argon2Parameters.Builder(Argon2Parameters.ARGON2_id).withParallelism(1)
-                .withIterations(32)
-                .withVersion(Argon2Parameters.ARGON2_VERSION_13)
-                .withMemoryAsKB(16 * 1024)
-                .withSalt(hashSession.hashSalt())
-                .build();
-
-        final var generator = new Argon2BytesGenerator();
-        generator.init(params);
-
-        return PinHasher.hashPin(PinHasher.normalize(pin), password -> {
-            var output = new byte[64];
-            generator.generateBytes(password, output);
-            return output;
-        });
-    }
-}
index 5bf0bc99881b3398badfca0d450f3bb1d9026e1b..45a40d1199455322f5ae08ccb557a1e9690d99e9 100644 (file)
@@ -7,7 +7,7 @@ dependencyResolutionManagement {
     versionCatalogs {
         create("libs") {
             library("bouncycastle", "org.bouncycastle", "bcprov-jdk15on").version("1.70")
     versionCatalogs {
         create("libs") {
             library("bouncycastle", "org.bouncycastle", "bcprov-jdk15on").version("1.70")
-            library("jackson.databind", "com.fasterxml.jackson.core", "jackson-databind").version("2.15.0")
+            library("jackson.databind", "com.fasterxml.jackson.core", "jackson-databind").version("2.15.1")
             library("argparse4j", "net.sourceforge.argparse4j", "argparse4j").version("0.9.0")
             library("dbusjava", "com.github.hypfvieh", "dbus-java-transport-native-unixsocket").version("4.3.0")
             version("slf4j", "2.0.7")
             library("argparse4j", "net.sourceforge.argparse4j", "argparse4j").version("0.9.0")
             library("dbusjava", "com.github.hypfvieh", "dbus-java-transport-native-unixsocket").version("4.3.0")
             version("slf4j", "2.0.7")
@@ -16,7 +16,7 @@ dependencyResolutionManagement {
             library("logback", "ch.qos.logback", "logback-classic").version("1.4.7")
 
 
             library("logback", "ch.qos.logback", "logback-classic").version("1.4.7")
 
 
-            library("signalservice", "com.github.turasa", "signal-service-java").version("2.15.3_unofficial_70")
+            library("signalservice", "com.github.turasa", "signal-service-java").version("2.15.3_unofficial_71")
             library("protobuf", "com.google.protobuf", "protobuf-javalite").version("3.23.0")
             library("sqlite", "org.xerial", "sqlite-jdbc").version("3.41.2.1")
             library("hikari", "com.zaxxer", "HikariCP").version("5.0.1")
             library("protobuf", "com.google.protobuf", "protobuf-javalite").version("3.23.0")
             library("sqlite", "org.xerial", "sqlite-jdbc").version("3.41.2.1")
             library("hikari", "com.zaxxer", "HikariCP").version("5.0.1")