]> nmode's Git Repositories - signal-cli/commitdiff
Update libsignal-service-java
authorAsamK <asamk@gmx.de>
Wed, 27 Mar 2024 21:54:15 +0000 (22:54 +0100)
committerAsamK <asamk@gmx.de>
Wed, 27 Mar 2024 21:58:13 +0000 (22:58 +0100)
CHANGELOG.md
lib/src/main/java/org/asamk/signal/manager/api/ProofRequiredException.java
lib/src/main/java/org/asamk/signal/manager/config/LiveConfig.java
lib/src/main/java/org/asamk/signal/manager/config/StagingConfig.java
lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java
lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java
lib/src/main/java/org/asamk/signal/manager/syncStorage/ContactRecordProcessor.java
settings.gradle.kts
src/main/java/org/asamk/signal/BaseConfig.java
src/main/java/org/asamk/signal/util/SendMessageResultUtils.java

index d9e4501f82152882b0b966c2c6e0724ececdcc93..7a96d412c9e480b9e6dec51575aa94f6eccd8f42 100644 (file)
@@ -2,6 +2,8 @@
 
 ## [Unreleased]
 
 
 ## [Unreleased]
 
+**Attention**: Now requires libsignal-client version 0.42.0
+
 ## [0.13.2] - 2024-03-23
 
 **Attention**: Now requires libsignal-client version 0.40.1
 ## [0.13.2] - 2024-03-23
 
 **Attention**: Now requires libsignal-client version 0.40.1
