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) 강조 표시하는 데 도움이되지 않습니다.
나는이 패턴을 보유하고 희망
... : 위의 예를 들어
.bouncycastle.org/wiki/display/JA1/BC + 버전 + 2 + API) –