我创建了一个时间戳请求从散列数据中提取数据并将其发送到 tsa。
TSA 回复了“已授予”响应,我已获得带有时间戳的字节数组。
如何获取原始哈希数据,以便验证 TSA 发送的时间戳是否是我所要求的时间戳?
提前致谢。
Request
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
您可以使用此方法获取 TimeStampToken 的签名摘要
byte[] digest = TSToken.TimeStampInfo.GetMessageImprintDigest();
然后你可以将这个值与原始值进行比较Hash
value
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)