index 949dc4eb691d3ca2952fed918875a8801a65bce1..277406cbc616defa30beef1b0693ebcbfcda0482 100644 (file)
@@ -31,12 +31,13 @@ public class ProofRequiredException extends Exception {
     }
 
     public enum Option {
     }
 
     public enum Option {
-        RECAPTCHA,
+        CAPTCHA,
         PUSH_CHALLENGE;
 
         static Option from(org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException.Option option) {
             return switch (option) {
         PUSH_CHALLENGE;
 
         static Option from(org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException.Option option) {
             return switch (option) {
-                case RECAPTCHA -> RECAPTCHA;
+                case RECAPTCHA -> CAPTCHA;
+                case CAPTCHA -> CAPTCHA;
                 case PUSH_CHALLENGE -> PUSH_CHALLENGE;
             };
         }
                 case PUSH_CHALLENGE -> PUSH_CHALLENGE;
             };
         }
index 2bbdfe19bf47a336fdbcb219f2c632a04db29895..c86e650b7c6f19b4a52a34fd94e8959da0b8ab86 100644 (file)
@@ -42,7 +42,7 @@ class LiveConfig {
     private static final Optional<SignalProxy> proxy = Optional.empty();
 
     private static final byte[] zkGroupServerPublicParams = Base64.getDecoder()
     private static final Optional<SignalProxy> proxy = Optional.empty();
 
     private static final byte[] zkGroupServerPublicParams = Base64.getDecoder()
-            .decode("AMhf5ywVwITZMsff/eCyudZx9JDmkkkbV6PInzG4p8x3VqVJSFiMvnvlEKWuRob/1eaIetR31IYeAbm0NdOuHH8Qi+Rexi1wLlpzIo1gstHWBfZzy1+qHRV5A4TqPp15YzBPm0WSggW6PbSn+F4lf57VCnHF7p8SvzAA2ZZJPYJURt8X7bbg+H3i+PEjH9DXItNEqs2sNcug37xZQDLm7X36nOoGPs54XsEGzPdEV+itQNGUFEjY6X9Uv+Acuks7NpyGvCoKxGwgKgE5XyJ+nNKlyHHOLb6N1NuHyBrZrgtY/JYJHRooo5CEqYKBqdFnmbTVGEkCvJKxLnjwKWf+fEPoWeQFj5ObDjcKMZf2Jm2Ae69x+ikU5gBXsRmoF94GXTLfN0/vLt98KDPnxwAQL9j5V1jGOY8jQl6MLxEs56cwXN0dqCnImzVH3TZT1cJ8SW1BRX6qIVxEzjsSGx3yxF3suAilPMqGRp4ffyopjMD1JXiKR2RwLKzizUe5e8XyGOy9fplzhw3jVzTRyUZTRSZKkMLWcQ/gv0E4aONNqs4P+NameAZYOD12qRkxosQQP5uux6B2nRyZ7sAV54DgFyLiRcq1FvwKw2EPQdk4HDoePrO/RNUbyNddnM/mMgj4FW65xCoT1LmjrIjsv/Ggdlx46ueczhMgtBunx1/w8k8V+l8LVZ8gAT6wkU5J+DPQalQguMg12Jzug3q4TbdHiGCmD9EunCwOmsLuLJkz6EcSYXtrlDEnAM+hicw7iergYLLlMXpfTdGxJCWJmP4zqUFeTTmsmhsjGBt7NiEB/9pFFEB3pSbf4iiUukw63Eo8Aqnf4iwob6X1QviCWuc8t0I=");
+            .decode("AMhf5ywVwITZMsff/eCyudZx9JDmkkkbV6PInzG4p8x3VqVJSFiMvnvlEKWuRob/1eaIetR31IYeAbm0NdOuHH8Qi+Rexi1wLlpzIo1gstHWBfZzy1+qHRV5A4TqPp15YzBPm0WSggW6PbSn+F4lf57VCnHF7p8SvzAA2ZZJPYJURt8X7bbg+H3i+PEjH9DXItNEqs2sNcug37xZQDLm7X36nOoGPs54XsEGzPdEV+itQNGUFEjY6X9Uv+Acuks7NpyGvCoKxGwgKgE5XyJ+nNKlyHHOLb6N1NuHyBrZrgtY/JYJHRooo5CEqYKBqdFnmbTVGEkCvJKxLnjwKWf+fEPoWeQFj5ObDjcKMZf2Jm2Ae69x+ikU5gBXsRmoF94GXTLfN0/vLt98KDPnxwAQL9j5V1jGOY8jQl6MLxEs56cwXN0dqCnImzVH3TZT1cJ8SW1BRX6qIVxEzjsSGx3yxF3suAilPMqGRp4ffyopjMD1JXiKR2RwLKzizUe5e8XyGOy9fplzhw3jVzTRyUZTRSZKkMLWcQ/gv0E4aONNqs4P+NameAZYOD12qRkxosQQP5uux6B2nRyZ7sAV54DgFyLiRcq1FvwKw2EPQdk4HDoePrO/RNUbyNddnM/mMgj4FW65xCoT1LmjrIjsv/Ggdlx46ueczhMgtBunx1/w8k8V+l8LVZ8gAT6wkU5J+DPQalQguMg12Jzug3q4TbdHiGCmD9EunCwOmsLuLJkz6EcSYXtrlDEnAM+hicw7iergYLLlMXpfTdGxJCWJmP4zqUFeTTmsmhsjGBt7NiEB/9pFFEB3pSbf4iiUukw63Eo8Aqnf4iwob6X1QviCWuc8t0LUlT9vALgh/f2DPVOOmR0RW6bgRvc7DSF20V/omg+YBw==");
     private static final byte[] genericServerPublicParams = Base64.getDecoder()
             .decode("AByD873dTilmOSG0TjKrvpeaKEsUmIO8Vx9BeMmftwUs9v7ikPwM8P3OHyT0+X3EUMZrSe9VUp26Wai51Q9I8mdk0hX/yo7CeFGJyzoOqn8e/i4Ygbn5HoAyXJx5eXfIbqpc0bIxzju4H/HOQeOpt6h742qii5u/cbwOhFZCsMIbElZTaeU+BWMBQiZHIGHT5IE0qCordQKZ5iPZom0HeFa8Yq0ShuEyAl0WINBiY6xE3H/9WnvzXBbMuuk//eRxXgzO8ieCeK8FwQNxbfXqZm6Ro1cMhCOF3u7xoX83QhpN");
 
     private static final byte[] genericServerPublicParams = Base64.getDecoder()
             .decode("AByD873dTilmOSG0TjKrvpeaKEsUmIO8Vx9BeMmftwUs9v7ikPwM8P3OHyT0+X3EUMZrSe9VUp26Wai51Q9I8mdk0hX/yo7CeFGJyzoOqn8e/i4Ygbn5HoAyXJx5eXfIbqpc0bIxzju4H/HOQeOpt6h742qii5u/cbwOhFZCsMIbElZTaeU+BWMBQiZHIGHT5IE0qCordQKZ5iPZom0HeFa8Yq0ShuEyAl0WINBiY6xE3H/9WnvzXBbMuuk//eRxXgzO8ieCeK8FwQNxbfXqZm6Ro1cMhCOF3u7xoX83QhpN");
 
index e99b049c13c26b79caf7a40a7a3542045e967fc6..c4d87cc3998e5b96875eaa47dadf87236f4c7f44 100644 (file)
@@ -42,7 +42,7 @@ class StagingConfig {
     private static final Optional<SignalProxy> proxy = Optional.empty();
 
     private static final byte[] zkGroupServerPublicParams = Base64.getDecoder()
     private static final Optional<SignalProxy> proxy = Optional.empty();
 
     private static final byte[] zkGroupServerPublicParams = Base64.getDecoder()
-            .decode("ABSY21VckQcbSXVNCGRYJcfWHiAMZmpTtTELcDmxgdFbtp/bWsSxZdMKzfCp8rvIs8ocCU3B37fT3r4Mi5qAemeGeR2X+/YmOGR5ofui7tD5mDQfstAI9i+4WpMtIe8KC3wU5w3Inq3uNWVmoGtpKndsNfwJrCg0Hd9zmObhypUnSkfYn2ooMOOnBpfdanRtrvetZUayDMSC5iSRcXKpdlukrpzzsCIvEwjwQlJYVPOQPj4V0F4UXXBdHSLK05uoPBCQG8G9rYIGedYsClJXnbrgGYG3eMTG5hnx4X4ntARBgELuMWWUEEfSK0mjXg+/2lPmWcTZWR9nkqgQQP0tbzuiPm74H2wMO4u1Wafe+UwyIlIT9L7KLS19Aw8r4sPrXZSSsOZ6s7M1+rTJN0bI5CKY2PX29y5Ok3jSWufIKcgKOnWoP67d5b2du2ZVJjpjfibNIHbT/cegy/sBLoFwtHogVYUewANUAXIaMPyCLRArsKhfJ5wBtTminG/PAvuBdJ70Z/bXVPf8TVsR292zQ65xwvWTejROW6AZX6aqucUjlENAErBme1YHmOSpU6tr6doJ66dPzVAWIanmO/5mgjNEDeK7DDqQdB1xd03HT2Qs2TxY3kCK8aAb/0iM0HQiXjxZ9HIgYhbtvGEnDKW5ILSUydqH/KBhW4Pb0jZWnqN/YgbWDKeJxnDbYcUob5ZY5Lt5ZCMKuaGUvCJRrCtuugSMaqjowCGRempsDdJEt+cMaalhZ6gczklJB/IbdwENW9KeVFPoFNFzhxWUIS5ML9riVYhAtE6JE5jX0xiHNVIIPthb458cfA8daR0nYfYAUKogQArm0iBezOO+mPk5vCM=");
+            .decode("ABSY21VckQcbSXVNCGRYJcfWHiAMZmpTtTELcDmxgdFbtp/bWsSxZdMKzfCp8rvIs8ocCU3B37fT3r4Mi5qAemeGeR2X+/YmOGR5ofui7tD5mDQfstAI9i+4WpMtIe8KC3wU5w3Inq3uNWVmoGtpKndsNfwJrCg0Hd9zmObhypUnSkfYn2ooMOOnBpfdanRtrvetZUayDMSC5iSRcXKpdlukrpzzsCIvEwjwQlJYVPOQPj4V0F4UXXBdHSLK05uoPBCQG8G9rYIGedYsClJXnbrgGYG3eMTG5hnx4X4ntARBgELuMWWUEEfSK0mjXg+/2lPmWcTZWR9nkqgQQP0tbzuiPm74H2wMO4u1Wafe+UwyIlIT9L7KLS19Aw8r4sPrXZSSsOZ6s7M1+rTJN0bI5CKY2PX29y5Ok3jSWufIKcgKOnWoP67d5b2du2ZVJjpjfibNIHbT/cegy/sBLoFwtHogVYUewANUAXIaMPyCLRArsKhfJ5wBtTminG/PAvuBdJ70Z/bXVPf8TVsR292zQ65xwvWTejROW6AZX6aqucUjlENAErBme1YHmOSpU6tr6doJ66dPzVAWIanmO/5mgjNEDeK7DDqQdB1xd03HT2Qs2TxY3kCK8aAb/0iM0HQiXjxZ9HIgYhbtvGEnDKW5ILSUydqH/KBhW4Pb0jZWnqN/YgbWDKeJxnDbYcUob5ZY5Lt5ZCMKuaGUvCJRrCtuugSMaqjowCGRempsDdJEt+cMaalhZ6gczklJB/IbdwENW9KeVFPoFNFzhxWUIS5ML9riVYhAtE6JE5jX0xiHNVIIPthb458cfA8daR0nYfYAUKogQArm0iBezOO+mPk5vCNWI+wwkyFCqNDXz/qxl1gAntuCJtSfq9OC3NkdhQlgYQ==");
     private static final byte[] genericServerPublicParams = Base64.getDecoder()
             .decode("AHILOIrFPXX9laLbalbA9+L1CXpSbM/bTJXZGZiuyK1JaI6dK5FHHWL6tWxmHKYAZTSYmElmJ5z2A5YcirjO/yfoemE03FItyaf8W1fE4p14hzb5qnrmfXUSiAIVrhaXVwIwSzH6RL/+EO8jFIjJ/YfExfJ8aBl48CKHgu1+A6kWynhttonvWWx6h7924mIzW0Czj2ROuh4LwQyZypex4GuOPW8sgIT21KNZaafgg+KbV7XM1x1tF3XA17B4uGUaDbDw2O+nR1+U5p6qHPzmJ7ggFjSN6Utu+35dS1sS0P9N");
 
     private static final byte[] genericServerPublicParams = Base64.getDecoder()
             .decode("AHILOIrFPXX9laLbalbA9+L1CXpSbM/bTJXZGZiuyK1JaI6dK5FHHWL6tWxmHKYAZTSYmElmJ5z2A5YcirjO/yfoemE03FItyaf8W1fE4p14hzb5qnrmfXUSiAIVrhaXVwIwSzH6RL/+EO8jFIjJ/YfExfJ8aBl48CKHgu1+A6kWynhttonvWWx6h7924mIzW0Czj2ROuh4LwQyZypex4GuOPW8sgIT21KNZaafgg+KbV7XM1x1tF3XA17B4uGUaDbDw2O+nR1+U5p6qHPzmJ7ggFjSN6Utu+35dS1sS0P9N");
 
index 4789790eb109c83cb1a1fcf3667420f8949bb361..0d516eb661675afb042c795ed4d70e6ccf36671f 100644 (file)
@@ -201,7 +201,6 @@ public class SyncHelper {
                 Optional.ofNullable(contact == null ? null : contact.color()),
                 Optional.ofNullable(verifiedMessage),
                 Optional.ofNullable(profileKey),
                 Optional.ofNullable(contact == null ? null : contact.color()),
                 Optional.ofNullable(verifiedMessage),
                 Optional.ofNullable(profileKey),
-                contact != null && contact.isBlocked(),
                 Optional.ofNullable(contact == null ? null : contact.messageExpirationTime()),
                 Optional.empty(),
                 contact != null && contact.isArchived());
                 Optional.ofNullable(contact == null ? null : contact.messageExpirationTime()),
                 Optional.empty(),
                 contact != null && contact.isArchived());
@@ -357,7 +356,6 @@ public class SyncHelper {
             if (c.getExpirationTimer().isPresent()) {
                 builder.withMessageExpirationTime(c.getExpirationTimer().get());
             }
             if (c.getExpirationTimer().isPresent()) {
                 builder.withMessageExpirationTime(c.getExpirationTimer().get());
             }
-            builder.withIsBlocked(c.isBlocked());
             builder.withIsArchived(c.isArchived());
             account.getContactStore().storeContact(recipientId, builder.build());
 
             builder.withIsArchived(c.isArchived());
             account.getContactStore().storeContact(recipientId, builder.build());
 
index 3f99d8e6bf9d164e48695f2d7e94954a57bea251..b43dfba45c0f91efb7cff2259abace3103beb28c 100644 (file)
@@ -443,7 +443,7 @@ public class ManagerImpl implements Manager {
 
         try {
             dependencies.getAccountManager().submitRateLimitRecaptchaChallenge(challenge, captcha);
 
         try {
             dependencies.getAccountManager().submitRateLimitRecaptchaChallenge(challenge, captcha);
-        } catch (org.whispersystems.signalservice.api.push.exceptions.CaptchaRejectedException ignored) {
+        } catch (org.whispersystems.signalservice.internal.push.exceptions.CaptchaRejectedException ignored) {
             throw new CaptchaRejectedException();
         }
     }
             throw new CaptchaRejectedException();
         }
     }
index 5bae64c82969ba29e69626dceb106739d69e2c36..28e7b6635f177e814f6e33ce068120d2e3c0c374 100644 (file)
@@ -104,6 +104,23 @@ public class ContactRecordProcessor extends DefaultStorageRecordProcessor<Signal
             profileFamilyName = local.getProfileFamilyName().orElse("");
         }
 
             profileFamilyName = local.getProfileFamilyName().orElse("");
         }
 
