public EsitoVerifica VerificaByteEV(byte[] fileContents, string endPoint, Object[] args) { EsitoVerifica ev = new EsitoVerifica(); string dataVerificaString = string.Empty; DateTime?dataverificaDT; if (args.Length > 0) { dataverificaDT = args[0] as DateTime?; if (dataverificaDT == null) { dataVerificaString = args[0] as string; if (dataVerificaString == null) { ev.status = EsitoVerificaStatus.ErroreGenerico; return(ev); } } else { dataVerificaString = zeniDateConverter(dataverificaDT); } } System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3; FirmaDigitale.FirmaDigitalePortTypeClient client = createClient(endPoint); FirmaDigitale.DocumentoType doc = new FirmaDigitale.DocumentoType(); FirmaDigitale.DettaglioFirmaDigitaleType ret = null; try { sbyte?arg1 = 0; sbyte?arg2 = 0; sbyte?arg3 = 1; ret = client.VerificaFirma(fileContents, arg1, arg2, dataVerificaString, arg3, out doc); ev.status = EsitoVerificaStatus.Valid; ev.content = doc.fileOriginale; if (ret != null) { ev.VerifySignatureResult = ConvertToVerifySignatureResult(ev.status, ret); } ; return(ev); } catch (FaultException <FirmaDigitale.FaultType> f) { ev.status = EsitoVerificaStatus.ErroreGenerico; ev.message = f.Detail.userMessage; ev.errorCode = f.Detail.errorCode; return(ev); } catch (FaultException <FirmaDigitale.WarningResponseType> w) { List <string> lstW = new List <string> (); foreach (FirmaDigitale.WarningType s in w.Detail.WarinigFault) { lstW.Add(Utils.SerializeObject <FirmaDigitale.WarningType>(s)); ev.message = s.errorMsg; ev.errorCode = s.errorCode; ev.SubjectDN = s.SubjectDN; ev.SubjectCN = s.SubjectCN; ev.status = EsitoVerificaStatus.ErroreGenerico; if (s.errorCode == "1468") { ev.status = EsitoVerificaStatus.SHA1NonSupportato; } if (s.errorCode == "1407") // check { ev.status = EsitoVerificaStatus.NotTimeValid; } if (s.errorCode == "1408") // check { ev.status = EsitoVerificaStatus.Revoked; foreach (FirmaDigitale.FirmatarioType ft in w.Detail.DettaglioFirmaDigitale.datiFirmatari) { if (ft.firmatario.dataRevocaCertificato != DateTime.MinValue) { ev.dataRevocaCertificato = ft.firmatario.dataRevocaCertificato; } } } } //TEST!!!! FirmaDigitale.DettaglioFirmaDigitaleType d = w.Detail.DettaglioFirmaDigitale; ev.content = w.Detail.Documento.fileOriginale; ev.VerifySignatureResult = ConvertToVerifySignatureResult(ev.status, d);; ev.additionalData = lstW.ToArray(); return(ev); } }
public EsitoVerifica VerificaByteEVCompleta(byte[] fileContents, DateTime?dataverificaDT, FirmaDigitale.FirmaDigitalePortTypeClient client) { logger.Debug("INIZIO"); logger.Debug("VERIFICA FIRMA COMPLETA"); string verbosesgb = ConfigurationManager.AppSettings["VERBOSEDEBUG"]; bool verboseDebug = false; Boolean.TryParse(verbosesgb, out verboseDebug); EsitoVerifica ev = new EsitoVerifica(); FirmaDigitale.DettaglioFirmaDigitaleType ret = null; string dataVerificaString = string.Empty; try { if (dataverificaDT != null) { dataVerificaString = zeniDateConverter(dataverificaDT); } else { dataVerificaString = null; } System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Ssl3; } catch (Exception ex) { string inner = string.Empty; ev.status = EsitoVerificaStatus.ErroreGenerico; if (ex.InnerException != null) { inner = ex.InnerException.Message; } ev.message = string.Format("{0},{1} INNER {2} ", ex.Message, ex.StackTrace, inner); return(ev); } try { sbyte?controlloFirmeAnnidate = 1; logger.Debug("Data Verifica: " + dataVerificaString + " (" + dataverificaDT.ToString() + ")"); FirmaDigitale.DocumentoType doc = new FirmaDigitale.DocumentoType(); ret = client.VerificaFirmaCompleta(fileContents, dataVerificaString, controlloFirmeAnnidate, out doc); ev.status = EsitoVerificaStatus.Valid; if (ret != null) { ev.VerifySignatureResult = ConvertToVerifySignatureResult(ev.status, ret); } ; if (verboseDebug) { logger.Info(Utils.SerializeObject <EsitoVerifica>(ev)); } logger.Debug("Firma OK"); return(ev); } catch (FaultException <FirmaDigitale.FaultType> f) { ev.status = EsitoVerificaStatus.ErroreGenerico; ev.message = f.Detail.userMessage; ev.errorCode = f.Detail.errorCode; logger.Error("errore in verifica firma completa:" + ev.message); if (logger.IsInfoEnabled) { logger.Info(Utils.SerializeObject <EsitoVerifica>(ev)); } return(ev); } catch (FaultException <FirmaDigitale.WarningResponseType> w) { List <string> lstW = new List <string>(); foreach (FirmaDigitale.WarningType s in w.Detail.WarningFault) { lstW.Add(Utils.SerializeObject <FirmaDigitale.WarningType>(s)); ev.message = s.errorMsg; ev.errorCode = s.errorCode; ev.SubjectDN = s.SubjectDN; ev.SubjectCN = s.SubjectCN; ev.status = EsitoVerificaStatus.ErroreGenerico; if (s.errorCode == "1426") { ev.status = EsitoVerificaStatus.CtlNotTimeValid; } if (s.errorCode == "1468") { ev.status = EsitoVerificaStatus.SHA1NonSupportato; } if (s.errorCode == "1407") // check { ev.status = EsitoVerificaStatus.NotTimeValid; } if (s.errorCode == "1408") // check { ev.status = EsitoVerificaStatus.Revoked; foreach (FirmaDigitale.FirmatarioType ft in w.Detail.DettaglioFirmaDigitale.datiFirmatari) { if (ft.firmatario.dataRevocaCertificato != DateTime.MinValue) { ev.dataRevocaCertificato = ft.firmatario.dataRevocaCertificato; } } } } //TEST!!!! FirmaDigitale.DettaglioFirmaDigitaleType d = w.Detail.DettaglioFirmaDigitale; if (w.Detail.Documento != null) { ev.content = w.Detail.Documento.fileOriginale; } ev.VerifySignatureResult = ConvertToVerifySignatureResult(ev.status, d);; ev.additionalData = lstW.ToArray(); logger.Debug("Firma verificata con warning"); if (logger.IsInfoEnabled) { logger.Info(Utils.SerializeObject <EsitoVerifica>(ev)); } return(ev); } catch (Exception ex) { ev.status = EsitoVerificaStatus.ErroreGenerico; ev.message = string.Format("{0},{1}", ex.Message, ex.StackTrace); logger.Error(ev.message); if (logger.IsInfoEnabled) { logger.Info(Utils.SerializeObject <EsitoVerifica>(ev)); } return(ev); } }