TimeStampResponse - PullRequest
       61

TimeStampResponse

2 голосов
/ 25 мая 2011

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

Спасибо завперед.

1 Ответ

4 голосов
/ 11 сентября 2011

Соответствующий раздел 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);

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

...