Получить закрытый ключ из хранилища ключей MacOS X с помощью Java

Я пытаюсь получить доступ к моему личному хранилищу цепочек ключей MacOS X, чтобы получить определенные закрытые ключи для шифрования и подписи некоторых данных с помощью Java. Часть шифрования и подписи работает, но я не могу получить нужные закрытые ключи. Ниже приведен код, который я написал, чтобы представить мою проблему:

KeyStore myKeyStore;
myKeyStore = KeyStore.getInstance("KeychainStore", "Apple");
myKeyStore.load(null, null);

// Get all the aliases in a list (I thought that calling the KeyStore
// methods during the iteration was the reason why getKey wasn't responding properly!)
// ... it wasn't actually!
ArrayList aliases = new ArrayList();
Enumeration e = myKeyStore.aliases();
while (e.hasMoreElements()) {
    aliases.add(e.nextElement());
}

for (String alias : aliases) {
    try {
        // I read on the Internet that any ASCII password is required
        // to get the getKey method working.
        Key k = myKeyStore.getKey(alias, "TEST".toCharArray());
        if (k == null) {
            System.out.println(alias + ":  (cannot retrieve the key)");
        } else {
            System.out.println(alias + ":");
            System.out.println(k);
        }
    } catch (Exception ex) {
        System.out.println(alias + ": " + ex.getMessage());
    }
}

После выполнения этого фрагмента кода я смог увидеть все сертификаты в моем личном хранилище ключей. Однако я могу получить только один закрытый ключ, хотя в хранилище ключей их несколько. (вывод кода просто показывает несколько доверенных сертификатов + только один закрытый ключ)

И когда я удаляю этот закрытый ключ из хранилища ключей и снова выполняю этот код, возвращается другой закрытый ключ, а все остальные остаются недоступными. Импортируя закрытый ключ обратно в хранилище ключей и выполняя этот код в последний раз, он возвращается Java, и последний закрытый ключ, который был возвращен ранее, становится невозможным.

Я наткнулся на список рассылки по этой теме: хотя их в хранилище ключей куча. (вывод кода просто показывает несколько доверенных сертификатов + только один закрытый ключ)

И когда я удаляю этот закрытый ключ из хранилища ключей и снова выполняю этот код, возвращается другой закрытый ключ, а все остальные остаются недоступными. Импортируя закрытый ключ обратно в хранилище ключей и выполняя этот код в последний раз, он возвращается Java, и последний закрытый ключ, который был возвращен ранее, становится невозможным.

Я наткнулся на список рассылки по этой теме: хотя их в хранилище ключей куча. (вывод кода просто показывает несколько доверенных сертификатов + только один закрытый ключ)

И когда я удаляю этот закрытый ключ из хранилища ключей и снова выполняю этот код, возвращается другой закрытый ключ, а все остальные остаются недоступными. Импортируя закрытый ключ обратно в хранилище ключей и выполняя этот код в последний раз, он возвращается Java, и последний закрытый ключ, который был возвращен ранее, становится невозможным.

Я наткнулся на список рассылки по этой теме: http://lists.apple.com/archives/java-dev/2007/aug/msg00134.html . К сожалению, похоже, что эта проблема не была решена, и я не могу связаться с вовлеченными лицами (нет адресов электронной почты).

Кто-нибудь пытался получить несколько закрытых ключей из хранилища цепочки ключей MacOS, и это им удалось?

] Моя конфигурация:

  • MacOS X 10.6
  • Jva JRE 1.6.0_15 (32- и 64-разрядная версии)
  • Safari 4.0.3
  • Firefox 3.6.3

Заранее спасибо,

12
задан swle 14 December 2010 в 09:39
поделиться