blob: 6ccf1e4ae86bb03b0c9f485ea5c9acbdacff6dee [file] [log] [blame]
package org.bouncycastle.jce;
import java.io.*;
import java.security.cert.*;
import org.bouncycastle.asn1.*;
import org.bouncycastle.asn1.x509.*;
/**
* a utility class that will extract X509Principal objects from X.509 certificates.
* <p>
* Use this in preference to trying to recreate a principal from a String, not all
* DNs are what they should be, so it's best to leave them encoded where they
* can be.
*/
public class PrincipalUtil
{
/**
* return the issuer of the given cert as an X509PrincipalObject.
*/
public static X509Principal getIssuerX509Principal(
X509Certificate cert)
throws CertificateEncodingException
{
try
{
TBSCertificateStructure tbsCert = TBSCertificateStructure.getInstance(
ASN1Object.fromByteArray(cert.getTBSCertificate()));
return new X509Principal(tbsCert.getIssuer());
}
catch (IOException e)
{
throw new CertificateEncodingException(e.toString());
}
}
/**
* return the subject of the given cert as an X509PrincipalObject.
*/
public static X509Principal getSubjectX509Principal(
X509Certificate cert)
throws CertificateEncodingException
{
try
{
TBSCertificateStructure tbsCert = TBSCertificateStructure.getInstance(
ASN1Object.fromByteArray(cert.getTBSCertificate()));
return new X509Principal(tbsCert.getSubject());
}
catch (IOException e)
{
throw new CertificateEncodingException(e.toString());
}
}
/**
* return the issuer of the given CRL as an X509PrincipalObject.
*/
public static X509Principal getIssuerX509Principal(
X509CRL crl)
throws CRLException
{
try
{
TBSCertList tbsCertList = TBSCertList.getInstance(
ASN1Object.fromByteArray(crl.getTBSCertList()));
return new X509Principal(tbsCertList.getIssuer());
}
catch (IOException e)
{
throw new CRLException(e.toString());
}
}
}