From 9b56aa625959f3bc8d0fa6bedc4be52b4862b053 Mon Sep 17 00:00:00 2001 From: AsamK Date: Thu, 17 Aug 2017 21:31:07 +0200 Subject: [PATCH] Update libsignal-service --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 54783 -> 54712 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 6 +- src/main/java/org/asamk/signal/Main.java | 11 ++-- src/main/java/org/asamk/signal/Manager.java | 64 ++++++-------------- 6 files changed, 30 insertions(+), 57 deletions(-) diff --git a/build.gradle b/build.gradle index 5885ce5b..5c1470ee 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,7 @@ repositories { } dependencies { - compile 'com.github.turasa:signal-service-java:2.5.11_unofficial_1' + compile 'com.github.turasa:signal-service-java:2.5.17_unofficial_1' compile 'org.bouncycastle:bcprov-jdk15on:1.55' compile 'net.sourceforge.argparse4j:argparse4j:0.7.0' compile 'org.freedesktop.dbus:dbus-java:2.7.0' diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 88731cec4ecf6571ec00dc24d749961d2d3347b4..88a5f3eb505fa1aa2905305128984dc872f1c1f6 100644 GIT binary patch delta 17164 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 PI6V3MRV_B>BOp-#cxBg_ delta 17118 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 t;ypC^!9nZE{8zOYA56Bos;2nN-;e+R diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 29edf730..41d45baf 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat May 20 11:26:11 CEST 2017 +#Thu Aug 17 20:18:16 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.0.2-bin.zip diff --git a/gradlew b/gradlew index 4453ccea..cccdd3d5 100755 --- a/gradlew +++ b/gradlew @@ -33,11 +33,11 @@ DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -155,7 +155,7 @@ if $cygwin ; then fi # Escape application args -save ( ) { +save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } diff --git a/src/main/java/org/asamk/signal/Main.java b/src/main/java/org/asamk/signal/Main.java index 45adf11f..de076a87 100644 --- a/src/main/java/org/asamk/signal/Main.java +++ b/src/main/java/org/asamk/signal/Main.java @@ -1012,13 +1012,10 @@ public class Main { } if (syncMessage.getVerified().isPresent()) { System.out.println("Received sync message with verified identities:"); - final List verifiedList = syncMessage.getVerified().get(); - for (VerifiedMessage v : verifiedList) { - System.out.println(" - " + v.getDestination() + ": " + v.getVerified()); - String safetyNumber = formatSafetyNumber(m.computeSafetyNumber(v.getDestination(), v.getIdentityKey())); - System.out.println(" " + safetyNumber); - } - + final VerifiedMessage verifiedMessage = syncMessage.getVerified().get(); + System.out.println(" - " + verifiedMessage.getDestination() + ": " + verifiedMessage.getVerified()); + String safetyNumber = formatSafetyNumber(m.computeSafetyNumber(verifiedMessage.getDestination(), verifiedMessage.getIdentityKey())); + System.out.println(" " + safetyNumber); } } } diff --git a/src/main/java/org/asamk/signal/Manager.java b/src/main/java/org/asamk/signal/Manager.java index dc979930..f159e412 100644 --- a/src/main/java/org/asamk/signal/Manager.java +++ b/src/main/java/org/asamk/signal/Manager.java @@ -368,7 +368,7 @@ class Manager implements Signal { } public void updateAccountAttributes() throws IOException { - accountManager.setAccountAttributes(signalingKey, signalProtocolStore.getLocalRegistrationId(), false, false, true); + accountManager.setAccountAttributes(signalingKey, signalProtocolStore.getLocalRegistrationId(), true); } public void unregister() throws IOException { @@ -481,24 +481,6 @@ class Manager implements Signal { return records; } - private PreKeyRecord getOrGenerateLastResortPreKey() { - if (signalProtocolStore.containsPreKey(Medium.MAX_VALUE)) { - try { - return signalProtocolStore.loadPreKey(Medium.MAX_VALUE); - } catch (InvalidKeyIdException e) { - signalProtocolStore.removePreKey(Medium.MAX_VALUE); - } - } - - ECKeyPair keyPair = Curve.generateKeyPair(); - PreKeyRecord record = new PreKeyRecord(Medium.MAX_VALUE, keyPair); - - signalProtocolStore.storePreKey(Medium.MAX_VALUE, record); - save(); - - return record; - } - private SignedPreKeyRecord generateSignedPreKey(IdentityKeyPair identityKeyPair) { try { ECKeyPair keyPair = Curve.generateKeyPair(); @@ -518,7 +500,7 @@ class Manager implements Signal { public void verifyAccount(String verificationCode) throws IOException { verificationCode = verificationCode.replace("-", ""); signalingKey = Util.getSecret(52); - accountManager.verifyAccountWithCode(verificationCode, signalingKey, signalProtocolStore.getLocalRegistrationId(), false, false, true); + accountManager.verifyAccountWithCode(verificationCode, signalingKey, signalProtocolStore.getLocalRegistrationId(), true); //accountManager.setGcmId(Optional.of(GoogleCloudMessaging.getInstance(this).register(REGISTRATION_ID))); registered = true; @@ -529,10 +511,9 @@ class Manager implements Signal { private void refreshPreKeys() throws IOException { List oneTimePreKeys = generatePreKeys(); - PreKeyRecord lastResortKey = getOrGenerateLastResortPreKey(); SignedPreKeyRecord signedPreKeyRecord = generateSignedPreKey(signalProtocolStore.getIdentityKeyPair()); - accountManager.setPreKeys(signalProtocolStore.getIdentityKeyPair().getPublicKey(), lastResortKey, signedPreKeyRecord, oneTimePreKeys); + accountManager.setPreKeys(signalProtocolStore.getIdentityKeyPair().getPublicKey(), signedPreKeyRecord, oneTimePreKeys); } @@ -1203,7 +1184,6 @@ class Manager implements Signal { if (rm.isContactsRequest()) { try { sendContacts(); - sendVerifiedMessage(); } catch (UntrustedIdentityException | IOException e) { e.printStackTrace(); } @@ -1298,10 +1278,8 @@ class Manager implements Signal { } } if (syncMessage.getVerified().isPresent()) { - final List verifiedList = syncMessage.getVerified().get(); - for (VerifiedMessage v : verifiedList) { - signalProtocolStore.saveIdentity(v.getDestination(), v.getIdentityKey(), TrustLevel.fromVerifiedState(v.getVerified())); - } + final VerifiedMessage verifiedMessage = syncMessage.getVerified().get(); + signalProtocolStore.saveIdentity(verifiedMessage.getDestination(), verifiedMessage.getIdentityKey(), TrustLevel.fromVerifiedState(verifiedMessage.getVerified())); } } } @@ -1513,8 +1491,21 @@ class Manager implements Signal { try (OutputStream fos = new FileOutputStream(contactsFile)) { DeviceContactsOutputStream out = new DeviceContactsOutputStream(fos); for (ContactInfo record : contactStore.getContacts()) { + VerifiedMessage verifiedMessage = null; + if (getIdentities().containsKey(record.number)) { + JsonIdentityKeyStore.Identity currentIdentity = null; + for (JsonIdentityKeyStore.Identity id : getIdentities().get(record.number)) { + if (currentIdentity == null || id.getDateAdded().after(currentIdentity.getDateAdded())) { + currentIdentity = id; + } + } + if (currentIdentity != null) { + verifiedMessage = new VerifiedMessage(record.number, currentIdentity.getIdentityKey(), currentIdentity.getTrustLevel().toVerifiedState(), currentIdentity.getDateAdded().getTime()); + } + } + out.write(new DeviceContact(record.number, Optional.fromNullable(record.name), - createContactAvatarAttachment(record.number), Optional.fromNullable(record.color))); + createContactAvatarAttachment(record.number), Optional.fromNullable(record.color), Optional.fromNullable(verifiedMessage))); } } @@ -1538,23 +1529,8 @@ class Manager implements Signal { } } - private void sendVerifiedMessage() throws IOException, UntrustedIdentityException { - List verifiedMessages = new LinkedList<>(); - for (Map.Entry> x : getIdentities().entrySet()) { - final String name = x.getKey(); - for (JsonIdentityKeyStore.Identity id : x.getValue()) { - if (id.getTrustLevel() == TrustLevel.TRUSTED_UNVERIFIED) { - continue; - } - VerifiedMessage verifiedMessage = new VerifiedMessage(name, id.getIdentityKey(), id.getTrustLevel().toVerifiedState()); - verifiedMessages.add(verifiedMessage); - } - } - sendSyncMessage(SignalServiceSyncMessage.forVerified(verifiedMessages)); - } - private void sendVerifiedMessage(String destination, IdentityKey identityKey, TrustLevel trustLevel) throws IOException, UntrustedIdentityException { - VerifiedMessage verifiedMessage = new VerifiedMessage(destination, identityKey, trustLevel.toVerifiedState()); + VerifiedMessage verifiedMessage = new VerifiedMessage(destination, identityKey, trustLevel.toVerifiedState(), System.currentTimeMillis()); sendSyncMessage(SignalServiceSyncMessage.forVerified(verifiedMessage)); } -- 2.50.1