+++ /dev/null
-/*\r
- * To change this template, choose Tools | Templates\r
- * and open the template in the editor.\r
- */\r
-package com.axyus.signature.pes.producer;\r
-\r
-import java.io.IOException;\r
-import java.lang.reflect.Field;\r
-import java.security.KeyStore;\r
-import java.security.KeyStoreException;\r
-import java.security.KeyStoreSpi;\r
-import java.security.NoSuchAlgorithmException;\r
-import java.security.NoSuchProviderException;\r
-import java.security.cert.CertificateException;\r
-import java.security.cert.X509Certificate;\r
-import java.util.Collection;\r
-import java.util.logging.Level;\r
-import java.util.logging.Logger;\r
-\r
-/**\r
- *\r
- * @author stephane.melois\r
- */\r
-public class WindowsKeyStoreLoader extends AbstractKeyStoreLoader {\r
-\r
- @Override\r
- public void loadKeystore() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException, NoSuchProviderException {\r
- KeyStore ks = KeyStore.getInstance("Windows-MY", "SunMSCAPI");\r
- // KeyStore ks = KeyStore.getInstance("Windows-MY","SunPCSC");\r
- ks.load(null, null);// ks.load(null, password);\r
- _fixAliases(ks);\r
- setKeyStore(ks);\r
-\r
-\r
-\r
- }\r
-\r
- private static void _fixAliases(KeyStore keyStore) {\r
- Field field;\r
- KeyStoreSpi keyStoreVeritable;\r
-\r
- try {\r
- field = keyStore.getClass().getDeclaredField("keyStoreSpi");\r
- field.setAccessible(true);\r
- keyStoreVeritable = (KeyStoreSpi) field.get(keyStore);\r
-\r
- if ("sun.security.mscapi.KeyStore$MY".equals(keyStoreVeritable.getClass().getName())) {\r
- Collection entries;\r
- String alias, hashCode;\r
- X509Certificate[] certificates;\r
-\r
- field = keyStoreVeritable.getClass().getEnclosingClass().getDeclaredField("entries");\r
- field.setAccessible(true);\r
- entries = (Collection) field.get(keyStoreVeritable);\r
-\r
- for (Object entry : entries) {\r
- field = entry.getClass().getDeclaredField("certChain");\r
- field.setAccessible(true);\r
- certificates = (X509Certificate[]) field.get(entry);\r
-\r
- hashCode = Integer.toString(certificates[0].hashCode());\r
-\r
- field = entry.getClass().getDeclaredField("alias");\r
- field.setAccessible(true);\r
- alias = (String) field.get(entry);\r
-\r
- if (!alias.equals(hashCode)) {\r
- field.set(entry, alias.concat(" - ").concat(hashCode));\r
- } // if\r
- } // for\r
- } // if\r
- } catch (Exception exception) {\r
- System.err.println(exception);\r
- exception.printStackTrace();\r
- } // catch\r
- } // _fixAliases\r
-}\r