Как прочитать закрытый ключ для использования с OpenSAML?

Хорошо, это еще один из тех вопросов «я понятия не имею, с чего начать», так что, надеюсь, ответ прост. Однако я действительно не знаю, что искать, и мои попытки пока не принесли особого успеха.

Я хочу прочитать закрытый ключ из файла (в настоящее время на диске). В конечном итоге ключ будет находиться в базе данных, но на данный момент этого будет достаточно, и эта разница не должна иметь реального отношения к синтаксическому анализу ключевого материала. Мне удалось создать экземпляр Credential , который содержит открытую часть ключа (подтвержденную отладчиком), но я не могу понять, как читать частную часть. Ключевая пара была сгенерирована как:

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

( Да , я знаю, что 512-битные ключи RSA были давно сломаны. Однако для попытки заставить API работать, Я не вижу причин без нужды исчерпывать запас энтропии системы.)

На данный момент код:

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;
}

Но как мне прочитать файл host.key в части закрытого ключа учетные данные , чтобы я мог использовать сгенерированный экземпляр учетных данных для подписи данных?

11
задан a CVn 13 August 2015 в 12:42
поделиться