/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.io.CertUtils
 *  com.l7tech.identity.IdentityProviderConfig
 *  com.l7tech.identity.IdentityProviderConfigManager
 *  com.l7tech.identity.ldap.LdapIdentityProviderConfig
 *  com.l7tech.identity.ldap.LdapIdentityProviderConfig$UserCertificateUseType
 *  com.l7tech.identity.ldap.UserMappingConfig
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.Functions$NullaryVoidThrows
 *  com.l7tech.util.Pair
 */
package com.l7tech.server.identity.ldap;

import com.l7tech.common.io.CertUtils;
import com.l7tech.identity.IdentityProviderConfig;
import com.l7tech.identity.IdentityProviderConfigManager;
import com.l7tech.identity.ldap.LdapIdentityProviderConfig;
import com.l7tech.identity.ldap.UserMappingConfig;
import com.l7tech.objectmodel.FindException;
import com.l7tech.server.Lifecycle;
import com.l7tech.server.identity.ldap.LdapRuntimeConfig;
import com.l7tech.server.identity.ldap.LdapSslCustomizerSupport;
import com.l7tech.server.identity.ldap.a;
import com.l7tech.server.identity.ldap.ad;
import com.l7tech.server.identity.ldap.ah;
import com.l7tech.server.identity.ldap.ai;
import com.l7tech.server.identity.ldap.b;
import com.l7tech.server.identity.ldap.c;
import com.l7tech.server.identity.ldap.h;
import com.l7tech.server.identity.ldap.l;
import com.l7tech.server.identity.ldap.m;
import com.l7tech.server.util.ManagedTimer;
import com.l7tech.server.util.ManagedTimerTask;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Functions;
import com.l7tech.util.Pair;
import java.math.BigInteger;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.TimerTask;
import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.NamingException;
import javax.naming.directory.SearchControls;
import javax.security.auth.x500.X500Principal;

