package com.xabber.android.data.connection;
import android.app.Activity;
import android.support.annotation.NonNull;
import com.xabber.android.data.Application;
import com.xabber.android.data.account.AccountItem;
import com.xabber.android.data.account.listeners.OnAccountRemovedListener;
import com.xabber.android.data.entity.AccountJid;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import de.duenndns.ssl.MemorizingTrustManager;
public class CertificateManager implements OnAccountRemovedListener {
private static CertificateManager instance;
public static CertificateManager getInstance() {
if (instance == null) {
instance = new CertificateManager();
}
return instance;
}
private Map<AccountJid, MemorizingTrustManager> memorizingTrustManagerMap;
private CertificateManager() {
this.memorizingTrustManagerMap = new ConcurrentHashMap<>();
}
@NonNull
MemorizingTrustManager getNewMemorizingTrustManager(@NonNull final AccountJid accountJid) {
MemorizingTrustManager mtm = new MemorizingTrustManager(Application.getInstance());
memorizingTrustManagerMap.put(accountJid, mtm);
return mtm;
}
public void registerActivity(Activity activity) {
for (MemorizingTrustManager memorizingTrustManager : memorizingTrustManagerMap.values()) {
memorizingTrustManager.bindDisplayActivity(activity);
}
}
public void unregisterActivity(Activity activity) {
for (MemorizingTrustManager memorizingTrustManager : memorizingTrustManagerMap.values()) {
memorizingTrustManager.unbindDisplayActivity(activity);
}
}
@Override
public void onAccountRemoved(AccountItem accountItem) {
memorizingTrustManagerMap.remove(accountItem.getAccount());
}
}