MessageFormat form = new MessageFormat
(rb.getString("alias has no public key (certificate)"));
Object[] source = {alias};
throw new Exception(form.format(source));
}
PKCS10 request = new PKCS10(cert.getPublicKey());
// Construct an X500Signer object, so that we can sign the request
if (sigAlgName == null) {
// If no signature algorithm was specified at the command line,
// we choose one that is compatible with the selected private key
String keyAlgName = privKey.getAlgorithm();
if ("DSA".equalsIgnoreCase(keyAlgName)
|| "DSS".equalsIgnoreCase(keyAlgName)) {
sigAlgName = "SHA1WithDSA";
} else if ("RSA".equalsIgnoreCase(keyAlgName)) {
sigAlgName = "SHA1WithRSA";
} else {
throw new Exception(rb.getString
("Cannot derive signature algorithm"));
}
}
Signature signature = Signature.getInstance(sigAlgName);
signature.initSign(privKey);
X500Name subject =
new X500Name(((X509Certificate)cert).getSubjectDN().toString());
X500Signer signer = new X500Signer(signature, subject);
// Sign the request and base-64 encode it
request.encodeAndSign(signer);
request.print(out);
}