// 
// Decompiled by Procyon v0.6.0
// 

package org.bouncycastle.cert.jcajce;

import javax.security.auth.x500.X500Principal;
import org.bouncycastle.asn1.x500.X500NameStyle;
import org.bouncycastle.jcajce.interfaces.BCX509Certificate;
import org.bouncycastle.asn1.x500.X500Name;
import java.security.cert.X509Certificate;

public class JcaX500NameUtil
{
    public static X500Name getIssuer(final X509Certificate x509Certificate) {
        if (x509Certificate instanceof BCX509Certificate) {
            return notNull(((BCX509Certificate)x509Certificate).getIssuerX500Name());
        }
        return getX500Name(x509Certificate.getIssuerX500Principal());
    }
    
    public static X500Name getIssuer(final X500NameStyle x500NameStyle, final X509Certificate x509Certificate) {
        if (x509Certificate instanceof BCX509Certificate) {
            return X500Name.getInstance(x500NameStyle, notNull(((BCX509Certificate)x509Certificate).getIssuerX500Name()));
        }
        return getX500Name(x500NameStyle, x509Certificate.getIssuerX500Principal());
    }
    
    public static X500Name getSubject(final X509Certificate x509Certificate) {
        if (x509Certificate instanceof BCX509Certificate) {
            return notNull(((BCX509Certificate)x509Certificate).getSubjectX500Name());
        }
        return getX500Name(x509Certificate.getSubjectX500Principal());
    }
    
    public static X500Name getSubject(final X500NameStyle x500NameStyle, final X509Certificate x509Certificate) {
        if (x509Certificate instanceof BCX509Certificate) {
            return X500Name.getInstance(x500NameStyle, notNull(((BCX509Certificate)x509Certificate).getSubjectX500Name()));
        }
        return getX500Name(x500NameStyle, x509Certificate.getSubjectX500Principal());
    }
    
    public static X500Name getX500Name(final X500Principal x500Principal) {
        return X500Name.getInstance(getEncoded(x500Principal));
    }
    
    public static X500Name getX500Name(final X500NameStyle x500NameStyle, final X500Principal x500Principal) {
        return X500Name.getInstance(x500NameStyle, getEncoded(x500Principal));
    }
    
    private static X500Name notNull(final X500Name x500Name) {
        if (null == x500Name) {
            throw new IllegalStateException();
        }
        return x500Name;
    }
    
    private static X500Principal notNull(final X500Principal x500Principal) {
        if (null == x500Principal) {
            throw new IllegalStateException();
        }
        return x500Principal;
    }
    
    private static byte[] getEncoded(final X500Principal x500Principal) {
        return notNull(x500Principal).getEncoded();
    }
}
