public TimeStampProviderApiResult VerifyTimeStamp(string contentToVerify, string signature) { if (string.IsNullOrEmpty(contentToVerify)) { throw new ArgumentNullException("contentToVerify"); } if (string.IsNullOrEmpty(signature)) { throw new ArgumentNullException("signature"); } TimeStampProviderApiResult result = new TimeStampProviderApiResult { IsSuccess = false }; string dataXml = string.Format(RequestTemplates.VerifyRequest, HashHelper.EncodeTo64(HashHelper.HashString(contentToVerify)), signature); string apiResponse = SendRequest(dataXml, TractisDssClientProperties.ApiVerifyUrl); if (!string.IsNullOrEmpty(apiResponse)) { result.ApiResponse = new XmlDocument(); result.ApiResponse.LoadXml(apiResponse); XmlNamespaceManager tractisDssNamespace = new XmlNamespaceManager(result.ApiResponse.NameTable); tractisDssNamespace.AddNamespace("dss", "urn:oasis:names:tc:dss:1.0:core:schema"); tractisDssNamespace.AddNamespace("ds", "http://www.w3.org/2000/09/xmldsig#"); result.IsSuccess = result.ApiResponse.SelectSingleNode("//dss:ResultMajor", tractisDssNamespace).InnerText.ToLower().Contains("success") && result.ApiResponse.SelectSingleNode("//dss:ResultMinor", tractisDssNamespace).InnerText.ToLower().Contains("onalldocuments"); result.OriginalContent = contentToVerify; } return result; }
public TimeStampProviderApiResult GenerateTimeStamp(string contentToStamp) { if (string.IsNullOrEmpty(contentToStamp)) { throw new ArgumentNullException("contentToStamp"); } TimeStampProviderApiResult result = new TimeStampProviderApiResult { IsSuccess = false }; string dataXml = string.Format(RequestTemplates.StampRequest, HashHelper.EncodeTo64(contentToStamp)); string apiResponse = SendRequest(dataXml, TractisDssClientProperties.ApiTimeStampUrl); if (!string.IsNullOrEmpty(apiResponse)) { result.ApiResponse = new XmlDocument(); result.ApiResponse.LoadXml(apiResponse); XmlNamespaceManager tractisDssNamespace = new XmlNamespaceManager(result.ApiResponse.NameTable); tractisDssNamespace.AddNamespace("dss", "urn:oasis:names:tc:dss:1.0:core:schema"); tractisDssNamespace.AddNamespace("ds", "http://www.w3.org/2000/09/xmldsig#"); tractisDssNamespace.AddNamespace("ns3", "urn:oasis:names:tc:dss:1.0:core:schema"); result.IsSuccess = result.ApiResponse.SelectSingleNode("//dss:ResultMajor", tractisDssNamespace).InnerText.ToLower().Contains("success"); result.Signature = ExtractSignatureString(apiResponse); result.TimeStampDateTime = DateTime.Parse(result.ApiResponse.SelectSingleNode("//ns3:SignResponse/ns3:OptionalOutputs/ns3:SigningTimeInfo/ns3:SigningTime", tractisDssNamespace).InnerText); result.OriginalContent = contentToStamp; string certificateText = result.ApiResponse.SelectSingleNode("//ds:X509Certificate", tractisDssNamespace).InnerText; X509Certificate certificate = new X509Certificate(HashHelper.StrToByteArray(certificateText)); result.TimeStampExpirationDateTime = DateTime.Parse(certificate.GetExpirationDateString()); } return result; }