Comment lire une clé privée pour une utilisation avec OpenSAML?

OK, c'est un autre de ces "je n'ai aucune idée par où commencer" questions, j'espère donc que la réponse est simple. Cependant, je ne sais pas vraiment quoi chercher, et mes tentatives jusqu'à présent n'ont pas beaucoup d'utilisation.

Je veux lire une clé privée à partir d'une (actuellement sur disque) fichier. En fin de compte, la clé réside dans une base de données, mais ce sera assez bon pour le moment et que la différence ne devrait pas avoir de réelles portant sur l'analyse du matériel de clé. J'ai été en mesure de créer un Credential instance qui détient la partie publique de la clé (confirmé par le débogueur), mais je n'arrive pas à comprendre comment lire la partie privée. La paire de clés est générée comme:

openssl genrsa 512 > d:\host.key
openssl req -new -x509 -nodes -sha1 -days 365 -key d:\host.key > d:\host.cert

(Oui, je sais que 512 bits de clés RSA ont été brisées, il y a longtemps. Cependant, pour essayer d'obtenir de l'API pour le travail, je ne vois aucune raison d'échappement le système d'entropie d'approvisionnement inutilement.)

Le code jusqu'à présent est:

import org.opensaml.xml.security.credential.Credential;
import org.opensaml.xml.security.x509.BasicX509Credential;

private Credential getSigningCredential()
throws java.security.cert.CertificateException, IOException {
    BasicX509Credential credential = new BasicX509Credential();

    credential.setUsageType(UsageType.SIGNING);

    //read public key
    InputStream inStream = new FileInputStream("d:\\host.cert");
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream);
    inStream.close();
    credential.setEntityCertificate(cert);

    //TODO: read private key

    //done.
    return credential;
}

Mais comment puis-je lire le fichier host.key dans la clé privée portion de credential, si je peux utiliser le générés Credential instance de signer des données?

OriginalL'auteur a CVn | 2011-03-08