问题标签 [rfc3161]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何从 Bouncy Castle 中的时间戳响应中提取证书
使用 Bouncy Castle 和 C#,我请求一个包含证书的时间戳令牌 ( timestampRequestGenerator.SetCertReq(true)
),并且我得到的响应比设置为时要大得多SetCertReq
,false
因此我假设响应在某处具有用于生成时间戳的公钥证书。
如何使用 Bouncy Castle 访问这些证书?我在 Visual Studio 中探索了响应对象,但没有找到证书的位置。
php - 使用 PHP 为 PDF 签名添加时间戳
使用 tcpdf 库,我可以向 pdf 添加签名,但时间戳(RFC3161)尚未在此库(applyTSA)中实现,我需要此功能。
根据 ISO 32000-1:2008:
作为无符号属性的时间戳信息 (PDF 1.6):时间戳记号应符合 RFC3161,并且应按照 RFC3161 的附录 A 中的描述计算并嵌入到 PKCS#7 对象中。时间戳的具体处理及其处理留给特定的签名处理程序来定义。
来自 RFC3161 附录 A
以下对象标识符标识签名时间戳属性:
id-aa-timeStampToken OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) aa(2) 14 }
Signature 时间戳属性值具有 ASN.1 类型 SignatureTimeStampToken:
SignatureTimeStampToken ::= TimeStampToken
TimeStampToken 中的 messageImprint 字段的值应是 SignerInfo 中的签名字段值的哈希值,用于被标记的签名数据。
使用 openssl 生成时间戳非常容易,但我不清楚如何将其嵌入到 PKCS#7 对象中。我的问题是:
- 如何在我的签名中添加时间戳?
- 或者,是否有任何具有此功能的开源库(php 或其他)?
一个例子将不胜感激
java - Adobe - 签名带有时间戳,但无法验证时间戳
我正在努力在我的 pdf 文件上创建带有时间戳的签名。经过多次尝试,我们成功并签署了 PDF 文件。Adobe 验证了此文件,但时间戳有一个错误。有以下信息:
此签名是否创建不当?
有一个代码
openssl - openSSL 验证使用自签名证书签名的 RFC 3161 TimeStampResp
我使用 openSSL 从 RFC 3161 TimeStampReq 生成了 RFC 3161 TimeStampResp。因此,我使用了自签名 CA 证书和自签名 CA 使用以下命令颁发的 TSA 证书:
响应已创建。
生成以下输出:
状态信息:
状态:授予。
状态描述:未指定
失败信息:未指定
TST 信息:
版本:1
策略 OID:tsa_policy1
哈希算法:sha256
消息数据:
0000 - 43 2c bb 03 28 48 42 06-c0 c8 95 ee d8 32 9d 29 C,..(HB ......2.)
0010 - 09 7c 10 be 68 2a 77 f6-6e 96 61 7c bf 8f e2 cd .|..h*wna|....
序列号:0x01
时间戳:2013 年 8 月 1 日:40:03 2018 GMT
精度:0x01 秒,0x01F4 毫秒,0x64 微秒
订购:是随机数
:未指定
TSA:DirName:/C=stuff/ST=Some-State/L=stuff/O=stuff/CN=stuff
扩展名:
当我尝试使用以下命令针对 TimeStampReq 验证 TimeStampResp 时:
我收到一条错误消息,指出我的 CAcert 是自签名的(这实际上是真的)
验证:失败
139727615005120:错误:2F06D064:时间戳例程:ts_verify_cert:证书验证错误:../crypto/ts/ts_rsp_verify.c:182:验证错误:自签名证书
有什么方法可以跳过证书验证或告诉 openSSL 这个 CA 可以信任?
javascript - 解码以 ASN.1 编码的时间戳(javascript)
我正在尝试解码从 HTTP 发布请求中收到的时间戳,但这是一项非常复杂的任务,我什至对 ASN.1/RFC 3161 没有任何适当的了解,所以如果有人愿意帮助我出去,我真的会被激怒!
代码:
我正在尝试使用 asn1 npm 包(https://www.npmjs.com/package/asn1)。
如果我改变我await response.arrayBuffer()
的await response.text()
我得到这个:
我真的不知道如何解决这个问题,我尝试了很多不同的东西,但似乎没有任何效果,如果有人能指出我正确的方向,那就太好了!
encryption - 如何验证使用 RSASSA-PSS 的 RFC3161 时间戳记令牌
我的时间戳提供程序最近从使用rsaEncryption对时间戳令牌签名更改为rsassaPss(请参阅此处的 asn1parse 的差异)。
在更改之前,我在 OpenSSL (v1.1.1a) 中使用以下命令来验证时间戳记令牌:
但是该命令不再起作用。
这可能是因为在使用 OpenSSL 的时间戳验证中尚不支持RSASSA-PSS 。
是否有任何其他选项可以使用 rsassaPss 验证 RFC3161 令牌?
如果您想查看文件,时间戳令牌(rsaEncryption 和 rsassaPss)和签名证书都在此 zip 中。
groovy - Groovy 脚本中 RFC3161 的实现
我需要Groovy
在 SoapUI 项目中的脚本中从 TSA 获取时间戳。我尝试使用以下脚本来获取时间戳。
bcprov-jdk15on-1.62.jar
我将、bcpkix-jdk15on-1.62.jar
和依赖guice-4.2.2.jar
项导入文件夹。我在执行过程中收到以下错误消息:javax.inject-1.jar
SOAPUI_HOME/bin/ext
java.lang.NoClassDefFoundError:由于缺少依赖项 [Lorg/aopalliance/intercept/MethodInterceptor; 无法加载类 com.google.inject.AbstractModule;
更新:
我添加了所有需要的依赖 jar 文件,但收到以下错误消息:
groovy.lang.GroovyRuntimeException:无法为类创建脚本实例:接口 TSAClient。原因:java.lang.InstantiationException: TSAClient
pdf - XAdES 等效于 PAdES 时间戳
XAdES 中是否存在与 TSA“签署”PDF 的 PAdES 时间戳的等效项?
我不是指 XAdES-T,如果我理解正确,时间戳会添加到现有签名中,我正在寻找这样的东西(A.2 第 15 页):
https://www.etsi.org/deliver/etsi_ts/102700_102799/10277804/01.01.01_60/ts_10277804v010101p.pdf
这看起来像这样: https ://1drv.ms/b/s!AlQKaiJaXUDNgxZwz3QxR2CaaORm?e=TnA0uX
例如,如果您下载 PDF 并使用 Adobe Reader 打开它,您会看到 TSA 制作的“签名”。
谢谢!
pdf - 您可以在不“签名”的情况下向 PDF 添加时间戳不可篡改吗?
使用数字签名对 PDF 进行签名时,可以使用受信任的时间戳服务添加由时间戳权威签名的时间戳令牌。然后在查看 PDF 的签名时,它会说它包含一个签名的时间戳,并且自那时以来它没有被篡改(如果没有的话)。
从技术上讲,发生的事情是 pdf 内容的哈希被发送到 TSA (RCF3161),该哈希与当前时间戳(由时间戳权威确定)以及一些元数据一起放入一个结构中,然后签名并发送背部。然后,这提供了自该时间点以来 PDF 未被更改的证据。
因此,从技术上讲,应该可以创建这样的时间戳证明,而无需使用附加签名对文档本身进行签名。尽管 PDF 标准以某种方式支持它(并且就 Acrobat Reader 而言,然后能够以某种方式显示此时间戳)?
当然我可以手动完成,获取文件二进制表示的 SHA-256 哈希,将其发送到 TSA 服务并将接收到的令牌存储在外部文件中,但最好我想嵌入防篡改证明到 PDF 中,以便 Acrobat Reader 可以显示它。
这可能吗?如果是这样,怎么做?