public string[] BatchDettaglioCertificato(string[] CertificateBase64) { List <String> retval = new List <string>(); OpenWcfChannel(); string serviceUrl = ConfigurationManager.AppSettings["SERVICE_URL"]; Verifica clr = new Verifica(); EsitoVerifica retvalCert = null; byte[] CertificateCAPEM = null; foreach (string certStr in CertificateBase64) { //converto il certificato base64 in binario byte[] CertificateDer = Convert.FromBase64String(certStr); try { retvalCert = clr.VerificaCertificato(CertificateDer, CertificateCAPEM, client); logger.Debug("Verifica cerificato effettuato con successo."); retval.Add(Utils.SerializeObject <DocsPaVO.documento.CertificateInfo>(clr.GetCertificateInfoFromEv(retvalCert))); } catch (Exception e) { logger.Error("Verifica cerificato Errore :" + e.Message + e.StackTrace); //return e.Message; } } return(retval.ToArray()); }
public string ProvaServizioCERT() { string file = Server.MapPath("~") + "\\cert.der"; string serviceUrl = ConfigurationManager.AppSettings["SERVICE_URL"]; OpenWcfChannel(); Verifica clr = new Verifica(); logger.Debug("Effettuo la verifica certificato"); EsitoVerifica retval = null; try { byte[] ca = new byte[0]; //byte[] cer = new System.Text.ASCIIEncoding().GetBytes(Convert.ToBase64String(System.IO.File.ReadAllBytes(file))); byte[] cer = System.IO.File.ReadAllBytes(file); string b64Cer = Convert.ToBase64String(System.IO.File.ReadAllBytes(file)); retval = clr.VerificaCertificato(cer, ca, client); logger.Debug("Verifica cerificato effettuato."); } catch (Exception e) { logger.Error("Verifica cerificato Errore :" + e.Message + e.StackTrace); return(e.Message); } return(Utils.SerializeObject <EsitoVerifica>(retval)); }
public string VerificaCertificato(byte[] content, DateTime?dataverificaDT, bool ancheFile, bool isCadesPades) { OpenWcfChannel(); Verifica clr = new Verifica(); EsitoVerifica retval = null; try { if (!isCadesPades) { retval = clr.VerificaByteEV(content, null, dataverificaDT, client); } else { retval = clr.VerificaByteEVCompleta(content, dataverificaDT, client); } logger.Debug("Verifica cerificato effettuato con successo."); } catch (Exception e) { logger.Error("Verifica cerificato Errore :" + e.Message + e.StackTrace); } if (!ancheFile) { retval.content = null; } return(Utils.SerializeObject <EsitoVerifica>(retval)); }
public CertificateInfo GetCertificateInfoFromEv(EsitoVerifica ev) { //grande assunto try { return(ev.VerifySignatureResult.PKCS7Documents[0].SignersInfo[0].CertificateInfo); } catch { return(new CertificateInfo()); } }
public string DettaglioCertificato(byte[] CertificateDer, byte[] CertificateCAPEM) { OpenWcfChannel(); string serviceUrl = ConfigurationManager.AppSettings["SERVICE_URL"]; Verifica clr = new Verifica(); EsitoVerifica retval = null; try { retval = clr.VerificaCertificato(CertificateDer, CertificateCAPEM, client); logger.Debug("Verifica cerificato effettuato con successo."); } catch (Exception e) { logger.Error("Verifica cerificato Errore :" + e.Message + e.StackTrace); return(e.Message); } return(Utils.SerializeObject <EsitoVerifica>(retval)); }
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); } }
public EsitoVerifica VerificaCertificato(byte[] certificateDER, byte[] certificateCAPEM, FirmaDigitale.FirmaDigitalePortTypeClient client) { logger.Debug("INIZIO"); List <string> addiData = new List <string>(); EsitoVerifica ev = new EsitoVerifica(); // FirmaDigitale.DettaglioFirmaDigitaleType ret = null; CertificateInfo ciInfo = new CertificateInfo(); sbyte? controlloCRLCert = 0; sbyte? controlloCRLCa = 1; ciInfo.X509Certificate = certificateDER; ciInfo.ThumbPrint = BitConverter.ToString(System.Security.Cryptography.SHA1.Create().ComputeHash(certificateDER)).Replace("-", ""); controlloCRLCert = null; int statusInt = -1; System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Ssl3; DateTime dataverifica; try { logger.DebugFormat("len {0}", certificateDER.Length); FirmaDigitale.CertificatoType certOut = client.VerificaCertificato(certificateDER, certificateCAPEM, controlloCRLCert, controlloCRLCa, out dataverifica); logger.Debug("verificaOK"); ciInfo = convertFromCertificatoType(certOut); statusInt = 0; } catch (FaultException <FirmaDigitale.WarningCertificatoType> w) { string status = w.Detail.status; string errMsg = w.Detail.errorMsg; logger.Debug(status); logger.Debug(errMsg); addiData.Add(status); addiData.Add(errMsg); ciInfo = convertFromWarningCertificatoType(w.Detail); Int32.TryParse(w.Detail.status, out statusInt); ciInfo.RevocationStatus = statusInt; ev.errorCode = w.Detail.status.ToString(); if (errMsg.ToLower().Contains("revoc")) { ev.status = EsitoVerificaStatus.Revoked; } else { ev.status = EsitoVerificaStatus.NotTimeValid; } } catch (Exception e) { logger.ErrorFormat("errore {0} {1}", e.Message, e.StackTrace); ev.message = e.Message; } // ciInfo.ThumbPrint = BitConverter.ToString(System.Security.Cryptography.SHA1.Create().ComputeHash(certificateDER)).Replace("-", ""); ev.additionalData = addiData.ToArray(); //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); }