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