Я пытаюсь получить доступ к моему личному хранилищу цепочек ключей 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, и это им удалось?
] Моя конфигурация:
Заранее спасибо,