我正在尝试从Keychain中检索私钥以便稍后进行数字签名。
使用下面的代码,我可以获得智能卡和本地驱动器中的所有证书,但不能访问私钥。我在智能卡中有很多私钥和证书对。
KeyStore keyStore = KeyStore.getInstance("KeychainStore", "Apple");
keyStore.load(null, "-".toCharArray());
Enumeration<String> aliases = keyStore.aliases();
while (aliases.hasMoreElements()) {
String alias = aliases.nextElement();
if (keyStore.isKeyEntry(alias)) {
try {
PrivateKey key = (PrivateKey) keyStore.getKey(alias, "-".toCharArray());
}
catch (RuntimeException e) {
System.out.println(" Key failed to load ("+e.getMessage()+")");
}
Certificate certificate = keyStore.getCertificate(alias);
String subject = "";
if ((certificate != null) && (certificate instanceof X509Certificate)) {
subject =((X509Certificate)certificate).getSubjectX500Principal().getName();
}
}
}
如何检索特定证书的私钥?除了一个系统私钥外,getKey()
始终返回null。