Pdf C5_06_验证ELTV错误
我对C5_06_ELTV课程有问题 我遵循了关于Pades LTV文件的所有建议,但当我验证时,出现以下错误: 该文件无法验证 证书未使用提供的密钥进行验证 我一直在使用itextpdf-5.5.0 Adobe Reader说所有签名都是LTV启用的,但我无法通过LTV验证 我附上一份样本文件: 附上此示例:Pdf C5_06_验证ELTV错误,pdf,itext,digital-signature,Pdf,Itext,Digital Signature,我对C5_06_ELTV课程有问题 我遵循了关于Pades LTV文件的所有建议,但当我验证时,出现以下错误: 该文件无法验证 证书未使用提供的密钥进行验证 我一直在使用itextpdf-5.5.0 Adobe Reader说所有签名都是LTV启用的,但我无法通过LTV验证 我附上一份样本文件: 附上此示例: public static void main(String[] args) throws IOException, GeneralSecurityException { Boun
public static void main(String[] args) throws IOException, GeneralSecurityException {
BouncyCastleProvider provider = new BouncyCastleProvider();
Security.addProvider(provider);
C5_06_ValidateLTV app = new C5_06_ValidateLTV();
System.out.println(EXAMPLE1);
app.validate(new PdfReader(EXAMPLE1));
System.out.println();
}
public void validate(PdfReader reader) throws IOException, GeneralSecurityException {
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null, null);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
ks.setCertificateEntry((cf.generateCertificate(new FileInputStream(ROOT))).toString(),
cf.generateCertificate(new FileInputStream(ROOT)));
CertificateVerifier custom = new CertificateVerifier(null) {
public List<VerificationOK> verify(X509Certificate signCert,
X509Certificate issuerCert, Date signDate)
throws GeneralSecurityException, IOException {
System.out.println(signCert.getSubjectDN().getName() + ": ALL VERIFICATIONS DONE");
return new ArrayList<VerificationOK>();
}
};
LtvVerifier data = new LtvVerifier(reader);
data.setRootStore(ks);
data.setCertificateOption(CertificateOption.WHOLE_CHAIN);
data.setVerifier(custom);
data.setOnlineCheckingAllowed(false);
data.setVerifyRootCertificate(false);
List<VerificationOK> list = data.verifySignature();
try {
data.verify(list);
}
catch(GeneralSecurityException e) {
System.err.println(e.getMessage());
}
System.out.println();
if (list.size() == 0) {
System.out.println("The document can't be verified");
}
for (VerificationOK v : list)
System.out.println(v.toString());
}
其中ROOT变量是一个字符串,其中包含证书链的根证书所在的路径。它是一个扩展名为.crt的文件,EXAMPLE1变量是一个字符串,带有pdf签名的路径
谢谢大家 证书链的根证书始终是自签名的。因此,您需要提供至少一个受信任的证书来验证该根证书。。。{…ks.setCertificateEntrycf.GenerateCertificateNewFileInputStreamRoot.toString cf.GenerateCertificateNewFileInputStreamRoot;…LtvVerifier数据=新的LtvVerifierreader;data.setRootStoreks;data.SetCertificateOption CertificateOption.WHOLE_链;data.setVerifiercustom;…list=data.verifySignature;data.verifylist;…其中根变量e是一个字符串,带有证书链的根证书所在的路径。它是一个扩展名为的文件。感谢您的评论谢谢!您同时解决了问题吗?我刚刚尝试下载您的PDF以检查它,但不可能。请尝试使用此链接