class LdapCertificateCache
implements Lifecycle {
    private static final Logger a;
    private final AtomicReference<c> b = new AtomicReference<c>(new c());
    private final HashMap<CertCacheKey, b> c = new HashMap();
    private final ReentrantReadWriteLock d = new ReentrantReadWriteLock();
    private final IdentityProviderConfigManager e;
    private final LdapIdentityProviderConfig f;
    private final LdapRuntimeConfig g;
    private final ad h;
    private final Set<String> i;
    private final ManagedTimer j = new ManagedTimer(n[6]);
    private final String k;
    private ManagedTimerTask l;
    private ManagedTimerTask m;
    private static final String[] n;

    @Override
    public void start() {
        this.a(this.l, true, this.g.getRebuildTimerLength());
        this.a(this.m, false, this.g.getCleanupTimerLength());
    }

    @Override
    public void stop() {
        this.a(this.l, this.m);
    }

    LdapCertificateCache(LdapIdentityProviderConfig ldapIdentityProviderConfig, IdentityProviderConfigManager identityProviderConfigManager, LdapRuntimeConfig ldapRuntimeConfig, ad ad2, Set<String> set, String string, boolean bl2) {
        this.f = ldapIdentityProviderConfig;
        this.e = identityProviderConfigManager;
        this.g = ldapRuntimeConfig;
        this.h = ad2;
        this.i = set;
        this.k = string;
        if (bl2) {
            this.l = new ai(this, ldapRuntimeConfig, string);
        }
        this.m = new ah(this, string);
    }

    X509Certificate a(String string) {
        X509Certificate x509Certificate = null;
        c c10 = this.b.get();
        CertCacheKey certCacheKey = c10.getCertCacheKeyBySki(string);
        if (certCacheKey != null) {
            Pair<String, X509Certificate> pair = this.a(certCacheKey);
            x509Certificate = pair == null ? null : (X509Certificate)pair.right;
        }
        return x509Certificate;
    }

    X509Certificate a(X500Principal x500Principal, BigInteger bigInteger) {
        X509Certificate x509Certificate = null;
        c c10 = this.b.get();
        CertCacheKey certCacheKey = c10.getCertCacheKeyByIssuerAndSerial(x500Principal, bigInteger);
        if (certCacheKey != null) {
            Pair<String, X509Certificate> pair = this.a(certCacheKey);
            x509Certificate = pair == null ? null : (X509Certificate)pair.right;
        }
        return x509Certificate;
    }

    X509Certificate b(String string) throws FindException {
        X509Certificate x509Certificate = null;
        c c10 = this.b.get();
        CertCacheKey certCacheKey = c10.getCertCacheKeyByThumbprintSHA1(string);
        if (certCacheKey != null) {
            X509Certificate x509Certificate2;
            Pair<String, X509Certificate> pair = this.a(certCacheKey);
            try {
                x509Certificate2 = pair == null ? null : (X509Certificate)pair.right;
            }
            catch (FindException findException) {
                throw LdapCertificateCache.a((Exception)((Object)findException));
            }
            x509Certificate = x509Certificate2;
        }
        return x509Certificate;
    }

    X509Certificate a(X500Principal x500Principal) {
        X509Certificate x509Certificate = null;
        c c10 = this.b.get();
        CertCacheKey certCacheKey = c10.getCertCacheKeyByCanonicalSubjectDn(CertUtils.getDN((X500Principal)x500Principal));
        if (certCacheKey != null) {
            Pair<String, X509Certificate> pair = this.a(certCacheKey);
            x509Certificate = pair == null ? null : (X509Certificate)pair.right;
        }
        return x509Certificate;
    }

    String a(X509Certificate x509Certificate) throws FindException, CertificateEncodingException {
        String string = null;
        c c10 = this.b.get();
        CertCacheKey certCacheKey = c10.getCertCacheKeyByThumbprintSHA1(CertUtils.getThumbprintSHA1((X509Certificate)x509Certificate));
        if (certCacheKey != null) {
            String string2;
            Pair<String, X509Certificate> pair = this.a(certCacheKey);
            try {
                string2 = pair == null ? null : (String)pair.left;
            }
            catch (FindException findException) {
                throw LdapCertificateCache.a((Exception)((Object)findException));
            }
            string = string2;
        }
        return string;
    }

    void a(X500Principal x500Principal, BigInteger bigInteger, String string) {
        c c10 = this.b.get();
        c10.removeIndex(x500Principal, bigInteger, string);
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    void a(String string, X509Certificate[] x509CertificateArray) throws CertificateException {
        c c10 = this.b.get();
        HashMap<CertCacheKey, b> hashMap = new HashMap<CertCacheKey, b>();
        for (X509Certificate x509Certificate : x509CertificateArray) {
            CertCacheKey certCacheKey = c10.addCertificateToIndexes(string, x509Certificate);
            try {
                if (certCacheKey == null) continue;
                hashMap.put(certCacheKey, new b(string, x509Certificate));
            }
            catch (CertificateException certificateException) {
                throw LdapCertificateCache.a(certificateException);
            }
        }
        for (CertCacheKey certCacheKey : hashMap.keySet()) {
            a.fine(n[8] + String.valueOf((Object)certCacheKey));
        }
        this.d.writeLock().lock();
        try {
            this.c.putAll(hashMap);
        }
        finally {
            this.d.writeLock().unlock();
        }
    }

    /*
     * Loose catch block
     * Enabled force condition propagation
     * Lifted jumps to return sites
     */
    private boolean a() {
        block8: {
            try {
                if (this.e != null) break block8;
                a.warning(n[10]);
                return false;
            }
            catch (FindException findException) {
                throw LdapCertificateCache.a((Exception)((Object)findException));
            }
        }
        try {
            IdentityProviderConfig identityProviderConfig = (IdentityProviderConfig)this.e.findByPrimaryKey(this.f.getGoid());
            if (identityProviderConfig == null) return true;
            try {
                block9: {
                    break block9;
                    catch (FindException findException) {
                        throw LdapCertificateCache.a((Exception)((Object)findException));
                    }
                }
                if (identityProviderConfig.getVersion() == this.f.getVersion()) return false;
                return true;
            }
            catch (FindException findException) {
                throw LdapCertificateCache.a((Exception)((Object)findException));
            }
        }
        catch (FindException findException) {
            a.log(Level.WARNING, n[3] + String.valueOf(this.f), ExceptionUtils.getDebugException((Throwable)findException));
        }
        return false;
    }

    private void a(ManagedTimerTask managedTimerTask, boolean bl2, long l2) {
        if (managedTimerTask != null) {
            this.j.schedule((TimerTask)managedTimerTask, bl2 ? 0L : 5000L, l2);
        }
    }

    private void a(ManagedTimerTask ... managedTimerTaskArray) {
        for (ManagedTimerTask managedTimerTask : managedTimerTaskArray) {
            if (managedTimerTask == null) continue;
            managedTimerTask.cancel();
        }
    }

    private void b() {
        this.a(this.l);
        this.l = new ai(this, this.g, this.k);
        this.a(this.l, false, this.g.getRebuildTimerLength());
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    private void c() {
        ArrayList<CertCacheKey> arrayList = new ArrayList<CertCacheKey>();
        long l2 = System.currentTimeMillis();
        this.d.readLock().lock();
        try {
            Set<CertCacheKey> set = this.c.keySet();
            Iterator<CertCacheKey> object = set.iterator();
            while (object.hasNext()) {
                CertCacheKey certCacheKey = object.next();
                b b10 = this.c.get((Object)certCacheKey);
                if (l2 - b10.c <= this.g.getCachedCertEntryLife()) continue;
                arrayList.add(certCacheKey);
            }
        }
        finally {
            this.d.readLock().unlock();
        }
        if (arrayList.size() > 0) {
            this.d.writeLock().lock();
            try {
                for (CertCacheKey certCacheKey : arrayList) {
                    String[] stringArray = n;
                    a.fine(stringArray[14] + String.valueOf((Object)certCacheKey) + stringArray[0]);
                    this.c.remove((Object)certCacheKey);
                }
            }
            finally {
                this.d.writeLock().unlock();
            }
        }
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    private Pair<String, X509Certificate> a(CertCacheKey certCacheKey) {
        AtomicReference<Pair> atomicReference;
        block17: {
            block18: {
                UserMappingConfig[] userMappingConfigArray;
                block16: {
                    atomicReference = new AtomicReference<Pair>();
                    this.d.readLock().lock();
                    try {
                        userMappingConfigArray = this.c.get((Object)certCacheKey);
                        try {
                            if (userMappingConfigArray != null) {
                                atomicReference.set(new Pair((Object)userMappingConfigArray.a, (Object)userMappingConfigArray.b));
                            }
                        }
                        catch (Exception exception) {
                            throw LdapCertificateCache.a(exception);
                        }
                    }
                    finally {
                        this.d.readLock().unlock();
                    }
                    try {
                        if (atomicReference.get() == null) break block16;
                        a.fine(n[5] + String.valueOf((Object)certCacheKey) + n[17]);
                        break block17;
                    }
                    catch (Exception exception) {
                        throw LdapCertificateCache.a(exception);
                    }
                }
                try {
                    userMappingConfigArray = this.f.getUserMappings();
                    this.h.a((String)certCacheKey.getKey(), new l(this, userMappingConfigArray, certCacheKey, atomicReference));
                }
                catch (Exception exception) {
                    String[] stringArray = n;
                    a.log(Level.WARNING, stringArray[4] + String.valueOf((Object)certCacheKey), exception);
                }
                try {
                    if (atomicReference.get() != null) break block18;
                    a.fine(n[16] + String.valueOf((Object)certCacheKey) + ")");
                    break block17;
                }
                catch (Exception exception) {
                    throw LdapCertificateCache.a(exception);
                }
            }
            a.fine(n[12] + String.valueOf((Object)certCacheKey));
            this.d.writeLock().lock();
            try {
                this.c.put(certCacheKey, new b((String)((Pair)atomicReference.get()).left, (X509Certificate)((Pair)atomicReference.get()).right));
            }
            finally {
                this.d.writeLock().unlock();
            }
        }
        return (Pair)atomicReference.get();
    }

    private void d() {
        try {
            this.a(new a(this));
        }
        catch (NamingException namingException) {
            String[] stringArray = n;
            a.log(Level.WARNING, stringArray[11] + this.f.getName() + stringArray[7] + ExceptionUtils.getMessage((Throwable)namingException), ExceptionUtils.getDebugException((Throwable)namingException));
        }
    }

    private void e() {
        String[] stringArray = n;
        a.fine(stringArray[1] + this.f.getName());
        c c10 = new c(new HashMap<Pair<String, String>, CertCacheKey>(), new HashMap<String, CertCacheKey>(), new HashMap<String, CertCacheKey>(), new HashMap<String, CertCacheKey>(), false);
        try {
            Object object;
            String string = null;
            if (this.f.getUserCertificateUseType() == LdapIdentityProviderConfig.UserCertificateUseType.INDEX) {
                String string2;
                boolean bl2;
                object = new h();
                try {
                    bl2 = this.i.size() > 1;
                }
                catch (Exception exception) {
                    throw LdapCertificateCache.a(exception);
                }
                boolean bl3 = bl2;
                try {
                    if (bl3) {
                        ((h)object).or();
                    }
                }
                catch (Exception exception) {
                    throw LdapCertificateCache.a(exception);
                }
                for (String string3 : this.i) {
                    ((h)object).attrPresent(string3);
                }
                try {
                    if (bl3) {
                        ((h)object).end();
                    }
                }
                catch (Exception exception) {
                    throw LdapCertificateCache.a(exception);
                }
                try {
                    string2 = ((h)object).isEmpty() ? null : ((h)object).buildFilter();
                }
                catch (Exception exception) {
                    throw LdapCertificateCache.a(exception);
                }
                string = string2;
            } else if (this.f.getUserCertificateUseType() == LdapIdentityProviderConfig.UserCertificateUseType.INDEX_CUSTOM) {
                string = this.f.getUserCertificateIndexSearchFilter();
            }
            if (string != null) {
                stringArray = n;
                a.fine(stringArray[9] + string + stringArray[0]);
                object = new SearchControls();
                ((SearchControls)object).setSearchScope(2);
                ((SearchControls)object).setReturningAttributes(this.i.toArray(new String[this.i.size()]));
                this.h.a(string, 0L, this.i, new m(this, c10));
                this.b.set(c10.immutable());
                a.fine(stringArray[13] + c10.describe() + stringArray[0]);
            }
        }
        catch (Exception exception) {
            stringArray = n;
            a.log(Level.WARNING, stringArray[2] + this.f.getName() + stringArray[15] + ExceptionUtils.getMessage((Throwable)exception), ExceptionUtils.getDebugException((Throwable)exception));
        }
    }

    private void a(Functions.NullaryVoidThrows<NamingException> nullaryVoidThrows) throws NamingException {
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        try {
            Thread.currentThread().setContextClassLoader(LdapSslCustomizerSupport.getSSLSocketFactoryClassLoader());
            nullaryVoidThrows.call();
        }
        finally {
            Thread.currentThread().setContextClassLoader(classLoader);
        }
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[18];
                var3_1 = 0;
                var2_2 = "@P,5\u001bfT\u0005\u0002t\u0013\u0017%PW\u000bq\u0006\u000ekB\u0004\u0002gG\u001d.E\u0003\u000es\u000e\u001d*C\u0012G|\t\u001a.OW\u0001z\u0015^F\"\f9X\u0005Gb\u000f\u0017'RW\u0015p\u0004\f.V\u0003\u000e{\u0000^'S\u0016\u00175\u0012\r.EW\u0004p\u0015\n\"Q\u001e\u0004t\u0013\u001bk^\u0019\u0003p\u001f^-X\u0005GY#?\u001b\u0017'\u0015z\u0011\u0017/R\u0005G2*\"\f9X\u0005Gv\u000f\u001b(\\\u001e\trG\u0017/R\u0019\u0013|\u0013\u0007kT\u0018\ts\u000e\u0019>E\u0016\u0013|\b\u0010kQ\u0018\u00155*\"\f9X\u0005Gy\b\u0011 ^\u0019\u00005\u0012\u000ekT\u0012\u0015a\u000e\u0018\"T\u0016\u0013pG\u0017%\u0017\u0013\u000eg\u0002\u001d?X\u0005\u001e5\u0015$\u001b9CW\u0001z\u0012\u0010/\u0017\u001e\t5\u0004\u001f(_\u0012G2\u001c+:\ngW$p\u0015\n\"Q\u001e\u0004t\u0013\u001bkt\u0016\u0004}\u0002^\u001f^\u001a\u0002g\u0003@Dk\u0011$\u001f(_\u001e\trG\u001d.E\u0003Gs\b\fk(+:\ngW\u0012f\u0002\fkT\u0012\u0015a\u000e\u0018\"T\u0016\u0013pG\r.V\u0005\u0004}G\u0018\"[\u0003\u0002gG\u00178\u0017P\u0017$\u0011%Q\u001e\u00005*\u001f%V\u0010\u0002gG\u00178\u0017\u0019\u0012y\u000bPF\"\f9X\u0005Gb\u000f\u0017'RW\u0015p\u0004\f.V\u0003\u000e{\u0000^'S\u0016\u00175\u0012\r.EW\u0004p\u0015\n\"Q\u001e\u0004t\u0013\u001bk^\u0019\u0003p\u001f^-X\u0005GY#?\u001b\u0017'\u0015z\u0011\u0017/R\u0005G2\u0011$\u001f(_\u001e\trG\u001d.E\u0003Gs\b\fk%+:\ngW\u0012f\u0002\fkT\u0012\u0015a\u000e\u0018\"T\u0016\u0013pG\u0017%S\u0012\u001f5\u0015\u001b)B\u001e\u000baGY!5\u001b&X\u0001\u000e{\u0000^(R\u0005\u0013|\u0001\u0017(V\u0003\u00025\u0001\f$ZW\u0004t\u0004\u0016.\u0017P\u0003@Dk";
                var4_3 = "@P,5\u001bfT\u0005\u0002t\u0013\u0017%PW\u000bq\u0006\u000ekB\u0004\u0002gG\u001d.E\u0003\u000es\u000e\u001d*C\u0012G|\t\u001a.OW\u0001z\u0015^F\"\f9X\u0005Gb\u000f\u0017'RW\u0015p\u0004\f.V\u0003\u000e{\u0000^'S\u0016\u00175\u0012\r.EW\u0004p\u0015\n\"Q\u001e\u0004t\u0013\u001bk^\u0019\u0003p\u001f^-X\u0005GY#?\u001b\u0017'\u0015z\u0011\u0017/R\u0005G2*\"\f9X\u0005Gv\u000f\u001b(\\\u001e\trG\u0017/R\u0019\u0013|\u0013\u0007kT\u0018\ts\u000e\u0019>E\u0016\u0013|\b\u0010kQ\u0018\u00155*\"\f9X\u0005Gy\b\u0011 ^\u0019\u00005\u0012\u000ekT\u0012\u0015a\u000e\u0018\"T\u0016\u0013pG\u0017%\u0017\u0013\u000eg\u0002\u001d?X\u0005\u001e5\u0015$\u001b9CW\u0001z\u0012\u0010/\u0017\u001e\t5\u0004\u001f(_\u0012G2\u001c+:\ngW$p\u0015\n\"Q\u001e\u0004t\u0013\u001bkt\u0016\u0004}\u0002^\u001f^\u001a\u0002g\u0003@Dk\u0011$\u001f(_\u001e\trG\u001d.E\u0003Gs\b\fk(+:\ngW\u0012f\u0002\fkT\u0012\u0015a\u000e\u0018\"T\u0016\u0013pG\r.V\u0005\u0004}G\u0018\"[\u0003\u0002gG\u00178\u0017P\u0017$\u0011%Q\u001e\u00005*\u001f%V\u0010\u0002gG\u00178\u0017\u0019\u0012y\u000bPF\"\f9X\u0005Gb\u000f\u0017'RW\u0015p\u0004\f.V\u0003\u000e{\u0000^'S\u0016\u00175\u0012\r.EW\u0004p\u0015\n\"Q\u001e\u0004t\u0013\u001bk^\u0019\u0003p\u001f^-X\u0005GY#?\u001b\u0017'\u0015z\u0011\u0017/R\u0005G2\u0011$\u001f(_\u001e\trG\u001d.E\u0003Gs\b\fk%+:\ngW\u0012f\u0002\fkT\u0012\u0015a\u000e\u0018\"T\u0016\u0013pG\u0017%S\u0012\u001f5\u0015\u001b)B\u001e\u000baGY!5\u001b&X\u0001\u000e{\u0000^(R\u0005\u0013|\u0001\u0017(V\u0003\u00025\u0001\f$ZW\u0004t\u0004\u0016.\u0017P\u0003@Dk".length();
                var1_4 = 2;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 39;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = LdapCertificateCache.a(v0, LdapCertificateCache.c(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "tKi\u0013NQ,TOo\u0002\u0007^6\u0017GuGS_ \u0017Gu\u0003BOeU[oGIX1\u0017GuGC^7RMo\bUNe\u001f\u0002\u0010\u0000";
                    var4_3 = "tKi\u0013NQ,TOo\u0002\u0007^6\u0017GuGS_ \u0017Gu\u0003BOeU[oGIX1\u0017GuGC^7RMo\bUNe\u001f\u0002\u0010\u0000".length();
                    var1_4 = 50;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 119;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = LdapCertificateCache.a(v0, LdapCertificateCache.c(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        LdapCertificateCache.n = var5;
        LdapCertificateCache.a = Logger.getLogger(LdapCertificateCache.class.getName());
    }

    private static Exception a(Exception exception) {
        return exception;
    }

    private static char[] c(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x32);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String a(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 64;
                    case 1 -> 89;
                    case 2 -> 108;
                    case 3 -> 16;
                    case 4 -> 80;
                    case 5 -> 64;
                    default -> 50;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }

    private static final class CertCacheKey
    extends Pair<String, String> {
        static final long serialVersionUID = 8776812752305628937L;

        public CertCacheKey(String string, String string2) {
            super((Object)string, (Object)string2);
        }
    }
}

