2

我正在使用 Bouncy Castle 从 .NET 中的时间戳服务器读取响应。现在我想向客户端显示时间戳服务器证书,如何从响应中读取时间戳服务器证书?

提前致谢。

4

1 回答 1

5

RFC 3161 的相关部分:

如果 certReq 字段存在并设置为 true,则由响应中 SigningCertificate 属性内的 ESSCertID 标识符引用的 TSA 的公钥证书必须由 TSA 在该响应中 SignedData 结构的证书字段中提供。该字段还可能包含其他证书。

因此,首先,您需要确保请求中的 certReq 为 true。这是 Org.BouncyCastle.Asn1.Tsp.TimeStampReq 构造函数中的一个选项。

然后,响应将包含证书,并且由于其中可能还有其他证书,因此您需要找出用于时间戳签名的证书:

TimeStampResponse resp = ...;
TimeStampToken tsToken = resp.TimeStampToken;
IX509Store store = tsToken.GetCertificates("Collection");
SignerID signerID = tsToken.SignerID;
ICollection matches = store.GetMatches(signerID);

该“匹配”集合中应该只有一个证书。

于 2011-09-11T07:07:47.003 回答