public Timestamp CreateTimeStamp(RequestSignatureType signatureType, DocumentBaseType document) { if (signatureType == null) { throw new ArgumentNullException("signatureType", "El valor no puede ser nulo."); } if (document == null) { throw new ArgumentNullException("document", "El valor no puede ser nulo."); } SignRequest request = BuildRequest(signatureType, document, null); CreateTimeSoapClient tsaSoapClient = new CreateTimeSoapClient(_identity, _serverCert); SignResponse response = tsaSoapClient.createTimeStamp(request); if (ResultType.Success.Equals(response.Result.ResultMajor)) { return(response.SignatureObject.Item as Timestamp); } else { throw new AfirmaResultException(response.Result.ResultMajor, response.Result.ResultMessage.Value); } }
private SignRequest BuildRequest(RequestSignatureType signatureType, DocumentBaseType document, Timestamp previousTimestamp) { SignRequest sr = new SignRequest(); ClaimedIdentity identity = new ClaimedIdentity(); identity.idAplicacion = _identity.ApplicationId; TimestampSignatureType signatureTypeElement = new TimestampSignatureType() { Value = signatureType.Uri }; sr.OptionalInputs = new AnyType(); if (previousTimestamp != null) { string renewXml = "<dst:RenewTimestamp xmlns:dst=\"urn:oasis:names:tc:dss:1.0:profiles:TimeStamp:schema#\"><dst:PreviousTimestamp>{0}</dst:PreviousTimestamp></dst:RenewTimestamp>"; XmlElement previousTimestampElement = GetXmlElement(string.Format(renewXml, GetXmlElement(previousTimestamp).OuterXml)); sr.OptionalInputs.Any = new XmlElement[] { GetXmlElement(signatureTypeElement), GetXmlElement(identity), previousTimestampElement }; } else { sr.OptionalInputs.Any = new XmlElement[] { GetXmlElement(signatureTypeElement), GetXmlElement(identity) }; } sr.InputDocuments = new InputDocuments(); sr.InputDocuments.Items = new object[] { document }; return(sr); }