Ответ на временную метку

#c# #.net #bouncycastle #trusted-timestamp #rfc3161

#c# #.net #bouncycastle #доверенный-временная метка #rfc3161

Вопрос:

Я использую Bouncy Castle для чтения ответа с сервера временных меток в .NET. Теперь я хочу показать сертификат сервера временных меток клиенту, как я могу прочитать сертификат сервера временных меток из ответа?

Заранее спасибо.

Ответ №1:

Соответствующий раздел RFC 3161:

Если поле certReq присутствует и имеет значение true, сертификат открытого ключа TSA, на который ссылается идентификатор ESSCertID внутри атрибута SigningCertificate в ответе, ДОЛЖЕН быть предоставлен TSA в поле сертификаты из структуры SignedData в этом ответе. Это поле может также содержать другие сертификаты.

Итак, прежде всего, вам нужно убедиться, что certReq имеет значение true в запросе. Это опция в организации.Отказоустойчивый замок.Конструктор Asn1.Tsp.TimeStampReq.

Затем ответ будет содержать сертификат, и поскольку там могут быть и другие сертификаты, вам нужно извлечь тот, который использовался для подписи метки времени:

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

В этой коллекции ‘matches’ должен быть ровно один сертификат.