OK、これは「どこから始めればいいのかわからない」という質問の1つなので、答えが簡単なことを願っています。しかし、何を検索すればよいのかよくわからないので、これまでのところあまり役に立たなかった。
(現在ディスク上にある)ファイルから秘密鍵を読み取りたい。最終的にはキーはデータベースに存在しますが、これは今のところ十分であり、その違いはキーマテリアルの解析に実際には関係がないはずです。キーのパブリック部分(デバッガーで確認済み)を保持するインスタンスを作成できました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
しかし、ファイルをの秘密鍵部分に読み込んでcredential
、生成されたCredential
インスタンスを使用してデータに署名できるようにするにはどうすればよいですか?