public X500Principal getSubjectX500Principal() {
    try {
      ByteArrayOutputStream bOut = new ByteArrayOutputStream();
      ASN1OutputStream aOut = new ASN1OutputStream(bOut);

      aOut.writeObject(c.getSubject());

      return new X500Principal(bOut.toByteArray());
    } catch (IOException e) {
      throw new IllegalStateException("can't encode issuer DN");
    }
  }
 public Principal getSubjectDN() {
   return new X509Principal(X500Name.getInstance(c.getSubject().toASN1Primitive()));
 }