-
Bug
-
Resolution: Fixed
-
P3
-
1.3.0
-
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)
======================================================================