mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 03:59:35 +01:00
migrate key manager from requery to room
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
parent
70ae6eb27d
commit
4513866c1d
@ -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) {
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user