+        String nicknameGivenName;
+        String nicknameFamilyName;
+        if (remote.getNicknameGivenName().isPresent()) {
+            nicknameGivenName = remote.getNicknameGivenName().orElse("");
+            nicknameFamilyName = remote.getNicknameFamilyName().orElse("");
+        } else {
+            nicknameGivenName = local.getNicknameGivenName().orElse("");
+            nicknameFamilyName = local.getNicknameFamilyName().orElse("");
+        }
+
+        if (nicknameGivenName.isBlank() && !nicknameFamilyName.isBlank()) {
+            logger.debug("Processed invalid nickname. Missing given name.");
+
+            nicknameGivenName = "";
+            nicknameFamilyName = "";
+        }
+
         IdentityState identityState;
         byte[] identityKey;
         if (remote.getIdentityKey().isPresent() && (
         IdentityState identityState;
         byte[] identityKey;
         if (remote.getIdentityKey().isPresent() && (
@@ -181,6 +198,7 @@ public class ContactRecordProcessor extends DefaultStorageRecordProcessor<Signal
                 : remote.getSystemFamilyName().orElse("");
         final var systemNickname = remote.getSystemNickname().orElse("");
         final var pniSignatureVerified = remote.isPniSignatureVerified() || local.isPniSignatureVerified();
                 : remote.getSystemFamilyName().orElse("");
         final var systemNickname = remote.getSystemNickname().orElse("");
         final var pniSignatureVerified = remote.isPniSignatureVerified() || local.isPniSignatureVerified();
+        final var note = remote.getNote().or(local::getNote).orElse("");
 
         final var mergedBuilder = new SignalContactRecord.Builder(remote.getId().getRaw(), aci, unknownFields).setE164(
                         e164)
 
         final var mergedBuilder = new SignalContactRecord.Builder(remote.getId().getRaw(), aci, unknownFields).setE164(
                         e164)
@@ -202,7 +220,10 @@ public class ContactRecordProcessor extends DefaultStorageRecordProcessor<Signal
                 .setHideStory(hideStory)
                 .setUnregisteredTimestamp(unregisteredTimestamp)
                 .setHidden(hidden)
                 .setHideStory(hideStory)
                 .setUnregisteredTimestamp(unregisteredTimestamp)
                 .setHidden(hidden)
-                .setPniSignatureVerified(pniSignatureVerified);
+                .setPniSignatureVerified(pniSignatureVerified)
+                .setNicknameGivenName(nicknameGivenName)
+                .setNicknameFamilyName(nicknameFamilyName)
+                .setNote(note);
         final var merged = mergedBuilder.build();
 
         final var matchesRemote = doProtosMatch(merged, remote);
         final var merged = mergedBuilder.build();
 
         final var matchesRemote = doProtosMatch(merged, remote);
index 125c2642630fa0703ab7663b2202b8526bc44b41..ad9d632b677639595a286335cc83ed24afaff09e 100644 (file)
@@ -15,7 +15,7 @@ dependencyResolutionManagement {
             library("slf4j.jul", "org.slf4j", "jul-to-slf4j").versionRef("slf4j")
             library("logback", "ch.qos.logback", "logback-classic").version("1.5.3")
 
             library("slf4j.jul", "org.slf4j", "jul-to-slf4j").versionRef("slf4j")
             library("logback", "ch.qos.logback", "logback-classic").version("1.5.3")
 
-            library("signalservice", "com.github.turasa", "signal-service-java").version("2.15.3_unofficial_98")
+            library("signalservice", "com.github.turasa", "signal-service-java").version("2.15.3_unofficial_99")
             library("sqlite", "org.xerial", "sqlite-jdbc").version("3.45.2.0")
             library("hikari", "com.zaxxer", "HikariCP").version("5.1.0")
             library("junit.jupiter", "org.junit.jupiter", "junit-jupiter").version("5.10.2")
             library("sqlite", "org.xerial", "sqlite-jdbc").version("3.45.2.0")
             library("hikari", "com.zaxxer", "HikariCP").version("5.1.0")
             library("junit.jupiter", "org.junit.jupiter", "junit-jupiter").version("5.10.2")
index 84d7f1049328dc94dbcc4a44f344c81b87395bc5..8a0ddc06683a3d72eba2ea2c3e47b6b44a1d5dc2 100644 (file)
@@ -8,7 +8,7 @@ public class BaseConfig {
     public static final String PROJECT_VERSION = BaseConfig.class.getPackage().getImplementationVersion();
 
     static final String USER_AGENT_SIGNAL_ANDROID = Optional.ofNullable(System.getenv("SIGNAL_CLI_USER_AGENT"))
     public static final String PROJECT_VERSION = BaseConfig.class.getPackage().getImplementationVersion();
 
     static final String USER_AGENT_SIGNAL_ANDROID = Optional.ofNullable(System.getenv("SIGNAL_CLI_USER_AGENT"))
-            .orElse("Signal-Android/7.1.3");
+            .orElse("Signal-Android/7.2.0");
     static final String USER_AGENT_SIGNAL_CLI = PROJECT_NAME == null
             ? "signal-cli"
             : PROJECT_NAME + "/" + PROJECT_VERSION;
     static final String USER_AGENT_SIGNAL_CLI = PROJECT_NAME == null
             ? "signal-cli"
             : PROJECT_NAME + "/" + PROJECT_VERSION;
index 108142e32b9990c6978b2fa97cab36ffca9ac7b2..7693240260e7cc987919f8eaed665cae98ee20b8 100644 (file)
@@ -91,7 +91,7 @@ public class SendMessageResultUtils {
             return String.format(
                     "CAPTCHA proof required for sending to \"%s\", available options \"%s\" with challenge token \"%s\", or wait \"%d\" seconds.\n"
                             + (
             return String.format(
                     "CAPTCHA proof required for sending to \"%s\", available options \"%s\" with challenge token \"%s\", or wait \"%d\" seconds.\n"
                             + (
-                            failure.getOptions().contains(ProofRequiredException.Option.RECAPTCHA)
+                            failure.getOptions().contains(ProofRequiredException.Option.CAPTCHA)
                                     ? """
                                       To get the captcha token, go to https://signalcaptchas.org/challenge/generate.html
                                       After solving the captcha, right-click on the "Open Signal" link and copy the link.
                                     ? """
                                       To get the captcha token, go to https://signalcaptchas.org/challenge/generate.html
                                       After solving the captcha, right-click on the "Open Signal" link and copy the link.