Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package mozilla;
- import java.io.ByteArrayInputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.security.KeyStore;
- import java.security.KeyStoreException;
- import java.security.NoSuchAlgorithmException;
- import java.security.Security;
- import java.security.cert.CertificateException;
- import java.util.Enumeration;
- import sun.security.pkcs11.SunPKCS11;
- public class PKCS11ListCerts {
- public static void copy(String src, String dst) throws IOException {
- InputStream in = new FileInputStream(src);
- OutputStream out = new FileOutputStream(dst);
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
- out.close();
- }
- public static void main(String args[]) throws IOException, NoSuchAlgorithmException, CertificateException, KeyStoreException {
- String[] libraryDepencencies = new String[14];
- libraryDepencencies[0] = "msvcr100.dll";
- libraryDepencencies[1] = "msvcp100.dll";
- libraryDepencencies[2] = "mozglue.dll";
- libraryDepencencies[3] = "nss3.dll";
- libraryDepencencies[4] = "mozutils.dll";
- libraryDepencencies[5] = "mozcrt19.dll";
- libraryDepencencies[6] = "nspr4.dll";
- libraryDepencencies[7] = "plds4.dll";
- libraryDepencencies[8] = "plc4.dll";
- libraryDepencencies[9] = "nssutil3.dll";
- libraryDepencencies[10] = "mozsqlite3.dll";
- libraryDepencencies[11] = "sqlite3.dll";
- libraryDepencencies[12] = "nssdbm3.dll";
- libraryDepencencies[13] = "freebl3.dll";
- //Profile could contain invalid characters like '(' or 'รก', hence shouldnt be used. Use C:\Windows\Temp instead
- String tmpDirName = "C:\\Windows\\Temp\\softokn\\";
- File tmpDir = new File(tmpDirName);
- tmpDir.mkdir();
- for (String depFile : libraryDepencencies) {
- try {
- copy("C:\\Program Files\\Mozilla Firefox\\" + depFile, tmpDirName + depFile);
- } catch (Exception ex) {
- //System.out.println("Ignore " + depFile + "...");
- }
- }
- copy("C:\\Program Files\\Mozilla Firefox\\softokn3.dll", tmpDirName + "softokn3.dll");
- for (String depFile : libraryDepencencies) {
- if (new File(tmpDirName + depFile).exists()) {
- System.load(tmpDirName + depFile);
- }
- }
- System.load(tmpDirName + "softokn3.dll");
- String profile = MozillaProfileUtils.getFirefoxProfile();
- System.out.println("Profile: " + profile);
- String config = "name = Mozilla-NSS\r\n" + "library = " + tmpDirName + "softokn3.dll" + "\r\n" + "attributes = compatibility\r\n" + "showInfo = false\r\n" + "allowSingleThreadedModules = true\r\n" + "slot = 2\r\n" + "nssArgs = \"configdir='" + profile.replace("\\", "/") + "' secmod='secmod.db' certPrefix='' keyPrefix='' flags=readOnly\"\r\n";
- SunPKCS11 provider = null;
- provider = new SunPKCS11(new ByteArrayInputStream(config.getBytes()));
- System.out.println("Register...");
- Security.addProvider(provider);
- KeyStore ks = KeyStore.getInstance("PKCS11", provider);
- ks.load(null, null);
- System.out.println("The algorithm " + ks.getType());
- System.out.println("The provider " + ks.getProvider());
- System.out.println("the number of certs " + ks.size());
- for (Enumeration<String> list = ks.aliases(); list.hasMoreElements();) {
- String alias = (String) list.nextElement();
- System.out.println(alias);
- }
- tmpDir.delete();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement