Example #1
0
        public VerifyResponse ValidateCertificate(X509Certificate2 certificate, bool includeDetails, bool returnReadableCertificateInfo)
        {
            if (certificate == null)
            {
                throw new ArgumentNullException("certificate", "El valor no puede ser nulo.");
            }

            List <XmlElement> optionalInputs = new List <XmlElement>();

            ReturnVerificationReport verificationReport = new ReturnVerificationReport();

            verificationReport.CheckOptions = new CheckOptionsType();
            verificationReport.CheckOptions.CheckCertificateStatus = true;
            verificationReport.ReportOptions = new ReportOptionsType();
            if (includeDetails)
            {
                verificationReport.ReportOptions.ReportDetailLevel = "urn:oasis:names:tc:dss:1.0:reportdetail:allDetails";
            }
            else
            {
                verificationReport.ReportOptions.ReportDetailLevel = "urn:oasis:names:tc:dss:1.0:reportdetail:noDetails";
            }

            optionalInputs.Add(GetXmlElement(verificationReport));

            if (returnReadableCertificateInfo)
            {
                optionalInputs.Add(GetXmlElement("<afxp:ReturnReadableCertificateInfo xmlns:afxp=\"urn:afirma:dss:1.0:profile:XSS:schema\"/>"));
            }

            X509DataType x509Data = new X509DataType();

            x509Data.Items            = new object[] { new X509Cert(certificate.GetRawCertData()) };
            x509Data.ItemsElementName = new ItemsChoiceType[] { ItemsChoiceType.X509Certificate };

            SignatureObject signatureObject = new SignatureObject();

            signatureObject.Item = new AnyType()
            {
                Any = new XmlElement[] { GetXmlElement(x509Data) }
            };

            VerifyRequest request = BuildRequest(null, signatureObject, optionalInputs.ToArray());

            DSSAfirmaVerifyCertificateService ds = new DSSAfirmaVerifyCertificateService(_identity, _serverCert);

            string result = ds.verify(GetXmlElement(request).OuterXml);

            VerifyResponse response = DeserializeXml <VerifyResponse>(result);

            if (!ResultType.Success.Equals(response.Result.ResultMajor))
            {
                throw new AfirmaResultException(response.Result.ResultMajor, response.Result.ResultMinor, response.Result.ResultMessage.Value);
            }

            return(response);
        }
Example #2
0
        public VerifyResponse VerifySignature(byte[] signature, SignatureFormat signatureFormat, bool includeDetails,
                                              IEnumerable <DocumentBaseType> otherInputDocuments = null)
        {
            if (signature == null)
            {
                throw new ArgumentNullException("signature", "El valor no puede ser nulo.");
            }

            object document = GetDocument(signature, signatureFormat);

            DocumentType doc = new DocumentType();

            doc.ID   = "ID_DOCUMENTO";
            doc.Item = document;

            SignatureObject signatureObject = new SignatureObject();

            signatureObject.Item = new SignaturePtr()
            {
                WhichDocument = "ID_DOCUMENTO"
            };

            List <DocumentBaseType> documents = new List <DocumentBaseType>();

            documents.Add(doc);

            if (otherInputDocuments != null)
            {
                foreach (var inputDocument in otherInputDocuments)
                {
                    documents.Add(inputDocument);
                }
            }

            IgnoreGracePeriod igp = new IgnoreGracePeriod();

            ReturnVerificationReport verificationReport = new ReturnVerificationReport();

            verificationReport.ReportOptions = new ReportOptionsType();
            if (includeDetails)
            {
                verificationReport.ReportOptions.ReportDetailLevel = "urn:oasis:names:tc:dss:1.0:reportdetail:allDetails";
            }
            else
            {
                verificationReport.ReportOptions.ReportDetailLevel = "urn:oasis:names:tc:dss:1.0:reportdetail:noDetails";
            }

            VerifyRequest request = BuildRequest(documents, signatureObject, new XmlElement[] { GetXmlElement(igp), GetXmlElement(verificationReport) });

            DSSAfirmaVerifyService ds = new DSSAfirmaVerifyService(_identity, _serverCert);

            string result = ds.verify(GetXmlElement(request).OuterXml);

            VerifyResponse response = DeserializeXml <VerifyResponse>(result);

            if (ResultType.RequesterError.Equals(response.Result.ResultMajor) ||
                ResultType.ResponderError.Equals(response.Result.ResultMajor))
            {
                throw new AfirmaResultException(response.Result.ResultMajor, response.Result.ResultMinor, response.Result.ResultMessage.Value);
            }

            return(response);
        }