可互操作的签名类型

正如标题所示,以下列表包含可互操作的签名类型,这些类型或多或少是严格定义的。在 PDF 规范指定的方式还包括完全自定义的签名方案。但让我们假设我们处于可互操作的状态。签名类型的集合烧毁到:

  • adbe.x509.rsa_sha1ISO 32000-1 第 12.8.3.2 节 PKCS#1 签名中定义 ; 签名值 Contents 包含 DER 编码的 PKCS#1 二进制数据对象 ; 如果 RSA 是包含填充文档散列和散列算法的加密结构,则此数据对象是相当裸的签名。

  • adbe.pkcs7.sha1ISO 32000-1 第 12.8.3.3 节 PKCS#7 签名中定义 ; 签名值 Contents 包含 DER 编码的 PKCS#7 二进制数据对象 ; 此数据对象是一个大容器对象,它也可以包含元信息,例如,它可能包含用于构建证书链的证书,用于证书撤销检查的吊销信息,用于修复签名时间的数字时间戳,…… SHA1 摘要文档的字节范围应封装在 PKCS#7 SignedData 字段中,ContentInfo 的类型为 Data。该 SignedData 的摘要应作为正常的 PKCS#7 摘要合并。

  • adbe.pkcs7.detachedISO 32000-1 第 12.8.3.3 节 PKCS#7 签名中定义 ; 签名值 Contents 包含 DER 编码的 PKCS#7 二进制数据对象,见上文。文档字节范围内的原始签名消息摘要应作为普通 PKCS#7 SignedData 字段合并。PKCS#7 SignedData 字段中不应封装任何数据。

  • ETSI.CAdES.detachedETSI TS 102 778-3 中定义,并将集成在 ISO 32000-2 中; 签名值 Contents 包含 CMS 中指定DER 编码的 SignedData 对象 ; CMS 签名容器是 PKCS#7 签名容器的近亲,见上文。这基本上是 adbe.pkcs7.detached 的不同轮廓和更严格的定义变体。

  • ETSI.RFC3161ETSI TS 102 778-4 中定义,并将集成在 ISO 32000-2 中; 签名值 Contents 包含 RFC 3161 中指定TimeStampToken ; 时间戳令牌再次与 PKCS#7 签名容器相关,见上文,但它们包含一个特殊的数据子结构,其中包含文档哈希,戳记创建的时间以及发布时间服务器上的信息。

我建议研究我命名的规范和从那里引用的文档,主要是 RFC。基于该知识,你可以轻松找到适当的 BouncyCastle 类来分析不同的签名内容

(从这个答案复制 )