获取Mac OS的私钥

时间:2014-08-25 20:31:59

标签: java macos itext smartcard private-key

我正在尝试从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。

0 个答案:

没有答案