List ocsps = new ArrayList();
if (pkcs7.getOcsp() != null) {
ocsps.add((IBasicOCSPResp) pkcs7.getOcsp()); // Causes ClassCastException
}
// Checking if the OCSP responses in the list were valid for the certificate on a specific date.
OCSPVerifier ocspVerifier = new OCSPVerifier(null, ocsps);
< /code>
Тем не менее, это приводит к следующему ClasscastException: < /p>
Java.lang.classcastexception: class
com .itextpdf.bouncycastle.asn1.ocsp.basicocspresponsebc не может быть
Cost to Class
comm.itextpdf.commons.bouncycastle.cert.ocsp.ibasicocspresp
(comcom.itextpdf.bouncycastle.asn1.ocsp.basicocspresponsebc и
com.itextpdf.commons.bouncycastle.cers.ocsp.ibaspresp. в
бездушный модуль Загрузка App ') < /p>
< /blockquote>
Вот соответствующая функция: < /p>
public VerifResult checkRevocation(PdfPKCS7 pkcs7, X509Certificate signCert,
X509Certificate issuerCert, Date date, Signature signature)
throws GeneralSecurityException {
List ocsps = new ArrayList();
if (pkcs7.getOcsp() != null) {
ocsps.add((IBasicOCSPResp) pkcs7.getOcsp()); // Causes ClassCastException
}
// Check OCSP response validity
OCSPVerifier ocspVerifier = new OCSPVerifier(null, ocsps);
List verification = ocspVerifier.verify(signCert, issuerCert, date);
// If OCSP verification fails, fall back to CRL verification
if (verification.isEmpty()) {
List crls = new ArrayList();
if (pkcs7.getCRLs() != null) {
for (CRL crl : pkcs7.getCRLs()) {
crls.add((X509CRL) crl);
}
}
CRLVerifier crlVerifier = new CRLVerifier(null, crls);
verification.addAll(crlVerifier.verify(signCert, issuerCert, date));
}
boolean ok = false;
if (verification.isEmpty()) {
logger.info("[{}] The signing certificate couldn't be verified", this.traceid);
signature.setNotRevokedWhenSigned(false);
return new VerifResult(false, false);
} else {
for (VerificationOK v : verification) {
logger.info(v);
signature.setNotRevokedWhenSigned(true);
ok = true;
}
}
signature.setNotRevokedWhenSigned(false);
return new VerifResult(false, ok);
}
< /code>
Используемые зависимости: < /p>
com.itextpdf
bouncy-castle-adapter
${itext.version}
com.itextpdf
itext-core
${itext.version}
pom
com.itextpdf
kernel
${itext.version}
< /code>
Что я пробовал: < /p>
- Проверка на дублирующие версии зависимости < /p>
< /li>
Использование управления зависимостями (вызвало больше ошибок) < /p>
< /li>
pkcs7.getocsp (). toasn1primity (). getEncoded () в ibasicocspresp (привел к уловому ответу: незаконная объект в GetInstance: org.bouncycastle.asn1.dlecedence) < /p>
< /li>
Как я могу правильно преобразовать ibasicocspresponse (из com.itextpdf.signatures) в ibasicocspresp (от com.itextpdf.commons.bouncycastle.cert.ocsp), чтобы использовать его в ocspverifier? < /p>
< /li>
Есть ли обходной путь, чтобы избежать проблемы ClassCastException?
Подробнее здесь: https://stackoverflow.com/questions/794 ... in-itext-8