0

org.jscep.server.ScepServletの実装メソッドdoEnroll(List<X509Certificate> doEnroll(CertificationRequest certificationRequest))の実装を提供する必要があります。

提供されたCertificationRequestからX509Certificateを返すにはどうすればよいですか?

CertificationRequestの他に、署名に使用する必要のある証明書もあります

証明書を生成するための残りのコードがあるので、証明書要求から公開鍵を取得する方法で十分です。

私が今まで持っているもの:

protected List<X509Certificate> doEnroll(CertificationRequest certificationRequest) throws OperationFailureException, Exception {
    CaCertificate caCertificate = getSelfSignedCertificate();
    X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();
    certGen.setSerialNumber(BigInteger.valueOf(System.currentTimeMillis()));
    certGen.setIssuerDN(caCertificate.getCertificate().getSubjectX500Principal());
    certGen.setNotBefore(notBefore);
    certGen.setNotAfter(notAfter);
    certGen.setSubjectDN(certificationRequest.getCertificationRequestInfo().getSubject());
    certGen.setPublicKey(publicKey); // this is basically what I need

    X509Certificate issuedCert = certGen.generate(caCertificate.getKeypair().getPrivate());

    List<X509Certificate> x509Certificates = new ArrayList<X509Certificate>();
    x509Certificates.add(issuedCert);

    return x509Certificates;
}
4

1 に答える 1

0

jscep テスト クラスで次のメソッドを見つけました。

public static PublicKey getPublicKey(CertificationRequest csr) throws IOException {
    SubjectPublicKeyInfo pubKeyInfo = csr.getCertificationRequestInfo().getSubjectPublicKeyInfo();
    RSAKeyParameters keyParams = (RSAKeyParameters) PublicKeyFactory.createKey(pubKeyInfo);
    KeySpec keySpec = new RSAPublicKeySpec(keyParams.getModulus(), keyParams.getExponent());

    try {
        KeyFactory kf = KeyFactory.getInstance("RSA");
        return kf.generatePublic(keySpec);
    } catch (Exception e) {
        throw new IOException(e);
    }
}
于 2012-05-23T13:11:30.497 に答える