]> nmode's Git Repositories - signal-cli/commitdiff
Update dependencies
authorAsamK <asamk@gmx.de>
Sun, 11 Jun 2023 15:16:38 +0000 (17:16 +0200)
committerAsamK <asamk@gmx.de>
Sun, 11 Jun 2023 15:16:38 +0000 (17:16 +0200)
graalvm-config-dir/reflect-config.json
lib/src/main/java/org/asamk/signal/manager/helper/AccountHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/PreKeyHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/ReceiveHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/RecipientHelper.java
lib/src/main/java/org/asamk/signal/manager/storage/protocol/SignalProtocolStore.java
settings.gradle.kts

index 9da72883f174c87bd4355a328983d12144dd035f..f1d576690847f8f33daec09c57fa93cd7ce66c3a 100644 (file)
   "allDeclaredMethods":true,
   "allDeclaredClasses":true
 },
+{
+  "name":"org.asamk.Signal$Identity",
+  "allDeclaredClasses":true,
+  "queryAllDeclaredMethods":true
+},
 {
   "name":"org.asamk.Signal$MessageReceived",
   "allDeclaredConstructors":true,
   "queryAllDeclaredConstructors":true,
   "methods":[{"name":"<init>","parameterTypes":["org.freedesktop.dbus.DBusPath","byte[]","java.lang.String"] }]
 },
+{
+  "name":"org.asamk.Signal$StructIdentity",
+  "allDeclaredFields":true
+},
 {
   "name":"org.asamk.Signal$SyncMessageReceived",
   "allDeclaredConstructors":true,
   "queryAllDeclaredConstructors":true,
   "methods":[{"name":"<init>","parameterTypes":[] }]
 },
+{
+  "name":"org.whispersystems.signalservice.internal.push.KyberPreKeyEntity",
+  "allDeclaredFields":true,
+  "queryAllDeclaredMethods":true,
+  "queryAllDeclaredConstructors":true
+},
+{
+  "name":"org.whispersystems.signalservice.internal.push.KyberPreKeyEntity$ByteArrayDeserializer",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.whispersystems.signalservice.internal.push.KyberPreKeyEntity$KEMPublicKeyDeserializer",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
 {
   "name":"org.whispersystems.signalservice.internal.push.MismatchedDevices",
   "allDeclaredFields":true,
   "allDeclaredConstructors":true,
   "methods":[{"name":"<init>","parameterTypes":[] }]
 },
+{
+  "name":"org.whispersystems.signalservice.internal.push.OneTimePreKeyCounts",
+  "allDeclaredFields":true,
+  "queryAllDeclaredMethods":true,
+  "queryAllDeclaredConstructors":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
 {
   "name":"org.whispersystems.signalservice.internal.push.OutgoingPushMessage",
   "allDeclaredFields":true,
index edca4f9726602c9d86ee26ec25d44bd4a5fa1db1..16ab92bde99864619d7fceaf009c2947a3fca199 100644 (file)
@@ -28,6 +28,7 @@ import org.whispersystems.signalservice.api.push.exceptions.AlreadyVerifiedExcep
 import org.whispersystems.signalservice.api.push.exceptions.AuthorizationFailedException;
 import org.whispersystems.signalservice.api.push.exceptions.DeprecatedVersionException;
 import org.whispersystems.signalservice.api.util.DeviceNameUtil;
+import org.whispersystems.signalservice.internal.push.KyberPreKeyEntity;
 import org.whispersystems.signalservice.internal.push.OutgoingPushMessage;
 import org.whispersystems.util.Base64UrlSafe;
 
@@ -153,6 +154,7 @@ public class AccountHelper {
         // TODO create new PNI identity key
         final List<OutgoingPushMessage> deviceMessages = null;
         final Map<String, SignedPreKeyEntity> devicePniSignedPreKeys = null;
+        final Map<String, KyberPreKeyEntity> devicePniLastResortKyberPrekeys = null;
         final Map<String, Integer> pniRegistrationIds = null;
         var sessionId = account.getSessionId(account.getNumber());
         final var result = NumberVerificationUtils.verifyNumber(sessionId,
@@ -174,6 +176,7 @@ public class AccountHelper {
                             account.getPniIdentityKeyPair().getPublicKey(),
                             deviceMessages,
                             devicePniSignedPreKeys,
+                            devicePniLastResortKyberPrekeys,
                             pniRegistrationIds)));
                 });
         // TODO handle response
@@ -193,10 +196,10 @@ public class AccountHelper {
             }
         }
 
-        final var candidates = Username.generateCandidates(nickname, USERNAME_MIN_LENGTH, USERNAME_MAX_LENGTH);
+        final var candidates = Username.candidatesFrom(nickname, USERNAME_MIN_LENGTH, USERNAME_MAX_LENGTH);
         final var candidateHashes = new ArrayList<String>();
         for (final var candidate : candidates) {
-            candidateHashes.add(Base64UrlSafe.encodeBytesWithoutPadding(Username.hash(candidate)));
+            candidateHashes.add(Base64UrlSafe.encodeBytesWithoutPadding(candidate.getHash()));
         }
 
         final var response = dependencies.getAccountManager().reserveUsername(candidateHashes);
@@ -207,7 +210,7 @@ public class AccountHelper {
         }
 
         logger.debug("[reserveUsername] Successfully reserved username.");
-        final var username = candidates.get(hashIndex);
+        final var username = candidates.get(hashIndex).getUsername();
 
         dependencies.getAccountManager().confirmUsername(username, response);
         account.setUsername(username);
