예제 #1
0
        private void OpenWcfChannel()
        {
            string serviceUrl = ConfigurationManager.AppSettings["SERVICE_URL"];

            if (client == null)
            {
                logger.Debug("Il canale è null, apro un nuovo canale di comunicazione");
                client = CrlVerificationService.createClient(serviceUrl);
            }

            if (client.State != System.ServiceModel.CommunicationState.Opened)
            {
                logger.Debug("Il canale è chiuso, lo apro nuovamente");
                client = CrlVerificationService.createClient(serviceUrl);
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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));
        }