/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.log.HybridDiagnosticContext
 *  com.l7tech.identity.User
 *  com.l7tech.message.CredentialContext
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.security.token.SecurityToken
 *  com.l7tech.security.token.SigningSecurityToken
 *  com.l7tech.util.Pair
 */
package com.l7tech.server.message;

import com.l7tech.common.log.HybridDiagnosticContext;
import com.l7tech.identity.User;
import com.l7tech.message.CredentialContext;
import com.l7tech.objectmodel.Goid;
import com.l7tech.security.token.SecurityToken;
import com.l7tech.security.token.SigningSecurityToken;
import com.l7tech.server.identity.AuthCache;
import com.l7tech.server.identity.AuthenticationResult;
import com.l7tech.util.Pair;
import java.util.ArrayList;
import java.util.List;

public class AuthenticationContext
extends CredentialContext {
    public static final String TAG_NONE = "";
    private AuthenticationResult a = null;
    private List<Pair<AuthenticationResult, String>> b = new ArrayList<Pair<AuthenticationResult, String>>();
    private static final String[] d;

    public boolean isAuthenticated() {
        boolean bl2;
        try {
            bl2 = this.a != null;
        }
        catch (NullPointerException nullPointerException) {
            throw AuthenticationContext.a(nullPointerException);
        }
        return bl2;
    }

    public void addAuthenticationResult(AuthenticationResult authenticationResult) {
        try {
            if (authenticationResult == null) {
                throw new NullPointerException(d[0]);
            }
        }
        catch (NullPointerException nullPointerException) {
            throw AuthenticationContext.a(nullPointerException);
        }
        Pair pair = new Pair((Object)authenticationResult, null);
        try {
            if (!this.b.contains(pair)) {
                this.b.add((Pair<AuthenticationResult, String>)pair);
            }
        }
        catch (NullPointerException nullPointerException) {
            throw AuthenticationContext.a(nullPointerException);
        }
        String[] stringArray = d;
        HybridDiagnosticContext.put((String)stringArray[4], (String)(String.valueOf(authenticationResult.getUser().getProviderId()) + ":" + authenticationResult.getUser().getId()));
        HybridDiagnosticContext.put((String)stringArray[3], (String)authenticationResult.getUser().getName());
        HybridDiagnosticContext.put((String)stringArray[7], (String)authenticationResult.getUser().getProviderId().toString());
        this.a = authenticationResult;
    }

    public boolean tagAuthenticationResult(AuthenticationResult authenticationResult, String string) {
        Pair pair;
        int n2;
        boolean bl2 = false;
        try {
            if (string == null) {
                throw new IllegalArgumentException(d[1]);
            }
        }
        catch (NullPointerException nullPointerException) {
            throw AuthenticationContext.a(nullPointerException);
        }
        if (authenticationResult != null && (n2 = this.b.indexOf(pair = new Pair((Object)authenticationResult, null))) > -1) {
            this.b.remove(n2);
            this.b.add(n2, (Pair<AuthenticationResult, String>)new Pair((Object)authenticationResult, (Object)string));
            bl2 = true;
        }
        return bl2;
    }

    public List<AuthenticationResult> getAllAuthenticationResults() {
        ArrayList<AuthenticationResult> arrayList = new ArrayList<AuthenticationResult>();
        for (Pair<AuthenticationResult, String> pair : this.b) {
            try {
                if (arrayList.contains(pair.left)) continue;
                arrayList.add((AuthenticationResult)pair.left);
            }
            catch (NullPointerException nullPointerException) {
                throw AuthenticationContext.a(nullPointerException);
            }
        }
        return arrayList;
    }

    public List<AuthenticationResult> getUntaggedAuthenticationResults() {
        ArrayList<AuthenticationResult> arrayList = new ArrayList<AuthenticationResult>();
        for (Pair<AuthenticationResult, String> pair : this.b) {
            try {
                try {
                    if (this.a((String)pair.right) != null || arrayList.contains(pair.left)) continue;
                }
                catch (NullPointerException nullPointerException) {
                    throw AuthenticationContext.a(nullPointerException);
                }
                arrayList.add((AuthenticationResult)pair.left);
            }
            catch (NullPointerException nullPointerException) {
                throw AuthenticationContext.a(nullPointerException);
            }
        }
        return arrayList;
    }

    public AuthenticationResult getAuthenticationResultForTag(String string) {
        AuthenticationResult authenticationResult = null;
        if (string != null) {
            for (Pair<AuthenticationResult, String> pair : this.b) {
                if (!string.equalsIgnoreCase(this.a((String)pair.right))) continue;
                authenticationResult = (AuthenticationResult)pair.left;
                break;
            }
        }
        return authenticationResult;
    }

    public AuthenticationResult getLastAuthenticationResult() {
        return this.a;
    }

    public AuthenticationResult getAuthenticationResultForSigningSecurityToken(SigningSecurityToken signingSecurityToken, String string) {
        AuthenticationResult authenticationResult;
        block15: {
            block14: {
                authenticationResult = null;
                String string2 = null;
                if (signingSecurityToken != null) {
                    for (Pair<AuthenticationResult, String> pair : this.b) {
                        block12: {
                            try {
                                if (!((AuthenticationResult)pair.left).matchesSecurityToken((SecurityToken)signingSecurityToken)) continue;
                                if (authenticationResult != null) break block12;
                            }
                            catch (NullPointerException nullPointerException) {
                                throw AuthenticationContext.a(nullPointerException);
                            }
                            authenticationResult = (AuthenticationResult)pair.left;
                            string2 = this.a((String)pair.right);
                            continue;
                        }
                        String[] stringArray = d;
                        throw new IllegalStateException(stringArray[6] + String.valueOf(signingSecurityToken.getClass()) + stringArray[5] + String.valueOf(signingSecurityToken.getType()) + stringArray[2]);
                    }
                }
                try {
                    try {
                        block13: {
                            try {
                                try {
                                    if (authenticationResult == null || string != null) break block13;
                                }
                                catch (NullPointerException nullPointerException) {
                                    throw AuthenticationContext.a(nullPointerException);
                                }
                                if (string2 != null) break block14;
                            }
                            catch (NullPointerException nullPointerException) {
                                throw AuthenticationContext.a(nullPointerException);
                            }
                        }
                        if (string == null) break block15;
                    }
                    catch (NullPointerException nullPointerException) {
                        throw AuthenticationContext.a(nullPointerException);
                    }
                    if (string.equalsIgnoreCase(string2)) break block15;
                }
                catch (NullPointerException nullPointerException) {
                    throw AuthenticationContext.a(nullPointerException);
                }
            }
            authenticationResult = null;
        }
        return authenticationResult;
    }

    public User getLastAuthenticatedUser() {
        User user;
        try {
            user = this.a == null ? null : this.a.getUser();
        }
        catch (NullPointerException nullPointerException) {
            throw AuthenticationContext.a(nullPointerException);
        }
        return user;
    }

    public boolean isSecurityTokenUsed(SecurityToken securityToken, Goid goid) {
        boolean bl2 = false;
        for (Pair<AuthenticationResult, String> pair : this.b) {
            try {
                if (!((AuthenticationResult)pair.left).matchesSecurityToken(securityToken) || !((AuthenticationResult)pair.left).getUser().getProviderId().equals((Object)goid)) continue;
            }
            catch (NullPointerException nullPointerException) {
                throw AuthenticationContext.a(nullPointerException);
            }
            bl2 = true;
            break;
        }
        return bl2;
    }

    public int getAuthSuccessCacheTime() {
        return AuthCache.getDefaultAuthSuccessCacheTime();
    }

    public int getAuthFailureCacheTime() {
        return AuthCache.getDefaultAuthFailureCacheTime();
    }

    private String a(String string) {
        String string2;
        block2: {
            string2 = string;
            try {
                if (string2 == null || !string2.isEmpty()) break block2;
            }
            catch (NullPointerException nullPointerException) {
                throw AuthenticationContext.a(nullPointerException);
            }
            string2 = null;
        }
        return string2;
    }

    private static NullPointerException a(NullPointerException nullPointerException) {
        return nullPointerException;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[8];
                var3_1 = 0;
                var2_2 = "_YwtHi\u000eK@w\u0017WHfrne\tGxb{:e\u000e\u001e^fmoe\u000f[H\u0002\u0019\u0002\u0004K_fn\u0007K_fn7e\u0019\u000b\u0019\flz:x\u0004NI#;";
                var4_3 = "_YwtHi\u000eK@w\u0017WHfrne\tGxb{:e\u000e\u001e^fmoe\u000f[H\u0002\u0019\u0002\u0004K_fn\u0007K_fn7e\u0019\u000b\u0019\flz:x\u0004NI#;".length();
                var1_4 = 10;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = AuthenticationContext.a(v0, AuthenticationContext.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\u00128\u000e\t\u0012\u001dp:m\u0003\b\u000f\u0005y19\u000b\u001e\u001a\u0019u0#B\u000f\u001e\u001ei39\u0011]\u001d\u0002n\u007f9\r\u0016\u001e\u0003<x\u0010*>\u0007\u000fV\u001dn0;\u000b\u0019\u001e\u001f16)";
                    var4_3 = "\u00128\u000e\t\u0012\u001dp:m\u0003\b\u000f\u0005y19\u000b\u001e\u001a\u0019u0#B\u000f\u001e\u001ei39\u0011]\u001d\u0002n\u007f9\r\u0016\u001e\u0003<x\u0010*>\u0007\u000fV\u001dn0;\u000b\u0019\u001e\u001f16)".length();
                    var1_4 = 43;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 18;
                        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++] = AuthenticationContext.a(v0, AuthenticationContext.b(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;
            }
        }
        AuthenticationContext.d = var5;
    }

    private static char[] b(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0xE);
        }
        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 -> 77;
                    case 1 -> 95;
                    case 2 -> 112;
                    case 3 -> 111;
                    case 4 -> 105;
                    case 5 -> 127;
                    default -> 14;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

