package org.bouncycastle.x509; import org.bouncycastle.jce.cert.TrustAnchor; import java.security.cert.X509CRL; import java.security.cert.X509CRLEntry; import java.security.cert.X509Certificate; import java.io.IOException; import org.bouncycastle.asn1.x500.X500Name; import org.bouncycastle.asn1.x500.X500Name; import org.bouncycastle.asn1.x509.TBSCertificateStructure; import org.bouncycastle.asn1.x509.TBSCertList; import org.bouncycastle.jce.X509Principal; import org.bouncycastle.x509.X509AttributeCertificate; class PrincipalUtils { static X500Name getSubjectPrincipal(X509Certificate cert) { try { TBSCertificateStructure tbsCert = TBSCertificateStructure.getInstance(cert.getTBSCertificate()); return X500Name.getInstance(tbsCert.getSubject()); } catch (Exception e) { throw new IllegalStateException(e.toString()); } } static X500Name getIssuerPrincipal(X509CRL crl) { try { TBSCertList tbsCertList = TBSCertList.getInstance(crl.getTBSCertList()); return X500Name.getInstance(tbsCertList.getIssuer()); } catch (Exception e) { throw new IllegalStateException(e.toString()); } } static X500Name getIssuerPrincipal(X509Certificate cert) { try { TBSCertificateStructure tbsCert = TBSCertificateStructure.getInstance(cert.getTBSCertificate()); return X500Name.getInstance(tbsCert.getIssuer()); } catch (Exception e) { throw new IllegalStateException(e.toString()); } } static X500Name getCA(TrustAnchor trustAnchor) { return new X500Name(trustAnchor.getCAName()); } /** * Returns the issuer of an attribute certificate or certificate. * * @param cert The attribute certificate or certificate. * @return The issuer as <code>X500Principal</code>. */ static X500Name getEncodedIssuerPrincipal( Object cert) { if (cert instanceof X509Certificate) { return getIssuerPrincipal((X509Certificate)cert); } else { return X500Name.getInstance(((X509Principal)((X509AttributeCertificate)cert).getIssuer().getPrincipals()[0]).getEncoded()); } } }