]> nmode's Git Repositories - signal-cli/commitdiff
Refactor to remove ProfileKeyProvider and UnidentifiedAccessSenderCertificateProvider
authorAsamK <asamk@gmx.de>
Tue, 12 Oct 2021 18:48:56 +0000 (20:48 +0200)
committerAsamK <asamk@gmx.de>
Tue, 12 Oct 2021 18:57:25 +0000 (20:57 +0200)
lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java
lib/src/main/java/org/asamk/signal/manager/helper/ProfileHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/ProfileKeyProvider.java [deleted file]
lib/src/main/java/org/asamk/signal/manager/helper/UnidentifiedAccessHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/UnidentifiedAccessSenderCertificateProvider.java [deleted file]

index 8ccab36bbed56d62bbbc94bd5f888cb99f371eeb..f88469acc219bb39118e9a6a1a85660c90f40f99 100644 (file)
@@ -176,14 +176,13 @@ public class ManagerImpl implements Manager {
 
         this.attachmentHelper = new AttachmentHelper(dependencies, attachmentStore);
         this.pinHelper = new PinHelper(dependencies.getKeyBackupService());
-        final var unidentifiedAccessHelper = new UnidentifiedAccessHelper(account::getProfileKey,
-                account.getProfileStore()::getProfileKey,
-                this::getRecipientProfile,
-                this::getSenderCertificate);
+        final var unidentifiedAccessHelper = new UnidentifiedAccessHelper(account,
+                dependencies,
+                account::getProfileKey,
+                this::getRecipientProfile);
         this.profileHelper = new ProfileHelper(account,
                 dependencies,
                 avatarStore,
-                account.getProfileStore()::getProfileKey,
                 unidentifiedAccessHelper::getAccessFor,
                 this::resolveSignalServiceAddress);
         final GroupV2Helper groupV2Helper = new GroupV2Helper(profileHelper::getRecipientProfileKeyCredential,
@@ -782,22 +781,6 @@ public class ManagerImpl implements Manager {
         }
     }
 
-    private byte[] getSenderCertificate() {
-        byte[] certificate;
-        try {
-            if (account.isPhoneNumberShared()) {
-                certificate = dependencies.getAccountManager().getSenderCertificate();
-            } else {
-                certificate = dependencies.getAccountManager().getSenderCertificateForPhoneNumberPrivacy();
-            }
-        } catch (IOException e) {
-            logger.warn("Failed to get sender certificate, ignoring: {}", e.getMessage());
-            return null;
-        }
-        // TODO cache for a day
-        return certificate;
-    }
-
     private RecipientId refreshRegisteredUser(RecipientId recipientId) throws IOException {
         final var address = resolveSignalServiceAddress(recipientId);
         if (!address.getNumber().isPresent()) {
index e24d41fad91464144f11f8e5ed67ad6e565c4ecc..7a492d9f98dba0291ef7ea67f28d0ed69af999cf 100644 (file)
@@ -45,7 +45,6 @@ public final class ProfileHelper {
     private final SignalAccount account;
     private final SignalDependencies dependencies;
     private final AvatarStore avatarStore;
-    private final ProfileKeyProvider profileKeyProvider;
     private final UnidentifiedAccessProvider unidentifiedAccessProvider;
     private final SignalServiceAddressResolver addressResolver;
 
@@ -53,14 +52,12 @@ public final class ProfileHelper {
             final SignalAccount account,
             final SignalDependencies dependencies,
             final AvatarStore avatarStore,
-            final ProfileKeyProvider profileKeyProvider,
             final UnidentifiedAccessProvider unidentifiedAccessProvider,
             final SignalServiceAddressResolver addressResolver
     ) {
         this.account = account;
         this.dependencies = dependencies;
         this.avatarStore = avatarStore;
-        this.profileKeyProvider = profileKeyProvider;
         this.unidentifiedAccessProvider = unidentifiedAccessProvider;
         this.addressResolver = addressResolver;
     }
@@ -296,7 +293,7 @@ public final class ProfileHelper {
             RecipientId recipientId, SignalServiceProfile.RequestType requestType
     ) {
         var unidentifiedAccess = getUnidentifiedAccess(recipientId);
-        var profileKey = Optional.fromNullable(profileKeyProvider.getProfileKey(recipientId));
+        var profileKey = Optional.fromNullable(account.getProfileStore().getProfileKey(recipientId));
 
         final var address = addressResolver.resolveSignalServiceAddress(recipientId);
         return retrieveProfile(address, profileKey, unidentifiedAccess, requestType);
diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/ProfileKeyProvider.java b/lib/src/main/java/org/asamk/signal/manager/helper/ProfileKeyProvider.java
deleted file mode 100644 (file)
index b98d674..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.asamk.signal.manager.helper;
-
-import org.asamk.signal.manager.storage.recipients.RecipientId;
-import org.signal.zkgroup.profiles.ProfileKey;
-
-public interface ProfileKeyProvider {
-
-    ProfileKey getProfileKey(RecipientId address);
-}
index 87e23c1b33aea4782536d3be4840f6402afb2fba..661a7f96c0ed3f705cd97405b75a5a1ea2c2d73e 100644 (file)
@@ -1,11 +1,16 @@
 package org.asamk.signal.manager.helper;
 
+import org.asamk.signal.manager.SignalDependencies;
+import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.signal.libsignal.metadata.certificate.InvalidCertificateException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.whispersystems.libsignal.util.guava.Optional;
 import org.whispersystems.signalservice.api.crypto.UnidentifiedAccess;
 import org.whispersystems.signalservice.api.crypto.UnidentifiedAccessPair;
 
+import java.io.IOException;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -13,24 +18,39 @@ import static org.whispersystems.signalservice.internal.util.Util.getSecretBytes
 
 public class UnidentifiedAccessHelper {
 
-    private final SelfProfileKeyProvider selfProfileKeyProvider;
-
-    private final ProfileKeyProvider profileKeyProvider;
+    private final static Logger logger = LoggerFactory.getLogger(UnidentifiedAccessHelper.class);
 
+    private final SignalAccount account;
+    private final SignalDependencies dependencies;
+    private final SelfProfileKeyProvider selfProfileKeyProvider;
     private final ProfileProvider profileProvider;
 
-    private final UnidentifiedAccessSenderCertificateProvider senderCertificateProvider;
-
     public UnidentifiedAccessHelper(
+            final SignalAccount account,
+            final SignalDependencies dependencies,
             final SelfProfileKeyProvider selfProfileKeyProvider,
-            final ProfileKeyProvider profileKeyProvider,
-            final ProfileProvider profileProvider,
-            final UnidentifiedAccessSenderCertificateProvider senderCertificateProvider
+            final ProfileProvider profileProvider
     ) {
+        this.account = account;
+        this.dependencies = dependencies;
         this.selfProfileKeyProvider = selfProfileKeyProvider;
-        this.profileKeyProvider = profileKeyProvider;
         this.profileProvider = profileProvider;
-        this.senderCertificateProvider = senderCertificateProvider;
+    }
+
+    private byte[] getSenderCertificate() {
+        byte[] certificate;
+        try {
+            if (account.isPhoneNumberShared()) {
+                certificate = dependencies.getAccountManager().getSenderCertificate();
+            } else {
+                certificate = dependencies.getAccountManager().getSenderCertificateForPhoneNumberPrivacy();
+            }
+        } catch (IOException e) {
+            logger.warn("Failed to get sender certificate, ignoring: {}", e.getMessage());
+            return null;
+        }
+        // TODO cache for a day
+        return certificate;
     }
 
     private byte[] getSelfUnidentifiedAccessKey() {
@@ -45,7 +65,7 @@ public class UnidentifiedAccessHelper {
 
         switch (targetProfile.getUnidentifiedAccessMode()) {
             case ENABLED:
-                var theirProfileKey = profileKeyProvider.getProfileKey(recipient);
+                var theirProfileKey = account.getProfileStore().getProfileKey(recipient);
                 if (theirProfileKey == null) {
                     return null;
                 }
@@ -60,7 +80,7 @@ public class UnidentifiedAccessHelper {
 
     public Optional<UnidentifiedAccessPair> getAccessForSync() {
         var selfUnidentifiedAccessKey = getSelfUnidentifiedAccessKey();
-        var selfUnidentifiedAccessCertificate = senderCertificateProvider.getSenderCertificate();
+        var selfUnidentifiedAccessCertificate = getSenderCertificate();
 
         if (selfUnidentifiedAccessKey == null || selfUnidentifiedAccessCertificate == null) {
             return Optional.absent();
@@ -82,7 +102,7 @@ public class UnidentifiedAccessHelper {
     public Optional<UnidentifiedAccessPair> getAccessFor(RecipientId recipient) {
         var recipientUnidentifiedAccessKey = getTargetUnidentifiedAccessKey(recipient);
         var selfUnidentifiedAccessKey = getSelfUnidentifiedAccessKey();
-        var selfUnidentifiedAccessCertificate = senderCertificateProvider.getSenderCertificate();
+        var selfUnidentifiedAccessCertificate = getSenderCertificate();
 
         if (recipientUnidentifiedAccessKey == null
                 || selfUnidentifiedAccessKey == null
diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/UnidentifiedAccessSenderCertificateProvider.java b/lib/src/main/java/org/asamk/signal/manager/helper/UnidentifiedAccessSenderCertificateProvider.java
deleted file mode 100644 (file)
index b059734..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-package org.asamk.signal.manager.helper;
-
-public interface UnidentifiedAccessSenderCertificateProvider {
-
-    byte[] getSenderCertificate();
-}