]> nmode's Git Repositories - signal-cli/commitdiff
Support serviceId based safety number for scannable safety numbers
authorAsamK <asamk@gmx.de>
Fri, 6 Oct 2023 19:42:28 +0000 (21:42 +0200)
committerAsamK <asamk@gmx.de>
Fri, 6 Oct 2023 19:42:28 +0000 (21:42 +0200)
lib/src/main/java/org/asamk/signal/manager/helper/IdentityHelper.java

index 61973f33864626cf9595f6f795063fcf118b97e4..c1e22c97b271571908396452a895ba923afe7af5 100644 (file)
@@ -58,22 +58,25 @@ public class IdentityHelper {
     }
 
     public String computeSafetyNumber(ServiceId serviceId, IdentityKey theirIdentityKey) {
-        final Fingerprint fingerprint = computeSafetyNumberFingerprint(serviceId, theirIdentityKey);
+        final var fingerprint = computeSafetyNumberFingerprint(serviceId, theirIdentityKey, false);
         return fingerprint == null ? null : fingerprint.getDisplayableFingerprint().getDisplayText();
     }
 
     public ScannableFingerprint computeSafetyNumberForScanning(ServiceId serviceId, IdentityKey theirIdentityKey) {
-        final Fingerprint fingerprint = computeSafetyNumberFingerprint(serviceId, theirIdentityKey);
+        var fingerprint = computeSafetyNumberFingerprint(serviceId, theirIdentityKey, false);
+        if (fingerprint == null) {
+            fingerprint = computeSafetyNumberFingerprint(serviceId, theirIdentityKey, true);
+        }
         return fingerprint == null ? null : fingerprint.getScannableFingerprint();
     }
 
     private Fingerprint computeSafetyNumberFingerprint(
-            final ServiceId serviceId, final IdentityKey theirIdentityKey
+            final ServiceId serviceId, final IdentityKey theirIdentityKey, boolean useServiceId
     ) {
         final var recipientId = account.getRecipientResolver().resolveRecipient(serviceId);
         final var address = account.getRecipientAddressResolver().resolveRecipientAddress(recipientId);
 
-        if (false) {
+        if (useServiceId) {
             if (serviceId.isUnknown()) {
                 return null;
             }