atq

导航

统计
 
  1. 通过pdfbox加载文件取得签名。
  2. 通过bouncycastle,取得签名的对象ID,来判断是否是含有时间戳的签名。

代码:

try (PDDocument document = Loader.loadPDF(input)) {
List signatures = document.getSignatureDictionaries();
if (signatures.isEmpty()) {
} else {
PDSignature signature = signatures.get(signatures.size() - 1);
byte[] content = signature.getContents();
CMSSignedData signedData = new CMSSignedData(content);
String oid = signedData.getSignedContentTypeOID();
if(StringUtils.isNotBlank(oid) && oid.equals(ContentInfo.id_ct_TSTInfo.getId())) {
。。。。。。

参考:时间戳签名协议rfc3161 https://datatracker.ietf.org/doc/html/rfc3161

RFC 3161 Time-Stamp Protocol (TSP) August 2001

id-ct-TSTInfo 对象标识符 ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 4}

“eContentType” 通常表示扩展内容类型(extended content type)。它用于指定特定数据或消息的类型属性,以便接收方能够正确地解析和处理该数据。

RFC 3161 即 “Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)”,它是互联网工程任务组(IETF)发布的一份标准文档。
一、主要内容
时间戳协议定义
RFC 3161 定义了一个时间戳协议(Time-Stamp Protocol,TSP),该协议允许客户端向时间戳权威机构(Time Stamp Authority,TSA)请求数字时间戳。
数字时间戳是一个包含了特定时间信息和数据完整性验证信息的数据结构,用于证明某个数据在特定时间点的存在性和完整性。

posted on   atq  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2023-10-24 web 在线浏览pdf
 
点击右上角即可分享
微信分享提示