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); }
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); }