Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4413619

Cannot get kanji characters out from certificate using getSubjectDN().getName()

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 1.4.0
    • 1.3.0
    • security-libs
    • beta
    • sparc
    • solaris_2.6



      Name: krC82822 Date: 02/08/2001


      8 Feb 2001, eval1127@eng -- reproducible with 1.3.0 and 1.4 beta build 50
      on Solaris.

      (submitted against kest-sol-fcs)
      java version "1.3.0"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0)
      Java HotSpot(TM) Client VM (build 1.3.0, mixed mode)

      and

      java version "1.4.0-beta"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b50)
      Java HotSpot(TM) Client VM (build 1.4beta-B50, mixed mode)
      ---------------------

      I am trying to read the subject dn from the base64 encoded
      X.509 certificate below with the following code.

      import java.security.cert.*;
      import java.io.*;

      public class Tester {

        public static void main(String args[]) {

          if (args.length==1) {
            String filename = args[0];
            try {
      CertificateFactory cf = CertificateFactory.getInstance("X.509");
      DataInputStream dis = new DataInputStream(new FileInputStream
      (filename));
      X509Certificate crt = (X509Certificate)cf.generateCertificate(dis);
      sun.misc.HexDumpEncoder e = new sun.misc.HexDumpEncoder();
      String dn = crt.getSubjectDN().getName();
      System.out.println("DN: "+dn);
      System.out.println(e.encodeBuffer(dn.getBytes()));
            } catch (Exception e) {
      e.printStackTrace();
            }
          }
        }
      }


      -----BEGIN CERTIFICATE-----
      MIICTjCCAfigAwIBAgIBVjANBgkqhkiG9w0BAQQFADA9MQswCQYDVQQGEwJmaTEO
      MAwGA1UEChMFTm9raWExETAPBgNVBAsTCEJpbGxOZWF0MQswCQYDVQQDEwJDQTAe
      Fw0wMDExMTUwODQ0MDBaFw0wMTExMTUwODQ0MDBaMFcxCzAJBgNVBAYTAmZpMQ4w
      DAYDVQQKEwVOb2tpYTERMA8GA1UECxMIQmlsbE5lYXQxETAPBgNVBAMUCI6OjLGP
      pJNYMRIwEAYDVQQtEwlqYXBhbmVzZTIwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA
      rPjdLQtUsooKLmJ3i4Y860HVQozsrTuMz4OtKhZTjnjVGmf5zU4rjWAsVHbIGCbf
      hdq6G6WAS0EPFgIGGZey8wIDAQABo4HIMIHFMAkGA1UdEwQCMAAwMgYJYIZIAYb4
      QgENBCUWI2N1cnJlbmN5PUZpTTtwcmVwYWlkPW5vO3R5cGU9c2VsbGVyMB0GA1Ud
      DgQWBBS6jWuFHWWShAUgt03L140HyzW6KjBlBgNVHSMEXjBcgBSPM6Xw/sdH4NiK
      w6bmiYoB+NzIO6FBpD8wPTELMAkGA1UEBhMCZmkxDjAMBgNVBAoTBU5va2lhMREw
      DwYDVQQLEwhCaWxsTmVhdDELMAkGA1UEAxMCQ0GCAQAwDQYJKoZIhvcNAQEEBQAD
      QQAWBcE945R2EF6FwiWsPnJd0dmG1HO0U8/kN0mSEitzClFNLWWSUDTOAdFeUpzY
      Ej23pwUrZ2Wa8yCTm4PiVTMD
      -----END CERTIFICATE-----


      Because subject dn includes kanji characters I haven't been
      able to get the correct dn out from the certificate using
      getSubjectDN().getName(). Here are some results:

      With JDK 1.3:
      > java Tester x509.crt
      DN: OID.2.5.4.45=japanese2, CN=???????X, OU=BillNeat, O=Nokia, C=fi
      0000: 4F 49 44 2E 32 2E 35 2E 34 2E 34 35 3D 6A 61 70 OID.2.5.4.45=jap
      0010: 61 6E 65 73 65 32 2C 20 43 4E 3D 3F 3F 3F 3F 3F anese2, CN=?????
      0020: 3F 3F 58 2C 20 4F 55 3D 42 69 6C 6C 4E 65 61 74 ??X, OU=BillNeat
      0030: 2C 20 4F 3D 4E 6F 6B 69 61 2C 20 43 3D 66 69 , O=Nokia, C=fi

      The correct dn does come with JDK 1.2.2:
      > java Tester x509.crt
      DN: OID.2.5.4.45=japanese2, CN=??X, OU=BillNeat, O=Nokia, C=fi
      0000: 4F 49 44 2E 32 2E 35 2E 34 2E 34 35 3D 6A 61 70 OID.2.5.4.45=jap
      0010: 61 6E 65 73 65 32 2C 20 43 4E 3D 8E 8E 8C B1 8F anese2, CN=.....
      0020: A4 93 58 2C 20 4F 55 3D 42 69 6C 6C 4E 65 61 74 ..X, OU=BillNeat
      0030: 2C 20 4F 3D 4E 6F 6B 69 61 2C 20 43 3D 66 69 , O=Nokia, C=fi

      Same problem exists with Windows JDK 1.3 but gets fixed if I use option
      -Dfile.encoding=ISO8859_1. This however does not work on Solaris. And
      the same problem occurs with Linux JDK 1.3 (from SUN) (and IBM's JDK 1.3)
      and works ok with Linux JDK 1.2.2 (from SUN).
      (Review ID: 112452)
      ======================================================================

            mupadhyasunw Mayank Upadhyay (Inactive)
            kryansunw Kevin Ryan (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: