2012-05-23 5 views
0

org.jscep.server.ScepServlet 구현 doEnroll (List<X509Certificate> doEnroll(CertificationRequest certificationRequest)) 메소드 구현을 제공해야합니다.인증 요청을 X509Certificate로 가져 오는 중

제공된 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; 
} 
+0

당신이 시도 코드를 작성하시기 바랍니다. –

답변

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); 
    } 
} 
관련 문제