@@ -226,7 +229,7 @@ public class AccountHelper {
         final var whoAmIResponse = dependencies.getAccountManager().getWhoAmI();
         final var serverUsernameHash = whoAmIResponse.getUsernameHash();
         final var hasServerUsername = !isEmpty(serverUsernameHash);
-        final var localUsernameHash = Base64UrlSafe.encodeBytesWithoutPadding(Username.hash(localUsername));
+        final var localUsernameHash = Base64UrlSafe.encodeBytesWithoutPadding(new Username(localUsername).getHash());
 
         if (!hasServerUsername) {
             logger.debug("No remote username is set.");
index 24cd675ce3613ad20fb581fe47669d26d20ed734..06dc31b91d0431ead7052a20dc99063be643c6bf 100644 (file)
@@ -9,6 +9,7 @@ import org.signal.libsignal.protocol.state.PreKeyRecord;
 import org.signal.libsignal.protocol.state.SignedPreKeyRecord;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.whispersystems.signalservice.api.account.PreKeyUpload;
 import org.whispersystems.signalservice.api.push.ServiceIdType;
 
 import java.io.IOException;
@@ -34,9 +35,11 @@ public class PreKeyHelper {
     }
 
     public void refreshPreKeysIfNecessary(ServiceIdType serviceIdType) throws IOException {
-        if (dependencies.getAccountManager().getPreKeysCount(serviceIdType) < ServiceConfig.PREKEY_MINIMUM_COUNT) {
+        final var preKeyCounts = dependencies.getAccountManager().getPreKeyCounts(serviceIdType);
+        if (preKeyCounts.getEcCount() < ServiceConfig.PREKEY_MINIMUM_COUNT) {
             refreshPreKeys(serviceIdType);
         }
+        // TODO kyber pre keys
     }
 
     public void refreshPreKeys() throws IOException {
@@ -68,8 +71,13 @@ public class PreKeyHelper {
         final var oneTimePreKeys = generatePreKeys(serviceIdType);
         final var signedPreKeyRecord = generateSignedPreKey(serviceIdType, identityKeyPair);
 
-        dependencies.getAccountManager()
-                .setPreKeys(serviceIdType, identityKeyPair.getPublicKey(), signedPreKeyRecord, oneTimePreKeys);
+        final var preKeyUpload = new PreKeyUpload(serviceIdType,
+                identityKeyPair.getPublicKey(),
+                signedPreKeyRecord,
+                oneTimePreKeys,
+                null,
+                null);
+        dependencies.getAccountManager().setPreKeys(preKeyUpload);
     }
 
     private List<PreKeyRecord> generatePreKeys(ServiceIdType serviceIdType) {
index b226222350159f4d95594ef3bb69227b165291eb..3d4ca38d24361b18c60fbd3de3bcfc527b194e26 100644 (file)
@@ -152,8 +152,12 @@ public class ReceiveHelper {
                         logger.trace("Storing new message from {}", recipientId);
                         // store message on disk, before acknowledging receipt to the server
                         cachedMessage[0] = account.getMessageCache().cacheMessage(envelope1, recipientId);
+                        try {
+                            signalWebSocket.sendAck(it);
+                        } catch (IOException e) {
+                            logger.warn("Failed to ack envelope to server after storing it: {}", e.getMessage());
+                        }
                     }
-                    return true;
                 });
                 isWaitingForMessage = false;
                 backOffCounter = 0;
index 384d1fa07a6b817ab3da7e555919019e17783e70..8f100612dcd450c5bd28c01db1a0eb3dd746c5c2 100644 (file)
@@ -180,7 +180,7 @@ public class RecipientHelper {
 
     private ACI getRegisteredUserByUsername(String username) throws IOException, BaseUsernameException {
         return dependencies.getAccountManager()
-                .getAciByUsernameHash(Base64UrlSafe.encodeBytesWithoutPadding(Username.hash(username)));
+                .getAciByUsernameHash(Base64UrlSafe.encodeBytesWithoutPadding(new Username(username).getHash()));
     }
 
     public record RegisteredUser(Optional<ACI> aci, Optional<PNI> pni) {
index 223f39fc7757f2950d726ce216568ca382172de1..b4e27afcff7cc001a35aa70fb4f73267808af8c0 100644 (file)
@@ -226,4 +226,20 @@ public class SignalProtocolStore implements SignalServiceAccountDataStore {
     public void markKyberPreKeyUsed(final int kyberPreKeyId) {
         // TODO
     }
+
+    @Override
+    public List<KyberPreKeyRecord> loadLastResortKyberPreKeys() {
+        // TODO
+        return List.of();
+    }
+
+    @Override
+    public void removeKyberPreKey(final int i) {
+        // TODO
+    }
+
+    @Override
+    public void storeLastResortKyberPreKey(final int i, final KyberPreKeyRecord kyberPreKeyRecord) {
+        // TODO
+    }
 }
index edf8c13dd96f5eaf69490c99798610cf9cd8a537..f21554e409e7de7326e7ea849de9876ca3267a77 100644 (file)
@@ -7,7 +7,7 @@ dependencyResolutionManagement {
     versionCatalogs {
         create("libs") {
             library("bouncycastle", "org.bouncycastle", "bcprov-jdk15on").version("1.70")
-            library("jackson.databind", "com.fasterxml.jackson.core", "jackson-databind").version("2.15.1")
+            library("jackson.databind", "com.fasterxml.jackson.core", "jackson-databind").version("2.15.2")
             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("signalservice", "com.github.turasa", "signal-service-java").version("2.15.3_unofficial_72")
+            library("signalservice", "com.github.turasa", "signal-service-java").version("2.15.3_unofficial_73")
             library("protobuf", "com.google.protobuf", "protobuf-javalite").version("3.23.0")
             library("sqlite", "org.xerial", "sqlite-jdbc").version("3.42.0.0")
             library("hikari", "com.zaxxer", "HikariCP").version("5.0.1")