2011-05-24 53 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); 

那場比賽「集合應該只有一個證書。