1 package org.bouncycastle.x509; 2 3 import org.bouncycastle.jce.cert.TrustAnchor; 4 import java.security.cert.X509CRL; 5 import java.security.cert.X509CRLEntry; 6 import java.security.cert.X509Certificate; 7 import java.io.IOException; 8 9 import org.bouncycastle.asn1.x500.X500Name; 10 import org.bouncycastle.asn1.x500.X500Name; 11 import org.bouncycastle.asn1.x509.TBSCertificateStructure; 12 import org.bouncycastle.asn1.x509.TBSCertList; 13 import org.bouncycastle.jce.X509Principal; 14 import org.bouncycastle.x509.X509AttributeCertificate; 15 16 class PrincipalUtils 17 { getSubjectPrincipal(X509Certificate cert)18 static X500Name getSubjectPrincipal(X509Certificate cert) 19 { 20 try 21 { 22 TBSCertificateStructure tbsCert = TBSCertificateStructure.getInstance(cert.getTBSCertificate()); 23 24 return X500Name.getInstance(tbsCert.getSubject()); 25 } 26 catch (Exception e) 27 { 28 throw new IllegalStateException(e.toString()); 29 } 30 } 31 getIssuerPrincipal(X509CRL crl)32 static X500Name getIssuerPrincipal(X509CRL crl) 33 { 34 try 35 { 36 TBSCertList tbsCertList = TBSCertList.getInstance(crl.getTBSCertList()); 37 38 return X500Name.getInstance(tbsCertList.getIssuer()); 39 } 40 catch (Exception e) 41 { 42 throw new IllegalStateException(e.toString()); 43 } 44 } 45 getIssuerPrincipal(X509Certificate cert)46 static X500Name getIssuerPrincipal(X509Certificate cert) 47 { 48 try 49 { 50 TBSCertificateStructure tbsCert = TBSCertificateStructure.getInstance(cert.getTBSCertificate()); 51 52 return X500Name.getInstance(tbsCert.getIssuer()); 53 } 54 catch (Exception e) 55 { 56 throw new IllegalStateException(e.toString()); 57 } 58 } 59 getCA(TrustAnchor trustAnchor)60 static X500Name getCA(TrustAnchor trustAnchor) 61 { 62 return new X500Name(trustAnchor.getCAName()); 63 } 64 65 /** 66 * Returns the issuer of an attribute certificate or certificate. 67 * 68 * @param cert The attribute certificate or certificate. 69 * @return The issuer as <code>X500Principal</code>. 70 */ getEncodedIssuerPrincipal( Object cert)71 static X500Name getEncodedIssuerPrincipal( 72 Object cert) 73 { 74 if (cert instanceof X509Certificate) 75 { 76 return getIssuerPrincipal((X509Certificate)cert); 77 } 78 else 79 { 80 return X500Name.getInstance(((X509Principal)((X509AttributeCertificate)cert).getIssuer().getPrincipals()[0]).getEncoded()); 81 } 82 } 83 } 84