Example #1
0
        private static VerifySignatureResult ConvertToVerifySignatureResult(EsitoVerificaStatus status, FirmaDigitale.DettaglioFirmaDigitaleType d)
        {
            VerifySignatureResult vsr = new VerifySignatureResult();
            List <DocsPaVO.documento.SignerInfo> siLst = new List <DocsPaVO.documento.SignerInfo>();

            if (d.datiFirmatari != null)
            {
                foreach (FirmaDigitale.FirmatarioType ft in d.datiFirmatari)
                {
                    DocsPaVO.documento.SignerInfo si = new DocsPaVO.documento.SignerInfo();
                    si.CertificateInfo = new DocsPaVO.documento.CertificateInfo
                    {
                        ValidFromDate               = ft.firmatario.dataInizioValiditaCert,
                        ValidToDate                 = ft.firmatario.dataFineValiditaCert,
                        RevocationDate              = ft.firmatario.dataRevocaCertificato,
                        RevocationStatus            = (int)status,
                        RevocationStatusDescription = status.ToString(),
                        IssuerName         = "CN=" + ft.firmatario.cnCertAuthority,
                        SignatureAlgorithm = "N.D."
                    };

                    si.SubjectInfo = new DocsPaVO.documento.SubjectInfo
                    {
                        CodiceFiscale  = ft.firmatario.codiceFiscale,
                        CommonName     = ft.firmatario.commonName,
                        CertId         = ft.firmatario.distinguishName,
                        Organizzazione = ft.firmatario.organizzazione,
                        SerialNumber   = ft.firmatario.serialNumber,
                    };
                    si.SignatureAlgorithm = convertOidtoString(ft.firmatario.digestAlgorithm);
                    siLst.Add(si);
                }
            }


            List <DocsPaVO.documento.PKCS7Document> p7docsLst = new List <DocsPaVO.documento.PKCS7Document>();

            DocsPaVO.documento.PKCS7Document p7doc = new DocsPaVO.documento.PKCS7Document
            {
                SignersInfo      = siLst.ToArray(),
                DocumentFileName = null,
                Level            = 0
            };
            p7docsLst.Add(p7doc);
            vsr.PKCS7Documents    = p7docsLst.ToArray();
            vsr.StatusCode        = (int)status;
            vsr.StatusDescription = status.ToString();
            vsr.CRLOnlineCheck    = true;
            return(vsr);
        }
Example #2
0
        private VerifySignatureResult ConvertToVerifySignatureResult(Return actalisReturn)
        {
            VerifySignatureResult vsr = new VerifySignatureResult();

            try
            {
                List <DocsPaVO.documento.SignerInfo> siLst = null;
                SignerInfo[] signersInfo = null;
                if (actalisReturn.signers != null)
                {
                    siLst       = ConvertFromActalisSigner(actalisReturn.signers);
                    signersInfo = siLst.ToArray();
                }
                List <DocsPaVO.documento.PKCS7Document> p7docsLst = new List <DocsPaVO.documento.PKCS7Document>();
                DocsPaVO.documento.PKCS7Document        p7doc     = new DocsPaVO.documento.PKCS7Document
                {
                    SignersInfo      = signersInfo,
                    DocumentFileName = null,
                    Level            = 0
                };
                p7docsLst.Add(p7doc);
                vsr.PKCS7Documents = p7docsLst.ToArray();


                /// ATTNEZIONE DA GESTIRE
                /// actalisReturn.error quando tutto va bene torna OK, mentre non dovrebbe tornare nulla
                /// volendo possiamo mettere che se torna OK, la stringa in actalisReturn.error viene eliminata.
                /// estratto dalla documentazione VOL Pagina 4
                /// Error  1..1  Stringa   Eventuale codice di errore. Vuoto se non si รจ verificato nessun errore nella validazione.
                /// decommentare codice sotto per risolvere il bug

                /*
                 * if (actalisReturn.error.Equals ("OK"))
                 *  actalisReturn.error="";
                 */
                vsr.StatusCode        = String.IsNullOrEmpty(actalisReturn.error) ? 0 : 1;
                vsr.StatusDescription = actalisReturn.error;
                vsr.CRLOnlineCheck    = true;
            }
            catch (Exception ex)
            {
                string err = string.Format("Errore in toCertificateInfo {0} stk {1}", ex.Message, ex.StackTrace);
                logger.ErrorFormat(err);
                vsr.StatusDescription = err;
                vsr.StatusCode        = -1;
            }
            return(vsr);
        }
