2012-07-13 3 views
1

CSR, 자체 서명 된 인증서 등을 만드는 데 도움이되는 몇 가지 도우미 메서드를 만들려고합니다. 이미 사용되지 않는 기능으로 이미 구현 된 몇 가지 메서드가있었습니다. 최신 정보를 유지하기 위해 bouncycastle을 1.47로 업그레이드했는데 크게 다른 것 같고 두 가지가 궁금합니다.Bouncy castle 1.47 및 표준 JCE

1) 간결한 예제 목록을 추적 할 수없는 것 같습니다. 이전과 유사한 작업을 수행하는 데 필요한 코드의 자세한 표시로 인해 매우 환영받을 것입니다.

2) 고전적인 JCE 자료를 믹싱하는 동안 bouncycastle을 사용하는 것이 부당하게 어렵습니다. 이것에 대한 이유가 있습니까?

org.bouncycastle.jce.PKCS10CertificationRequest request = new org.bouncycastle.jce.PKCS10CertificationRequest(type.toString(), subject, pair.getPublic(), null, pair.getPrivate()); 
제목이 "으로 javax.security.auth.x500.X500Principal"이다

: 후자의 예로서

는 CSR의 발생을,이 하만큼 단순하게 사용 쉽게 사기의 전체 호스트가 있습니까

public byte[] generatePKCS10(KeyPair pair, SignatureType type, X500Principal subject) throws IOException { 
    PKCS10CertificationRequestBuilder builder = new PKCS10CertificationRequestBuilder(
     new X500Name(subject.getName()), 
     SubjectPublicKeyInfo.getInstance(pair.getPublic()) 
    ); 
    AlgorithmIdentifier sigAlgId = new DefaultSignatureAlgorithmIdentifierFinder().find(type.toString()); 
    AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId); 
    AsymmetricKeyParameter keyParam = PrivateKeyFactory.createKey(pair.getPrivate().getEncoded()); 
    try { 
     ContentSigner signer = new BcRSAContentSignerBuilder(sigAlgId, digAlgId).build(keyParam); 
     PKCS10CertificationRequest csr = builder.build(signer); 
     ContentVerifierProvider verifier = new JcaContentVerifierProviderBuilder().setProvider(new BouncyCastleProvider()).build(pair.getPublic()); 
     csr.isSignatureValid(verifier); 
     return csr.getEncoded(); 
    } 
    catch (OperatorCreationException e) { 
     throw new IOException(e); 
    } 
    catch (PKCSException e) { 
     throw new IOException(e); 
    } 
} 

: 일반적인 "java.security.KeyPair의"등의 개인 & 공개 키 줄기

지금 내가 좋아하는 뭔가를 버전 유틸리티 또는 오버로드 된 메서드 또는 JCE 관련 구현이 누락 되었습니까? 많은 Google 검색에서 일을하는 데 오래되었거나 (사용되지 않음 : deprecated) 강조 표시하는 데 도움이되지 않습니다.

답변

1

나는 게시 한 직후 JCE 호환 솔루션을 발견했습니다. 상당수의 클래스에는 필요한 모든 변환을 처리하는 JCA 특정 확장이 있습니다. 예를 들어 "X509v1CertificateBuilder"는 Bouncycastle 고유의 JCE 매개 변수 대신 JCE 매개 변수를 사용하는 "new JcaX509v1CertificateBuilder()"로 인스턴스화 할 수 있습니다. // WWW :이 자신의 [위키] 다소 설명되어 새로운 "연산자"인터페이스 (HTTP이다

+0

나는이 패턴을 보유하고 희망

PKCS10CertificationRequestBuilder builder = new JcaPKCS10CertificationRequestBuilder( subject, pair.getPublic() ); 

... : 위의 예를 들어

.bouncycastle.org/wiki/display/JA1/BC + 버전 + 2 + API) –

관련 문제