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);

В этой коллекции "спичек" должен быть ровно один сертификат.

Другие вопросы по тегам