2

Bouncy Castleを使用して.NETのタイムスタンプサーバーからの応答を読み取ります。クライアントにタイムスタンプサーバー証明書を表示したいのですが、応答からタイムスタンプサーバー証明書を読み取るにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

5

RFC 3161の関連セクション:

certReqフィールドが存在し、trueに設定されている場合、応答のSigningCertificate属性内のESSCertID識別子によって参照されるTSAの公開鍵証明書は、その応答のSignedData構造のcertificatesフィールドのTSAによって提供される必要があります。そのフィールドには、他の証明書も含まれる場合があります。

したがって、まず、リクエストで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);

その「一致」コレクションには、1つの証明書が含まれている必要があります。

于 2011-09-11T07:07:47.003 に答える