2014-01-16 14 views
1

TimeStampToken 클래스 (bctsp-jdk16-1.46.jar)에는 두 가지 유효성 검사 메서드가 있으며 그 중 하나는 사용되지 않습니다.파일 시스템에서 .cer 파일을 사용하여 TimeStampToken의 유효성을 검사하는 방법은 무엇입니까?

deprecated 메서드는 인수로 X509Certificate를 사용하며 매우 쉽게 작성합니다.

InputStream inPFX = getClass().getClassLoader().getResourceAsStream("tsp.cer"); 
CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); 
X509Certificate cert = (X509Certificate) cf.generateCertificate(inPFX); 

// The validate method just takes the X509Certificate object 
token.validate(cert, "BC"); 

새 메서드는 SignerInformationVerifier 개체를 사용합니다. SignerInformationVerifier를 만드는 방법을 찾았지만 올바른 방법이라고는 확신하지 못합니다.하지만 여전히 X509CertificateHolder 객체가 필요합니다.

  • 어떻게 파일 시스템에 (* .cer 파일)
  • 이이 TimeStampToken을 확인하는 SignerInformationVerifier을 만들 수있는 올바른 방법인가를 파일에서 X509CertificateHolder을 만들려면 어떻게해야합니까?

나의 현재 코드는 다음과 같습니다

TimeStampToken token = new TimeStampToken(new CMSSignedData(response)); 

X509CertificateHolder x = // HOW TODO THIS? 

// create the SignerInformationVerifier object 
DigestAlgorithmIdentifierFinder daif = new DefaultDigestAlgorithmIdentifierFinder(); 
DigestCalculatorProvider dcp = new BcDigestCalculatorProvider(); 
SignerInformationVerifier siv = new BcRSASignerInfoVerifierBuilder(daif, dcp).build(x509ch); 

// use the new validate method 
token.validate(siv); 

답변

1

TimeStampToken token = new TimeStampToken(new CMSSignedData(response)); 

InputStream in = new FileInputStream("tsp.cer"); 
CertificateFactory factory = CertificateFactory.getInstance("X.509"); 

X509Certificate cert = (X509Certificate) factory.generateCertificate(in); 

//RSA Signature processing with BC 
X509CertificateHolder holder = new X509CertificateHolder(cert.getEncoded()); 
SignerInformationVerifier siv = new BcRSASignerInfoVerifierBuilder(new DefaultDigestAlgorithmIdentifierFinder(), new BcDigestCalculatorProvider()).build(holder); 

//Signature processing with JCA and other provider 
//X509CertificateHolder holderJca = new JcaX509CertificateHolder(cert); 
//SignerInformationVerifier sivJca = new JcaSimpleSignerInfoVerifierBuilder().setProvider("anotherprovider").build(holderJca); 

token.validate(siv); 

가와 서명 확인에 대한 자세한 내용에 대한 SignerInformation 객체를 BC Version 2 APIs 문서의 섹션을 확인 에서 봐보십시오 BC API.

올바른 방법으로 SignerInformationVerifier을 만들면 샘플 코드에서 다른 방법으로 첨부 된 JCA/JCE 공급자 기반 솔루션 용 SignerInformationVerifier을 찾을 수 있습니다.