我使用从智能卡提供的X509证书的SSL连接。 我已经从雅典娜2点相同的标记。 我初始化密钥库我读证书后,但是当我试图做的,我没有得到发现我使用的第一个标记它不影响私人key.Connecting提供第二代币的实际连接,它的工作原理。 我试图通过specifing的slotIndexList 1加入不同SunPCKS11提供商,对于由下式给出的第二令牌的数目“个时隙= p11.C_GetSlotList(真)”,但仍然是相同的错误。 当我列出了供应商:我看到第二个供应商,但Java不使用它(我不知道为什么)。
Provider _etpkcs11;
slots = p11.C_GetSlotList(true);
if(slot ==0)
{
String pkcs11config = "name=Athena\nlibrary=C:\WINDOWS\system32\asepkcs.dll";
byte[] pkcs11configBytes =pkcs11config.getBytes();
ByteArrayInputStream configStream = new ByteArrayInputStream(pkcs11configBytes);
etpkcs11 = new SunPKCS11(configStream);
Security.addProvider(etpkcs11);
}
上述工作的下面不工作
if(slot ==1)
{
String pkcs11config1 = "name=Athenaslot1\nlibrary=C:\WINDOWS\system32\asepkcs.dll";
byte[] pkcs11configBytes1 =pkcs11config1.getBytes();
ByteArrayInputStream configStream1 = new ByteArrayInputStream(pkcs11configBytes1);
etpkcs11 = new SunPKCS11(configStream1);
Security.addProvider(etpkcs11);
}
下列
for(int j=0;j<Security.getProviders().length;j++)
{
System.out.println(Security.getProviders()[j].getName());
}
收益:
SunPKCS11-Athena
SunPKCS11-Athenaslot1
SUN
SunRsaSign
SunEC
SunJSSE
SunJCE
SunJGSS
SunSASL
XMLDSig
SunPCSC
以及使用所述第二的第二令牌当误差:
No installed provider supports this key: sun.security.pkcs11.P11Key$P11PrivateKey
谢谢
PS:我需要同一台机器上的两个标记