title: X500Principal Distinguished Name order
body: <p>I'm using the Bouncycastle lib to generate certificates from PKCS10 requests using the X509v3CertificateBuilder class.</p>
  
  <p>It returns build a X509CertificateHolder object which contains the generated certificate.
  If I call getIssuer on the holder, it returns the issuer distinguished name in the correct order (the same returned if I call getSubjectX500Principal() on the issuer certificate), if I parse the encoded version from the holder using the java CertificateFactory, the getIssuerX500Principal() method of the generated certificate returns the DN in the opposite order, what's wrong?</p>
  
  <p>Here is an example code of what I'm trying to do:</p>
  
  <pre><code>X509CertificateHolder holder = certBuilder.build(sigGen);
  holder.getIssuer(); //Returns the DN in the correct order (same as in issuer cert)
  
  CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
  X509Certificate cert = (X509Certificate) certFactory.generateCertificate(new ByteArrayInputStream(holder.getEncoded()));
  
  cert.getIssuerX500Principal().getName(); //Returns issuer DN in reverse order
  </code></pre>