#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’ должен быть ровно один сертификат.