http://www.berthou.com/us/2009/07/01/verify-pdf-signature-with-itext/
package com.berthou.test.pdf ; import java.io.*; import java.security.*; import java.security.cert.Certificate; import java.util.ArrayList; import java.util.Calendar; import com.lowagie.text.*; import com.lowagie.text.pdf.*; public class test_pdf { /** * Name of the PDF document */ static String dirname = "D:\\" ;// "D:\\" static String fname = "HelloWorld_sign" ; public static void main(String[] args) { try { test_pdf.verifyPdf() ; } catch(Exception e) { System.err.println(e.getMessage()); } } public static final boolean verifyPdf() throws IOException, DocumentException, Exception { KeyStore kall = PdfPKCS7.loadCacertsKeyStore(); PdfReader reader = new PdfReader(dirname + fname +".pdf"); AcroFields af = reader.getAcroFields(); // Search of the whole signature ArrayList names = af.getSignatureNames(); // For every signature : for (int k = 0; k < names.size(); ++k) { String name = (String)names.get(k); // Affichage du nom System.out.println("Signature name: " + name); System.out.println("Signature covers whole document: " + af.signatureCoversWholeDocument(name)); // Affichage sur les revision - version System.out.println("Document revision: " + af.getRevision(name) + " of " + af.getTotalRevisions()); // Debut de l'extraction de la "revision" FileOutputStream out = new FileOutputStream("d:\\revision_" + af.getRevision(name) + ".pdf"); byte bb[] = new byte[8192]; InputStream ip = af.extractRevision(name); int n = 0; while ((n = ip.read(bb)) > 0) out.write(bb, 0, n); out.close(); ip.close(); // Fin extraction revision PdfPKCS7 pk = af.verifySignature(name); Calendar cal = pk.getSignDate(); Certificate pkc[] = pk.getCertificates(); // Information about the certificat, le signataire System.out.println("Subject: " + PdfPKCS7.getSubjectFields(pk.getSigningCertificate())); // Le document à t'il ete modifié ? System.out.println("Document modified: " + !pk.verify()); // Is the certificate avaible ? Be carefull we search the chain of certificat Object fails[] = PdfPKCS7.verifyCertificates(pkc, kall, null, cal); if (fails == null) System.out.println("Certificates verified against the KeyStore"); else System.out.println("Certificate failed: " + fails[1]); } return true ; } } |
相关推荐
发现错误 最近在用Nodejs发送https请求...Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE at SecurePair. (tls.js:1381:32) at SecurePair.emit (events.js:92:17) at SecurePair.maybeInitFinished (tls.js:980:10) at Clear
在"vue-drag-verify_verify_dragVerify卡顿_thousandm5p_vue_silly9fx_"这个标题中,"dragVerify卡顿"可能是指在使用Vue Drag Verify组件时遇到了性能问题,可能是由于大量元素渲染或拖动操作不流畅导致的。...
MD5Verify是一款用于验证文件完整性的工具,主要利用MD5哈希算法来检查文件是否在传输或存储过程中被篡改。MD5哈希算法是一种广泛使用的加密散列函数,能够生成一个128位(16字节)的散列值,通常表示为32个十六进制...
"屏幕取词"是词典软件(如:金山词霸)里面一个必要功能。...微软有一个开源工具 UIA Verify 是基于UI Automation API的,该程序也有一个取词功能(菜单 Mode -> Hover Mode),可以参考看看它的实现方法。
"verify code_verify_verifyappcode_android_" 这个标题所指的,很可能是关于实现一个自定义验证码输入框(VercodeEditText)的源码项目。在Android应用中,这种控件通常具有特殊的格式要求,如限制输入字符数量、...
这可以通过创建和应用`PASSWORD_VERIFY_FUNCTION`来实现。`PASSWORD_VERIFY_FUNCTION`允许我们自定义一个PL/SQL函数,该函数将在用户尝试更改密码时进行验证,确保新密码满足预设的复杂度规则。以下是在Oracle 11g ...
大厂招聘面试verify测评题题库(语言、数字推理等),包括真题、答案和关键题目解析,可搜索~
Original error: Cannot verify the signature of 'C:\Program Files\Appium\resources\app\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-v4.21.1.apk'....
deepin-elf-verify-1.1.10-1 mips64 龙芯 依赖库
verify.js纯前端验证码插件。 这是一款极简洁的表单校验插件,属于半封装模式,只需引入插件,即可任意编写业务逻辑代码,简单方便易修改。
在本文中,我们将深入探讨Laravel开发中的"verify"概念,特别是针对Laravel 4和5版本的身份验证机制。Laravel作为一个优雅的PHP框架,提供了丰富的功能,包括强大的身份验证工具,使得开发者能够轻松地处理用户认证...
《jQuery验证码插件verify.js深度解析》 在Web开发中,验证码已经成为不可或缺的安全机制,用于防止恶意自动化的机器人操作,如防止垃圾邮件、刷票等。jQuery作为一个轻量级、高性能的JavaScript库,提供了丰富的...
deepin-elf-verify_0.0.16.10-1_arm64 UOS依赖包 ARM UOS鲲鹏依赖包
deepin-elf-verify_0.0.16.10-1_amd64 uos兆芯,intel,amd依赖包
依赖关系不满足:deepin-elf-verify,(修改版本号骗过验证,实际为0.0.14.5-1)
<tfgg-verify @result='verifyResult' ref="verifyElement"></tfgg-verify> import tfggVerify from "@/components/tfgg-verify/tfgg-verify.vue"; export default { components: { "tfgg-verify":tfggVerify ...
verify公共函数(陈攀).js。verify公共函数(陈攀).js。verify公共函数(陈攀).js。verify公共函数(陈攀).js。
deepin-elf-verify_1.1.10-1_amd64 amd,intel,兆芯 UOS依赖包
标题中的“test_rsa.rar_RSA_verify_openssl_rsa_rsa verify_verify_rsa”表明这是一个关于RSA公钥密码体制在OpenSSL环境中验证签名的示例或教程。在描述中提到的“openssl rsa pubkey verify”则指使用OpenSSL工具...