Register /
Login
|
Desktop view
|
Security.addProvider(new JCAPIProvider());
JCAPIProperties.setLogging(true);
JCAPIProperties.getInstance().setPrivateKeyExportable(true);
KeyStore jks = KeyStore.getInstance("msks", "JCAPI");
jks.load(null, null);
KeyStore ks2 = KeyStore.getInstance("msks", "JCAPI");
ks2.load(null, null);
JCAPIProperties.getInstance().setExclusiveMSCertStore(ks2,"Root");
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(jks, null);
TrustManagerFactory tmf = TrustManagerFactory.getInstance(
TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks2);
SecureRandom sr = SecureRandom.getInstance("RNG", "JCAPI");
sc = SSLContext.getInstance("TLS");
sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), sr);
URLConnection con = url.openConnection();
((HttpsURLConnection)con).setSSLSocketFactory(sc.getSocketFactory());
((HttpsURLConnection)con).setHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, javax.net.ssl.SSLSession session) {
return true;
}
});
Caused by: java.security.InvalidKeyException: Modulus is missing
Security.addProvider(new JCAPIProvider());
String keyEntryStore = JCAPIProperties.getInstance().getMSKeyEntryStoreName();
JCAPIProperties.getInstance().setMSCertStoreNames(new String[]{keyEntryStore});
JCAPIUtil.addPKCS11CSP("ActivCard", "acpkcs211.dll");
JCAPIProperties.getInstance().setPrivateKeyExportable(true);
KeyStore jks = KeyStore.getInstance("msks", "JCAPI");
jks.load(null, null);
String alias = null;
RSAPrivateKey privateKey = null;
for(java.util.Enumeration e = jks.aliases(); e.hasMoreElements(); )
{
alias = (String)e.nextElement();
if(jks.isKeyEntry(alias))
{
privateKey = (RSAPrivateKey)jks.getKey(alias, null);
if(privateKey instanceof RSAPrivateCrtKey)
break; //Ok, key found.
else
privateKey = null;
}
}
if(privateKey == null)
System.out.println("Sorry, no exportable RSA private key was found.");
else {
System.out.println("Exportable RSA key found!");
System.out.println("Alias: " + alias);
System.out.println("Key: " + privateKey);
}
StringBuffer sb = new StringBuffer();
sb.append("name=ActivCard\n");
sb.append("library=c:\\Windows\\System32\\acpkcs211.dll\n");
ByteArrayInputStream bais = new ByteArrayInputStream(sb.toString().getBytes());
Provider p = new SunPKCS11(bais);
Security.addProvider(p);
KeyStore ks = KeyStore.getInstance("PKCS11");
ks.load(null, null);