Browse Source

migrate key manager from requery to room

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
Andy Scherzinger 2 years ago
parent
commit
4513866c1d

+ 3 - 3
app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java

@@ -28,9 +28,9 @@ import com.nextcloud.talk.BuildConfig;
 import com.nextcloud.talk.R;
 import com.nextcloud.talk.api.NcApi;
 import com.nextcloud.talk.application.NextcloudTalkApplication;
+import com.nextcloud.talk.users.UserManager;
 import com.nextcloud.talk.utils.ApiUtils;
 import com.nextcloud.talk.utils.LoggingUtils;
-import com.nextcloud.talk.utils.database.user.UserUtils;
 import com.nextcloud.talk.utils.preferences.AppPreferences;
 import com.nextcloud.talk.utils.ssl.MagicKeyManager;
 import com.nextcloud.talk.utils.ssl.MagicTrustManager;
@@ -127,7 +127,7 @@ public class RestModule {
 
     @Singleton
     @Provides
-    MagicKeyManager provideKeyManager(AppPreferences appPreferences, UserUtils userUtils) {
+    MagicKeyManager provideKeyManager(AppPreferences appPreferences, UserManager userManager) {
         KeyStore keyStore = null;
         try {
             keyStore = KeyStore.getInstance("AndroidKeyStore");
@@ -135,7 +135,7 @@ public class RestModule {
             KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
             kmf.init(keyStore, null);
             X509KeyManager origKm = (X509KeyManager) kmf.getKeyManagers()[0];
-            return new MagicKeyManager(origKm, userUtils, appPreferences);
+            return new MagicKeyManager(origKm, userManager, appPreferences);
         } catch (KeyStoreException e) {
             Log.e(TAG, "KeyStoreException " + e.getLocalizedMessage());
         } catch (CertificateException e) {

+ 20 - 12
app/src/main/java/com/nextcloud/talk/utils/ssl/MagicKeyManager.java

@@ -25,30 +25,37 @@ import android.security.KeyChain;
 import android.security.KeyChainException;
 import android.text.TextUtils;
 import android.util.Log;
-import androidx.annotation.Nullable;
+
 import com.nextcloud.talk.application.NextcloudTalkApplication;
-import com.nextcloud.talk.models.database.UserEntity;
-import com.nextcloud.talk.utils.database.user.UserUtils;
+import com.nextcloud.talk.data.user.model.User;
+import com.nextcloud.talk.users.UserManager;
 import com.nextcloud.talk.utils.preferences.AppPreferences;
 
-import javax.net.ssl.X509KeyManager;
 import java.net.Socket;
 import java.security.Principal;
 import java.security.PrivateKey;
 import java.security.cert.X509Certificate;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.net.ssl.X509KeyManager;
+
+import androidx.annotation.Nullable;
 
 public class MagicKeyManager implements X509KeyManager {
     private static final String TAG = "MagicKeyManager";
     private final X509KeyManager keyManager;
 
-    private UserUtils userUtils;
+    private UserManager userManager;
     private AppPreferences appPreferences;
     private Context context;
 
-    public MagicKeyManager(X509KeyManager keyManager, UserUtils userUtils, AppPreferences appPreferences) {
+    public MagicKeyManager(X509KeyManager keyManager, UserManager userManager, AppPreferences appPreferences) {
         this.keyManager = keyManager;
-        this.userUtils = userUtils;
+        this.userManager = userManager;
         this.appPreferences = appPreferences;
 
         context = NextcloudTalkApplication.Companion.getSharedApplication().getApplicationContext();
@@ -57,9 +64,10 @@ public class MagicKeyManager implements X509KeyManager {
     @Override
     public String chooseClientAlias(String[] strings, Principal[] principals, Socket socket) {
         String alias;
-        if ((userUtils.getCurrentUser() != null && !TextUtils.isEmpty(alias = userUtils.getCurrentUser().getClientCertificate())) ||
-                !TextUtils.isEmpty(alias = appPreferences.getTemporaryClientCertAlias())
-                        && new ArrayList<>(Arrays.asList(getClientAliases())).contains(alias)) {
+        if ((userManager.getCurrentUser().blockingGet() != null &&
+            !TextUtils.isEmpty(alias = userManager.getCurrentUser().blockingGet().getClientCertificate())) ||
+            !TextUtils.isEmpty(alias = appPreferences.getTemporaryClientCertAlias())
+                && new ArrayList<>(Arrays.asList(getClientAliases())).contains(alias)) {
             return alias;
         }
 
@@ -120,7 +128,7 @@ public class MagicKeyManager implements X509KeyManager {
             aliases.add(alias);
         }
 
-        List<UserEntity> userEntities = userUtils.getUsers();
+        List<User> userEntities = userManager.getUsers().blockingGet();
         for (int i = 0; i < userEntities.size(); i++) {
             if (!TextUtils.isEmpty(alias = userEntities.get(i).getClientCertificate())) {
                 aliases.add(alias);