public CertificateInfo convertFromCertificatoType(FirmaDigitale.CertificatoType certificateType) { CertificateInfo certifcateInfo = new CertificateInfo(); certifcateInfo.IssuerName = certificateType.issuer; certifcateInfo.SerialNumber = certificateType.serialNumber; certifcateInfo.ValidFromDate = certificateType.dataInizioValidita; certifcateInfo.ValidToDate = certificateType.dataFineValidita; certifcateInfo.SubjectName = certificateType.subject; certifcateInfo.SignatureAlgorithm = certificateType.dettaglioCertificato; return(certifcateInfo); }
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); }