Example #3
0
        private static VerifySignatureResult ConvertToVerifySignatureResult(EsitoVerificaStatus status)
        {
            VerifySignatureResult vsr = new VerifySignatureResult();
            List <DocsPaVO.documento.SignerInfo> siLst = new List <DocsPaVO.documento.SignerInfo>();

            {
                DocsPaVO.documento.SignerInfo si = new DocsPaVO.documento.SignerInfo();
                si.CertificateInfo = new DocsPaVO.documento.CertificateInfo
                {
                    ValidFromDate               = DateTime.Parse("2011-03-25T13:57:54+01:00"),
                    ValidToDate                 = DateTime.Parse("2014-03-25T00:00:00+01:00"),
                    RevocationStatus            = (int)EsitoVerificaStatus.Valid,
                    RevocationStatusDescription = EsitoVerificaStatus.Valid.ToString()
                };

                si.SubjectInfo = new DocsPaVO.documento.SubjectInfo
                {
                    CodiceFiscale = "TTVLFF44P28D969E",
                    CommonName    = "Elio Raffaele Ottaviano",
                    CertId        = "2011500471127",
                };

                siLst.Add(si);
            }


            {
                DocsPaVO.documento.SignerInfo si = new DocsPaVO.documento.SignerInfo();
                si.CertificateInfo = new DocsPaVO.documento.CertificateInfo
                {
                    ValidFromDate               = DateTime.Parse("2008-09-01T14:09:40+02:00"),
                    ValidToDate                 = DateTime.Parse("2013-12-31T18:00:00+01:00"),
                    RevocationDate              = DateTime.Parse("2011-01-21T12:48:17+01:00"),
                    RevocationStatus            = (int)EsitoVerificaStatus.Revoked,
                    RevocationStatusDescription = EsitoVerificaStatus.Revoked.ToString()
                };

                si.SubjectInfo = new DocsPaVO.documento.SubjectInfo
                {
                    CodiceFiscale = "TTVLFF44P28D969E",
                    CommonName    = "ELIO RAFFAELE OTTAVIANO",
                    CertId        = "12202828:4330:1",
                };

                siLst.Add(si);
            }

            List <DocsPaVO.documento.PKCS7Document> p7docsLst = new List <DocsPaVO.documento.PKCS7Document>();

            DocsPaVO.documento.PKCS7Document p7doc = new DocsPaVO.documento.PKCS7Document
            {
                SignersInfo      = siLst.ToArray(),
                DocumentFileName = null,
                Level            = 0
            };
            p7docsLst.Add(p7doc);
            vsr.PKCS7Documents    = p7docsLst.ToArray();
            vsr.StatusCode        = (int)EsitoVerificaStatus.Revoked;
            vsr.StatusDescription = status.ToString();
            vsr.CRLOnlineCheck    = true;
            return(vsr);
        }
Example #4
0
        private static VerifySignatureResult ConvertToVerifySignatureResultUsingInternalStructures(EsitoVerificaStatus status, FirmaDigitale.DettaglioFirmaDigitaleType d)
        {
            VerifySignatureResult vsr = new VerifySignatureResult();
            List <DocsPaVO.documento.SignerInfo> siLst = new List <DocsPaVO.documento.SignerInfo>();

            string verbosesgb   = ConfigurationManager.AppSettings["VERBOSEDEBUG"];
            bool   verboseDebug = false;

            Boolean.TryParse(verbosesgb, out verboseDebug);


            if (verboseDebug)
            {
                logger.Debug(d.datiGeneraliVerifica);
            }


            if (d.fileMarcatoSpecified)
            {
                if (d.dataVerificaFirmaSpecified)
                {
                    logger.InfoFormat("data verifica firma  {0}", d.dataVerificaFirma);
                }

                if (d.fileMarcato)
                {
                    logger.Debug("Marcato");
                    TSInfo ts = new TSInfo();
                    if (d.marcaDetached != null)
                    {
                        logger.Debug("marcaDetached !=null");
                        //Gestire la marca
                        //logger.DebugFormat("TSANameIssuer [{0}]", d.marcaDetached.TSANameIssuer);
                        //logger.DebugFormat("TSANameSubject [{0}]", d.marcaDetached.TSANameSubject);
                        //logger.DebugFormat("TSimprint [{0}]", d.marcaDetached.TSimprint);
                        //logger.DebugFormat("TSserialNumber [{0}]", d.marcaDetached.TSserialNumber);


                        if (!String.IsNullOrEmpty(d.marcaDetached.TSANameIssuer))
                        {
                            ts.TSANameIssuer = d.marcaDetached.TSANameIssuer;
                        }

                        if (!String.IsNullOrEmpty(d.marcaDetached.TSANameSubject))
                        {
                            ts.TSANameSubject = d.marcaDetached.TSANameSubject;
                        }

                        if (!String.IsNullOrEmpty(d.marcaDetached.TSimprint))
                        {
                            ts.TSimprint = d.marcaDetached.TSimprint;
                        }

                        if (!String.IsNullOrEmpty(d.marcaDetached.TSserialNumber))
                        {
                            ts.TSserialNumber = d.marcaDetached.TSserialNumber;
                        }


                        if (d.marcaDetached.TSdateTimeSpecified)
                        {
                            ts.TSdateTime = d.marcaDetached.TSdateTime;
                        }


                        if (d.marcaDetached.dataFineValiditaCertSpecified)
                        {
                            ts.dataFineValiditaCert = d.marcaDetached.dataFineValiditaCert;
                        }


                        if (d.marcaDetached.dataInizioValiditaCertSpecified)
                        {
                            ts.dataInizioValiditaCert = d.marcaDetached.dataInizioValiditaCert;
                        }
                    }
                    else
                    {
                        //default nel caso la try sotto desse errore
                        ts.TSANameIssuer = "Marca non Detached, dati non disponibili";

                        //se questo dato ce l'ho lo valido
                        if (d.dataVerificaFirmaSpecified)
                        {
                            ts.TSdateTime = d.dataVerificaFirma;
                        }
                    }
                }
                else
                {
                }
            }

            if (d.datiFirmatari != null)
            {
                foreach (FirmaDigitale.FirmatarioType ft in d.datiFirmatari)
                {
                    //firmatari
                    DocsPaVO.documento.SignerInfo si = ExtractSignerInfo(status, ft.firmatario, ft.marcaFirma);

                    //controfirmatari
                    if (ft.controfirmatario != null)
                    {
                        List <DocsPaVO.documento.SignerInfo> csiLst = new List <DocsPaVO.documento.SignerInfo>();
                        foreach (FirmaDigitale.FirmatarioTypeControfirmatario cft in ft.controfirmatario)
                        {
                            DocsPaVO.documento.SignerInfo csi = ExtractSignerInfo(status, cft.firma, cft.marca);
                            csi.isCountersigner = true;
                            csiLst.Add(csi);
                        }
                        if (csiLst.Count > 0)
                        {
                            si.counterSignatures = csiLst.ToArray();
                        }
                    }

                    siLst.Add(si);
                }
            }

            List <DocsPaVO.documento.PKCS7Document> p7docsLst = new List <DocsPaVO.documento.PKCS7Document>();

            DocsPaVO.documento.PKCS7Document p7doc = new DocsPaVO.documento.PKCS7Document
            {
                SignersInfo      = siLst.ToArray(),
                DocumentFileName = null,
                Level            = 0
            };
            p7docsLst.Add(p7doc);
            vsr.PKCS7Documents = p7docsLst.ToArray();
            vsr.CRLOnlineCheck = true;
            return(vsr);
        }