Advertisement
Guest User

Untitled

a guest
Jan 13th, 2015
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.41 KB | None | 0 0
  1. package mozilla;
  2.  
  3. import java.io.ByteArrayInputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.OutputStream;
  10. import java.security.KeyStore;
  11. import java.security.KeyStoreException;
  12. import java.security.NoSuchAlgorithmException;
  13. import java.security.Security;
  14. import java.security.cert.CertificateException;
  15. import java.util.Enumeration;
  16.  
  17. import sun.security.pkcs11.SunPKCS11;
  18.  
  19. public class PKCS11ListCerts {
  20.     public static void copy(String src, String dst) throws IOException {
  21.         InputStream in = new FileInputStream(src);
  22.         OutputStream out = new FileOutputStream(dst);
  23.  
  24.         byte[] buf = new byte[1024];
  25.         int len;
  26.         while ((len = in.read(buf)) > 0) {
  27.             out.write(buf, 0, len);
  28.         }
  29.         in.close();
  30.         out.close();
  31.     }
  32.  
  33.     public static void main(String args[]) throws IOException, NoSuchAlgorithmException, CertificateException, KeyStoreException {
  34.         String[] libraryDepencencies = new String[14];
  35.         libraryDepencencies[0] = "msvcr100.dll";
  36.         libraryDepencencies[1] = "msvcp100.dll";
  37.         libraryDepencencies[2] = "mozglue.dll";
  38.         libraryDepencencies[3] = "nss3.dll";
  39.         libraryDepencencies[4] = "mozutils.dll";
  40.         libraryDepencencies[5] = "mozcrt19.dll";
  41.         libraryDepencencies[6] = "nspr4.dll";
  42.         libraryDepencencies[7] = "plds4.dll";
  43.         libraryDepencencies[8] = "plc4.dll";
  44.         libraryDepencencies[9] = "nssutil3.dll";
  45.         libraryDepencencies[10] = "mozsqlite3.dll";
  46.         libraryDepencencies[11] = "sqlite3.dll";
  47.         libraryDepencencies[12] = "nssdbm3.dll";
  48.         libraryDepencencies[13] = "freebl3.dll";
  49.  
  50. //Profile could contain invalid characters like '(' or 'รก', hence shouldnt be used. Use C:\Windows\Temp instead
  51.         String tmpDirName = "C:\\Windows\\Temp\\softokn\\";
  52.         File tmpDir = new File(tmpDirName);
  53.         tmpDir.mkdir();
  54.  
  55.         for (String depFile : libraryDepencencies) {
  56.             try {
  57.                 copy("C:\\Program Files\\Mozilla Firefox\\" + depFile, tmpDirName + depFile);
  58.             } catch (Exception ex) {
  59.                 //System.out.println("Ignore " + depFile + "...");
  60.             }
  61.         }
  62.         copy("C:\\Program Files\\Mozilla Firefox\\softokn3.dll", tmpDirName + "softokn3.dll");
  63.  
  64.         for (String depFile : libraryDepencencies) {
  65.             if (new File(tmpDirName + depFile).exists()) {
  66.                 System.load(tmpDirName + depFile);
  67.             }
  68.         }
  69.         System.load(tmpDirName + "softokn3.dll");
  70.  
  71.         String profile = MozillaProfileUtils.getFirefoxProfile();
  72.         System.out.println("Profile: " + profile);
  73.  
  74.         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";
  75.  
  76.         SunPKCS11 provider = null;
  77.  
  78.         provider = new SunPKCS11(new ByteArrayInputStream(config.getBytes()));
  79.         System.out.println("Register...");
  80.         Security.addProvider(provider);
  81.  
  82.         KeyStore ks = KeyStore.getInstance("PKCS11", provider);
  83.         ks.load(null, null);
  84.         System.out.println("The algorithm " + ks.getType());
  85.         System.out.println("The provider " + ks.getProvider());
  86.         System.out.println("the number of certs " + ks.size());
  87.  
  88.         for (Enumeration<String> list = ks.aliases(); list.hasMoreElements();) {
  89.             String alias = (String) list.nextElement();
  90.             System.out.println(alias);
  91.         }
  92.  
  93.         tmpDir.delete();
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement