1

TimeStampToken クラス (bctsp-jdk16-1.46.jar) には 2 つの検証メソッドがあり、そのうちの 1 つは非推奨です。

非推奨のメソッドは 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 ファイル) から X509CertificateHolder を作成するにはどうすればよいですか?
  • これは、SignerInformationVerifier を作成して TimeStampToken を検証する正しい方法ですか?

私の現在のコードは次のようになります。

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);
4

1 に答える 1