Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }