public CertificateInfo GetCertificateInfoFromEv(EsitoVerifica ev) { //grande assunto try { return(ev.VerifySignatureResult.PKCS7Documents[0].SignersInfo[0].CertificateInfo); } catch { return(new CertificateInfo()); } }
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); }
private EsitoVerifica getResult(Return ret, byte[] originalFile) { VerifySignatureResult vsr = ConvertToVerifySignatureResult(ret); EsitoVerifica retval = new EsitoVerifica { VerifySignatureResult = vsr, content = originalFile }; retval.status = EsitoVerificaStatus.Valid; if (revoked) { retval.status = EsitoVerificaStatus.Revoked; } else if (certExpired) { retval.status = EsitoVerificaStatus.NotTimeValid; } return(retval); }
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)); }