BouncyCastle TimeStampProtocol | Как я могу получить оригинальный хеш от TimeStampToken? - PullRequest
0 голосов
/ 07 сентября 2018

Я создал TimeStampRequest из хешированных данных и отправил его в tsa.

TSA ответил разрешением, и я получил байтовый массив с отметкой времени.

Как получить исходные хэшированные данные, чтобы я мог проверить, что метка времени, отправленная TSA, является той, которую я запрашиваю?

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

Запрос

TimeStampRequestGenerator reqGen = new TimeStampRequestGenerator();
SHA1 sha1 = SHA1CryptoServiceProvider.Create();

ValidateInput(data);
reqGen.SetCertReq(true);

Hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(data));

TimeStampRequest request = reqGen.Generate(
                 TspAlgorithms.Sha1, Hash, BigInteger.ValueOf(100));

byte[] reqData = request.GetEncoded();

record.DtRequest = DateTime.Now;

HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(stampURI);
httpReq.Method = "POST";
httpReq.ContentType = "application/timestamp-query";
httpReq.ContentLength = reqData.Length;

// Write the request content
Stream reqStream = httpReq.GetRequestStream();
reqStream.Write(reqData, 0, reqData.Length);
reqStream.Close();

HttpWebResponse httpResp = (HttpWebResponse)httpReq.GetResponse();

// Read the response
Stream respStream = new BufferedStream(httpResp.GetResponseStream());
TimeStampResponse response = new 

TimeStampResponse(respStream);
                    respStream.Close();
TimeStamp = response.TimeStampToken.GetEncoded();

Валидация

var TSToken = new TimeStampToken(new CmsSignedData(TSPTimeStamp.DataContent));
//Here, I should reverse the TimeStampToken to the original hash

1 Ответ

0 голосов
/ 13 сентября 2018

Этот метод можно использовать для получения подписанного дайджеста TimeStampToken

byte[] digest = TSToken.TimeStampInfo.GetMessageImprintDigest();

Затем вы можете сравнить значение с исходным Hash значением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...