private void BtnAssinarPDF_Click(object sender, EventArgs e)
        {
            try
            {
                if (CboCertificados.Items.Count == 0 || CboCertificados.SelectedIndex == -1)
                {
                    MessageBox.Show("Por favor, selecione um certificado válido.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    BtnAtualizar_Click(sender, e);
                    CboCertificados.Focus();
                }
                else
                {
                    CertSimples oCert = (CertSimples)CboCertificados.SelectedItem;

                    if (OptChancela.Checked)
                    {
                        string CPF = oCert.CPF;//CboCertificados.Text.Substring(CboCertificados.Text.IndexOf("CPF:", 0) + 4).Trim();
                        if (ValidaUsuario.PermiteChancelaJuridica(CPF) == false)
                        {
                            MessageBox.Show("O selo de chancela da jurídica só é permitido para usuários autorizados.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                    }
                    openFileDialog1.Filter   = "Arquivos pdf (*.pdf)|*.pdf";
                    openFileDialog1.FileName = "";
                    if (openFileDialog1.ShowDialog() != DialogResult.Cancel)
                    {
                        string ArquivoAssinado;
                        try
                        {
                            AssinarArquivo(openFileDialog1.FileName, out ArquivoAssinado, false, oCert);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Um erro aconteceu ao executar o processo de assinatura verifique se o certificado está corretamente instalado e, em caso de Token, na porta USB. Erro: " + ex.Message, ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    AtualizaSettings();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Um erro aconteceu ao executar o processo de assinatura. Erro: " + ex.Message, ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            eTipoMensagem TipoMensagem;

            bool RecebeuMensagem = false;

            timer1.Enabled = false;


            string Mensagem = "";


            //MENSAGEM VIA WEBSOCKET
            if (oWS.MensagemNova)
            {
                Mensagem         = oWS.Mensagem;
                oWS.MensagemNova = false;
                oWS.Mensagem     = "";
                TipoMensagem     = eTipoMensagem.WebSocket;
                RecebeuMensagem  = true;
            }

            //MENSAGEM VIA SOCKET
            if (INB.Assinador.Integracao.Service.SocketWS.MensagemNova)
            {
                Mensagem = INB.Assinador.Integracao.Service.SocketWS.Mensagem;
                INB.Assinador.Integracao.Service.SocketWS.MensagemNova = false;
                INB.Assinador.Integracao.Service.SocketWS.Mensagem     = "";
                TipoMensagem    = eTipoMensagem.WebSocket;
                RecebeuMensagem = true;
            }

            if (RecebeuMensagem)
            {
                Comunicacao oCom = null;

                //CONVERTE O TEXTO RECEBIDO EM OBJETO
                try
                {
                    if (Ignorar(Mensagem))
                    {
                        timer1.Enabled = true;
                        return;
                    }
                    else
                    {
                        this.Visible = true;
                        this.Focus();
                        this.WindowState = FormWindowState.Normal;
                        this.BringToFront();
                        oCom = (Comunicacao)ConverterObjeto.RetornaObjeto(Mensagem);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Um erro ocorreu ao converter o objeto para o tipo Comunicacao. O processo precisa ser repetido e se o erro persistir, notifique o Help-Desk | Mensagem REcebida: " + Mensagem + " | Erro: " + ex.Message, ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    timer1.Enabled = true;
                    return;
                }

                if (CboCertificados.Items.Count == 0 || CboCertificados.SelectedIndex == -1)
                {
                    MessageBox.Show("Para a integração funcionar é necessário ter um certificado válido selecionado. Insira e selecione o certificado e repita o processo.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    timer1.Enabled = true;
                    CboCertificados.Focus();
                    return;
                }


                try
                {
                    byte[] Arquivo;
                    try
                    {
                        Arquivo = Service.WSFile.getFile(oCom);
                        try
                        {
                            MemoryStream ArquivoMS;
                            if (ChkSalvaArquivo.Checked)
                            {
                                ArquivoMS = new MemoryStream(Arquivo);
                                string path = System.AppDomain.CurrentDomain.BaseDirectory + "Temp\\";
                                string pathArquivoRecebido = path + oCom.Codigo.ToString() + "_" + oCom.Versao.ToString() + ".pdf";
                                using (FileStream fs = new FileStream(pathArquivoRecebido, FileMode.OpenOrCreate))
                                {
                                    ArquivoMS.CopyTo(fs);
                                    fs.Flush();
                                }
                                ArquivoMS.Close();
                                string FileNameAssinado;

                                if (AssinarArquivo(pathArquivoRecebido, out FileNameAssinado, true))
                                {
                                    byte[] ArquivoAssinado = INB.Assinador.Helper.FileHelper.ReadFile(FileNameAssinado);
                                    try
                                    {
                                        Service.WSFile.setFile(oCom, ArquivoAssinado);
                                        MessageBox.Show("Arquivo assinado com sucesso.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
                                    }
                                    catch (Exception ex)
                                    {
                                        MessageBox.Show("Ocorreu um erro na assinatura e o processo inteiro precisa ser refeito. Erro: " + ex.Message, ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }
                                }
                                try
                                {
                                    System.IO.File.Delete(FileNameAssinado);
                                    System.IO.File.Delete(pathArquivoRecebido);
                                }
                                catch (Exception ex) { }
                            }
                            else
                            {
                                byte[] ArquivoAssinado;
                                if (AssinarArquivo(Arquivo, out ArquivoAssinado, true))
                                {
                                    try
                                    {
                                        Service.WSFile.setFile(oCom, ArquivoAssinado);
                                        MessageBox.Show("Arquivo assinado com sucesso.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
                                    }
                                    catch (Exception ex)
                                    {
                                        MessageBox.Show("Ocorreu um erro na assinatura e o processo inteiro precisa ser refeito. Erro: " + ex.Message, ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }
                                }
                                else
                                {
                                    MessageBox.Show("Um problema ocorreu no envio do arquivo assinado para o servidor. Assinatura não realizada. Repita todo o processo, por favor.", ProductName, MessageBoxButtons.OK);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Ocorreu um erro no Sistema. Erro:" + ex.Message + ".", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Ocorreu um erro ao acessar o WebService de leitura de arquivo do Sistema. Erro:" + ex.Message + ".", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Um erro ocorreu ao tentar buscar o arquivo no Servidor.Erro: " + ex.Message + ".", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            timer1.Enabled = true;
        }