2011-05-24 56 views
2

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

在此先感谢。

回答

4

RFC 3161的相关部分:

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

因此,首先,您需要确保certReq在请求中为真。这是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); 

那场比赛“集合应该只有一个证书。