TimeStampResponse
Я использую Bouncy Castle для чтения ответа от сервера отметок времени в.NET. Теперь я хочу показать клиенту сертификат сервера отметок времени, как я могу прочитать сертификат сервера отметок времени из ответа?
Заранее спасибо.
1 ответ
Соответствующий раздел RFC 3161:
Если поле certReq присутствует и имеет значение true, сертификат открытого ключа TSA, на который ссылается идентификатор ESSCertID внутри атрибута SigningCertificate в ответе, ДОЛЖЕН быть предоставлен 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);
В этой коллекции "спичек" должен быть ровно один сертификат.