private void CarregaCertificado() { CboCertificados.DataSource = null; CboCertificados.ValueMember = "SerialNumber"; CboCertificados.DisplayMember = "NomeCPFNPJ"; CboCertificados.DataSource = CertSimples.ListaCertificado(INB.Assinador.Helper.Certificado.ListaCertificadosValidos()); }
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); } }
public bool AssinarArquivo(string Arquivo, out string returnFileName, bool SemAbrir = false, CertSimples oCertificado = null) { returnFileName = ""; PDF.FrmPreview.eTipoSelo TipoSelo; TipoSelo = SeloUtilizado(); oFrm = new PDF.FrmPreview(Arquivo, TipoSelo); oFrm.PosicaoSelo += new INB.PDF.FrmPreview.PosicaoSeloEventHandler(this.PosicaoSelo); oFrm.ShowDialog(); if (oFrm.AssinaturaConfirmada) { int Pagina, largura, altura; int X, Y; Pagina = _Pagina; X = _Position.X; Y = _Position.Y; largura = _Largura; altura = _Altura; if (Pagina == 0 || X < 0 || Y < 0) { MessageBox.Show("Foi impossível determinar a localização do selo, por favor, repetir o procedimento de assinatura.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } else { string SignedFileName; //****** //pensar quando já tiver o nome do arquivo string FileName = Path.GetFileName(Arquivo); string PathFile = Path.GetDirectoryName(Arquivo) + "\\"; FileName = getFileName(PathFile, FileName.Substring(0, FileName.Length - 4)); SignedFileName = PathFile + FileName; returnFileName = SignedFileName; TipoAssinatura Tipo = TipoAssinatura.Normal; if (OptAsPadrao.Checked) { Tipo = TipoAssinatura.Normal; } else if (OptAsCertifico.Checked) { Tipo = TipoAssinatura.Certifico; } else if (OptConferido.Checked) { Tipo = TipoAssinatura.ConferidoOriginal; } else if (OptChancela.Checked) { Tipo = TipoAssinatura.ChancelaJuridica; } else if (OptCarimboINB.Checked) { if (CboCarimbo.Text.Trim() == "BUENA") { Tipo = TipoAssinatura.Buena; } else if (CboCarimbo.Text.Trim() == "CAETITÉ") { Tipo = TipoAssinatura.Caetite; } else if (CboCarimbo.Text.Trim() == "CALDAS") { Tipo = TipoAssinatura.Caldas; } else if (CboCarimbo.Text.Trim() == "FORTALEZA") { Tipo = TipoAssinatura.Fortaleza; } else if (CboCarimbo.Text.Trim() == "RESENDE") { Tipo = TipoAssinatura.Resende; } else if (CboCarimbo.Text.Trim() == "RIO DE JANEIRO") { Tipo = TipoAssinatura.RioDeJaneiro; } else if (CboCarimbo.Text.Trim() == "SÃO PAULO") { Tipo = TipoAssinatura.SaoPaulo; } else { Tipo = TipoAssinatura.Resende; } } INB.Assinador.Model.AssinaComTokenITextSharp.AssinaPDF(Arquivo, SignedFileName, (CertSimples)CboCertificados.SelectedItem, Pagina, X, Y, _Rotation, ChkCarimboTempo.Checked, TxtTimeStampServer.Text, TxtUsuarioTS.Text, TxtSenhaTS.Text, "Assinatura Digital de Documento", ChkAplicaPolitica.Checked, CboDigestAlgorithm.Text, "", "Indústrias Nucleares do Brasil S/A - INB", "Assinador da INB", Tipo, TxtCargo.Text, TxtCRMCREA.Text); if (SemAbrir == false) { if (MessageBox.Show("Arquivo assinado com sucesso. Deseja abri-lo?", ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { System.Diagnostics.Process.Start(SignedFileName); } } } try { oFrm.Close(); } catch (Exception ex) { } return(true); } else { try { oFrm.Dispose(); } catch (Exception ex) { } return(false); } }
public bool AssinarArquivo(byte[] Arquivo, out byte[] returnFile, bool SemAbrir = false, CertSimples oCertificado = null) { PDF.FrmPreview.eTipoSelo TipoSelo; TipoSelo = SeloUtilizado(); oFrm = new PDF.FrmPreview(Arquivo, TipoSelo); oFrm.PosicaoSelo += new INB.PDF.FrmPreview.PosicaoSeloEventHandler(this.PosicaoSelo); oFrm.ShowDialog(); if (oFrm.AssinaturaConfirmada) { oFrm.Close(); int Pagina, largura, altura; int X, Y; Pagina = _Pagina; X = _Position.X; Y = _Position.Y; largura = _Largura; altura = _Altura; if (Pagina == 0 || X < 0 || Y < 0) { MessageBox.Show("Foi impossível determinar a localização do selo, por favor, repetir o procedimento de assinatura.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); returnFile = null; return(false); } else { MemoryStream SendFile = new MemoryStream(Arquivo); byte[] ReceiveFile; TipoAssinatura Tipo = TipoAssinatura.Normal; if (OptAsPadrao.Checked) { if (TxtCargo.Text.Trim() == "" && TxtCRMCREA.Text.Trim() == "") { Tipo = TipoAssinatura.Normal; } else { if (ChkCargo.Checked && ChkCRM.Checked == false) { Tipo = TipoAssinatura.Cargo; } else if (ChkCargo.Checked = false && ChkCRM.Checked) { Tipo = TipoAssinatura.CRM; } else if (ChkCargo.Checked && ChkCRM.Checked) { Tipo = TipoAssinatura.CargoCRM; } else if (ChkCargo.Checked && ChkCREA.Checked) { Tipo = TipoAssinatura.CargoCrea; } } } else if (OptAsCertifico.Checked) { Tipo = TipoAssinatura.Certifico; } else if (OptChancela.Checked) { Tipo = TipoAssinatura.ChancelaJuridica; } else if (OptCarimboINB.Checked) { if (CboCarimbo.Text.Trim() == "BUENA") { Tipo = TipoAssinatura.Buena; } else if (CboCarimbo.Text.Trim() == "CAETITÉ") { Tipo = TipoAssinatura.Caetite; } else if (CboCarimbo.Text.Trim() == "CALDAS") { Tipo = TipoAssinatura.Caldas; } else if (CboCarimbo.Text.Trim() == "FORTALEZA") { Tipo = TipoAssinatura.Fortaleza; } else if (CboCarimbo.Text.Trim() == "RESENDE") { Tipo = TipoAssinatura.Resende; } else if (CboCarimbo.Text.Trim() == "RIO DE JANEIRO") { Tipo = TipoAssinatura.RioDeJaneiro; } else if (CboCarimbo.Text.Trim() == "SÃO PAULO") { Tipo = TipoAssinatura.SaoPaulo; } else { Tipo = TipoAssinatura.Resende; } } INB.Assinador.Model.AssinaComTokenITextSharp.AssinaPDF(SendFile, out ReceiveFile, (CertSimples)CboCertificados.SelectedItem, Pagina, X, Y, _Rotation, ChkCarimboTempo.Checked, TxtTimeStampServer.Text, TxtUsuarioTS.Text, TxtSenhaTS.Text, "Assinatura Digital de Documento", ChkAplicaPolitica.Checked, CboDigestAlgorithm.Text, null, "Indústrias Nucleares do Brasil S/A - INB", "Assinador da INB", Tipo, TxtCargo.Text, TxtCRMCREA.Text); returnFile = ReceiveFile; } return(true); } else { returnFile = null; return(false); } }