Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing Hardware PKCS11 Token on a 64 Bit Machine

So here's what I'm trying to do. I have a hardware token with some certs on it and I'm writing a Java application to try and access those certs. I have used the SunPKCS11 library in jre6 for a windows 32 bit machine. This is a small sample of how I access the certs:

String configName = "pkcs.cnf"
String PIN = "123456";
Provider p = new sun.security.pkcs11.SunPKCS11(configName);
Security.addProvider(p);
KeyStore keyStore = KeyStore.getInstance("PKCS11");
char[] pin = PIN.toCharArray();
keyStore.load(null, pin);

It works great, I'm able to get the certs and everything. Now I'm trying to do the same on a 64 bit machine. However I am trying to use the 64 bit jre6 library and that is missing the SunPKCS11 jar file (located in {java.home}/lib/ext. Because of that I cannot create a SunPKCS11 object. My question to you is, what do I do now? How can I access the certs on a token using 64 bit java libraries? Has someone written a 64 bit wrapper for such a task?

like image 731
Otra Avatar asked Nov 08 '11 20:11

Otra


1 Answers

PKCS11 Support was not implemented because there was no way to test that library (somehow, whatever).

This has changed in Java 8, though. Since J8b49 a 64 bit Version is included. See: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6880559

like image 191
Calon Avatar answered Oct 22 '22 13:10

Calon