mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 12:09:45 +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.R;
|
||||||
import com.nextcloud.talk.api.NcApi;
|
import com.nextcloud.talk.api.NcApi;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
|
import com.nextcloud.talk.users.UserManager;
|
||||||
import com.nextcloud.talk.utils.ApiUtils;
|
import com.nextcloud.talk.utils.ApiUtils;
|
||||||
import com.nextcloud.talk.utils.LoggingUtils;
|
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.preferences.AppPreferences;
|
||||||
import com.nextcloud.talk.utils.ssl.MagicKeyManager;
|
import com.nextcloud.talk.utils.ssl.MagicKeyManager;
|
||||||
import com.nextcloud.talk.utils.ssl.MagicTrustManager;
|
import com.nextcloud.talk.utils.ssl.MagicTrustManager;
|
||||||
@ -127,7 +127,7 @@ public class RestModule {
|
|||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
@Provides
|
@Provides
|
||||||
MagicKeyManager provideKeyManager(AppPreferences appPreferences, UserUtils userUtils) {
|
MagicKeyManager provideKeyManager(AppPreferences appPreferences, UserManager userManager) {
|
||||||
KeyStore keyStore = null;
|
KeyStore keyStore = null;
|
||||||
try {
|
try {
|
||||||
keyStore = KeyStore.getInstance("AndroidKeyStore");
|
keyStore = KeyStore.getInstance("AndroidKeyStore");
|
||||||
@ -135,7 +135,7 @@ public class RestModule {
|
|||||||
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
|
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
|
||||||
kmf.init(keyStore, null);
|
kmf.init(keyStore, null);
|
||||||
X509KeyManager origKm = (X509KeyManager) kmf.getKeyManagers()[0];
|
X509KeyManager origKm = (X509KeyManager) kmf.getKeyManagers()[0];
|
||||||
return new MagicKeyManager(origKm, userUtils, appPreferences);
|
return new MagicKeyManager(origKm, userManager, appPreferences);
|
||||||
} catch (KeyStoreException e) {
|
} catch (KeyStoreException e) {
|
||||||
Log.e(TAG, "KeyStoreException " + e.getLocalizedMessage());
|
Log.e(TAG, "KeyStoreException " + e.getLocalizedMessage());
|
||||||
} catch (CertificateException e) {
|
} catch (CertificateException e) {
|
||||||
|
@ -25,30 +25,37 @@ import android.security.KeyChain;
|
|||||||
import android.security.KeyChainException;
|
import android.security.KeyChainException;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
import com.nextcloud.talk.models.database.UserEntity;
|
import com.nextcloud.talk.data.user.model.User;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
import com.nextcloud.talk.users.UserManager;
|
||||||
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||||
|
|
||||||
import javax.net.ssl.X509KeyManager;
|
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.security.Principal;
|
import java.security.Principal;
|
||||||
import java.security.PrivateKey;
|
import java.security.PrivateKey;
|
||||||
import java.security.cert.X509Certificate;
|
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 {
|
public class MagicKeyManager implements X509KeyManager {
|
||||||
private static final String TAG = "MagicKeyManager";
|
private static final String TAG = "MagicKeyManager";
|
||||||
private final X509KeyManager keyManager;
|
private final X509KeyManager keyManager;
|
||||||
|
|
||||||
private UserUtils userUtils;
|
private UserManager userManager;
|
||||||
private AppPreferences appPreferences;
|
private AppPreferences appPreferences;
|
||||||
private Context context;
|
private Context context;
|
||||||
|
|
||||||
public MagicKeyManager(X509KeyManager keyManager, UserUtils userUtils, AppPreferences appPreferences) {
|
public MagicKeyManager(X509KeyManager keyManager, UserManager userManager, AppPreferences appPreferences) {
|
||||||
this.keyManager = keyManager;
|
this.keyManager = keyManager;
|
||||||
this.userUtils = userUtils;
|
this.userManager = userManager;
|
||||||
this.appPreferences = appPreferences;
|
this.appPreferences = appPreferences;
|
||||||
|
|
||||||
context = NextcloudTalkApplication.Companion.getSharedApplication().getApplicationContext();
|
context = NextcloudTalkApplication.Companion.getSharedApplication().getApplicationContext();
|
||||||
@ -57,7 +64,8 @@ public class MagicKeyManager implements X509KeyManager {
|
|||||||
@Override
|
@Override
|
||||||
public String chooseClientAlias(String[] strings, Principal[] principals, Socket socket) {
|
public String chooseClientAlias(String[] strings, Principal[] principals, Socket socket) {
|
||||||
String alias;
|
String alias;
|
||||||
if ((userUtils.getCurrentUser() != null && !TextUtils.isEmpty(alias = userUtils.getCurrentUser().getClientCertificate())) ||
|
if ((userManager.getCurrentUser().blockingGet() != null &&
|
||||||
|
!TextUtils.isEmpty(alias = userManager.getCurrentUser().blockingGet().getClientCertificate())) ||
|
||||||
!TextUtils.isEmpty(alias = appPreferences.getTemporaryClientCertAlias())
|
!TextUtils.isEmpty(alias = appPreferences.getTemporaryClientCertAlias())
|
||||||
&& new ArrayList<>(Arrays.asList(getClientAliases())).contains(alias)) {
|
&& new ArrayList<>(Arrays.asList(getClientAliases())).contains(alias)) {
|
||||||
return alias;
|
return alias;
|
||||||
@ -120,7 +128,7 @@ public class MagicKeyManager implements X509KeyManager {
|
|||||||
aliases.add(alias);
|
aliases.add(alias);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<UserEntity> userEntities = userUtils.getUsers();
|
List<User> userEntities = userManager.getUsers().blockingGet();
|
||||||
for (int i = 0; i < userEntities.size(); i++) {
|
for (int i = 0; i < userEntities.size(); i++) {
|
||||||
if (!TextUtils.isEmpty(alias = userEntities.get(i).getClientCertificate())) {
|
if (!TextUtils.isEmpty(alias = userEntities.get(i).getClientCertificate())) {
|
||||||
aliases.add(alias);
|
aliases.add(alias);
|
||||||
|
Loading…
Reference in New Issue
Block a user