private void OpenWcfChannel() { string serviceUrl = ConfigurationManager.AppSettings["SERVICE_URL"]; if (client == null) { logger.Debug("Il canale è null, apro un nuovo canale di comunicazione"); client = CrlVerificationService.createClient(serviceUrl); } if (client.State != System.ServiceModel.CommunicationState.Opened) { logger.Debug("Il canale è chiuso, lo apro nuovamente"); client = CrlVerificationService.createClient(serviceUrl); } }
public EsitoVerifica VerificaCertificato(byte[] certificateDER, byte[] certificateCAPEM, VerificaRemota.VerificationServiceClient client) { EsitoVerifica ev = new EsitoVerifica(); CertificateInfo ciInfo = new CertificateInfo(); int statusInt = -1; try { ReturnCertificateValidation certVal = client.VerifyCertificate(Convert.ToBase64String(certificateDER), DateTime.Now); ciInfo = toCertificateInfo(certVal.certificate); statusInt = 0; ev.status = EsitoVerificaStatus.Valid; if (certVal.certificate.certRevocation.certRevoked) { statusInt = -1; ev.status = EsitoVerificaStatus.Revoked; ev.errorCode = certVal.certificate.certRevocation.revocationReason; revoked = true; } if (!certVal.certificate.certTimeValid) { ev.status = EsitoVerificaStatus.NotTimeValid; certExpired = true; } } catch (Exception e) { logger.ErrorFormat("errore {0} {1}", e.Message, e.StackTrace); ev.message = e.Message; ev.status = EsitoVerificaStatus.ErroreGenerico; } //quarda che devo fare per restituire il certificateinfo List <SignerInfo> retSI = new List <SignerInfo>(); List <PKCS7Document> p7doc = new List <PKCS7Document>(); retSI.Add(new SignerInfo { CertificateInfo = ciInfo }); p7doc.Add(new PKCS7Document { SignersInfo = retSI.ToArray() }); ev.VerifySignatureResult = new VerifySignatureResult { StatusCode = statusInt, PKCS7Documents = p7doc.ToArray() }; return(ev); }
public string verifica(byte[] fileContents, DateTime?dataverificaDT, bool ancheFile, VerificaRemota.VerificationServiceClient client) { bool dateSpecified = dataverificaDT.HasValue; DateTime dt = DateTime.Now; if (dateSpecified) { dt = dataverificaDT.Value; } ActalisConnector.Utils.SignFormat signFormat; bool fileSigned = Utils.IsFileSigned(fileContents, out signFormat); Return ret = new Return(); byte[] originalFile = null; //string error = null; EsitoVerifica retval = new EsitoVerifica(); try { switch (signFormat) { case ActalisConnector.Utils.SignFormat.CAdES: ret = client.VerifyP7M(fileContents, dt); if (ancheFile) { originalFile = ret.originalFile; } retval = getResult(ret, originalFile); break; case ActalisConnector.Utils.SignFormat.PAdES: ret = client.VerifyPDF(fileContents, dt); if (ancheFile) { originalFile = fileContents; } retval = getResult(ret, originalFile); break; case ActalisConnector.Utils.SignFormat.XAdES: ret = client.VerifyXML(fileContents, dt); if (ancheFile) { originalFile = ret.originalFile; } retval = getResult(ret, originalFile); break; default: retval.message = "Formato file non riconsciuto"; retval.status = EsitoVerificaStatus.ErroreGenerico; break; } } catch (Exception ex) { logger.ErrorFormat("errore {0} {1}", ex.Message, ex.StackTrace); retval.message = ex.Message; retval.status = EsitoVerificaStatus.ErroreGenerico; } return(Utils.SerializeObject <EsitoVerifica>(retval)); }