示例#1
0
        public static NFe Assinar(this NFe nfe, X509Certificate2 certificadoDigital)
        {
            var assinatura = Assinador.ObterAssinatura <NFe>(nfe, nfe.infNFe.Id, certificadoDigital);

            nfe.Signature = assinatura.Parse();
            return(nfe);
        }
示例#2
0
        /// <summary>
        ///     Assina um objeto NFe
        /// </summary>
        /// <param name="nfe"></param>
        /// <returns>Retorna um objeto do tipo NFe assinado</returns>
        public static Classes.NFe Assina(this Classes.NFe nfe)
        {
            var nfeLocal = nfe;

            if (nfeLocal == null)
            {
                throw new ArgumentNullException("nfe");
            }

            #region Define cNF

            var tamanhocNf = 9;
            var versao     = (Decimal.Parse(nfeLocal.infNFe.versao, CultureInfo.InvariantCulture));
            if (versao >= 2)
            {
                tamanhocNf = 8;
            }
            nfeLocal.infNFe.ide.cNF = Convert.ToInt32(nfeLocal.infNFe.ide.cNF).ToString().PadLeft(tamanhocNf, '0');

            #endregion

            var chave = Gerador.GerarChave(nfeLocal.infNFe);

            nfeLocal.infNFe.Id      = Gerador.GerarId(chave);
            nfeLocal.infNFe.ide.cDV = Convert.ToInt16(chave.Substring(chave.Length - 1, 1));

            var assinatura = Assinador.ObterAssinatura(nfeLocal, nfeLocal.infNFe.Id);
            nfeLocal.Signature = assinatura;
            return(nfeLocal);
        }
示例#3
0
        private bool AssinaN3First(GEDDocumentosNivel2 item)
        {
            string caminhoDocOriginal   = "";
            string caminhoDocAssinadoN1 = "";

            try
            {
                if (item.DOC_IDUSUARIOASSINANIVEL2 != null || item.DOC_IDUSUARIOASSINANIVEL3 != null)
                {
                    return(CoAssinarN3(item));
                }
                else
                {
                    ACSLog.InsertLog(MessageBoxIcon.Error, "-----------------------------------  Entrou para assinar  ----------------------------------- ");


                    caminhoDocOriginal = GetPathOutput() + "\\" + item.PAS_REGISTRO + "\\" + item.PAS_REGISTRO + item.DOC_DIVISAO + "\\" + item.PAS_CODIGOPASSAGEM + "\\" + item.DOC_NOMEARQUIVO + ".jpeg";
                    //  caminhoDocAssinadoN1 = GetPathOutput() + "\\" + item.PAS_REGISTRO + "\\" + item.PAS_REGISTRO + item.DOC_DIVISAO + "\\" + item.PAS_CODIGOPASSAGEM + "\\" + item.DOC_NOMEARQUIVO + "_N1.p7s";



                    ACSLog.InsertLog(MessageBoxIcon.Error, "Montou um caminho: " + caminhoDocOriginal);

                    var    sCertificado = ACSGlobal.UsuarioLogado.USR_SERIALNUMBERCERT;
                    byte[] assinatura   = Assinador.assinar(Assinador.ConvertDocToStream(caminhoDocOriginal), sCertificado);


                    string pathNew = Path.GetDirectoryName(caminhoDocOriginal) + "\\" + Path.GetFileNameWithoutExtension(caminhoDocOriginal);
                    System.IO.FileStream _FileStream = new System.IO.FileStream(pathNew + "_N3.p7s", System.IO.FileMode.Create, System.IO.FileAccess.Write);


                    ACSLog.InsertLog(MessageBoxIcon.Error, "Geraou o caminho para o _N3.p7s: " + pathNew);

                    _FileStream.Write(assinatura, 0, assinatura.Length);

                    // close file stream
                    _FileStream.Close();
                    ACSDataBase.UpdateDocumentoAssinadoN3((decimal)ACSGlobal.UsuarioLogado.USR_IDUSUARIO, (decimal)item.DOC_IDDOCUMENTO, getInfoCertificado(sCertificado, "3"));

                    ACSLog.InsertLog(MessageBoxIcon.Error, "Salvou a alteração na base de dados");

                    ACSLog.InsertLog(MessageBoxIcon.Error, "-----------------------------------  Finalizou assinar  ----------------------------------- ");
                    return(true);
                }
            }
            catch (Exception ex)
            {
                ACSLog.InsertLog(MessageBoxIcon.Error, "Erro ao assinar o documento: " + caminhoDocOriginal);

                ACSLog.InsertLog(MessageBoxIcon.Error, "Não foi possível assinar o documento. Motivo: " + ex.InnerException);
                ACSLog.InsertLog(MessageBoxIcon.Error, "Não foi possível assinar o documento. Motivo w: " + ex.Message);
                ACSLog.InsertLog(MessageBoxIcon.Error, "Não foi possível assinar o documento. Motivo e: " + ex.InnerException);
                throw new ExceptionCustom("Não foi possível assinar o documento. Motivo e: " + ex.InnerException);
                throw new ExceptionCustom("Não foi possível assinar o documento. Motivo w: " + ex.Message);
                return(false);
            }
        }
示例#4
0
        /// <summary>
        ///     Assina um objeto NFe
        /// </summary>
        /// <param name="nfe"></param>
        /// <param name="cfgServico">ConfiguracaoServico para uso na classe Assinador</param>
        /// <returns>Retorna um objeto do tipo NFe assinado</returns>
        public static Classes.NFe Assina(this Classes.NFe nfe, ConfiguracaoServico cfgServico = null, X509Certificate2 _certificado = null)
        {
            var nfeLocal = nfe;

            if (nfeLocal == null)
            {
                throw new ArgumentNullException("nfe");
            }

            var config = cfgServico ?? ConfiguracaoServico.Instancia;

            #region Define cNF

            var tamanhocNf = 9;
            var versao     = (decimal.Parse(nfeLocal.infNFe.versao, CultureInfo.InvariantCulture));
            if (versao >= 2)
            {
                tamanhocNf = 8;
            }
            nfeLocal.infNFe.ide.cNF = Convert.ToInt32(nfeLocal.infNFe.ide.cNF).ToString().PadLeft(tamanhocNf, '0');

            #endregion

            var modeloDocumentoFiscal = nfeLocal.infNFe.ide.mod;
            var tipoEmissao           = (int)nfeLocal.infNFe.ide.tpEmis;
            var codigoNumerico        = int.Parse(nfeLocal.infNFe.ide.cNF);
            var estado           = nfeLocal.infNFe.ide.cUF;
            var dataEHoraEmissao = nfeLocal.infNFe.ide.dhEmi;
            var cnpj             = nfeLocal.infNFe.emit.CNPJ;

            if (cnpj == null)
            {
                cnpj = nfeLocal.infNFe.emit.CPF.PadLeft(14, '0');
            }

            var numeroDocumento = nfeLocal.infNFe.ide.nNF;
            var serie           = nfeLocal.infNFe.ide.serie;

            var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao.LocalDateTime, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico);

            nfeLocal.infNFe.Id      = "NFe" + dadosChave.Chave;
            nfeLocal.infNFe.ide.cDV = Convert.ToInt16(dadosChave.DigitoVerificador);

            Signature assinatura = null;
            if (_certificado == null)
            {
                assinatura = Assinador.ObterAssinatura(nfeLocal, nfeLocal.infNFe.Id, config);
            }
            else
            {
                assinatura = Assinador.ObterAssinatura(nfeLocal, nfeLocal.infNFe.Id, _certificado, config.Certificado.ManterDadosEmCache, config.Certificado.SignatureMethodSignedXml, config.Certificado.DigestMethodReference, config.RemoverAcentos);
            }
            nfeLocal.Signature = assinatura;
            return(nfeLocal);
        }
示例#5
0
        /// <summary>
        ///     Assina um objeto evento
        /// </summary>
        /// <param name="evento"></param>
        /// <param name="certificadoDigital">Informe o certificado digital, se já possuir esse em cache, evitando novo acesso ao certificado</param>
        /// <returns>Retorna um objeto do tipo evento assinado</returns>
        public static evento Assina(this evento evento, X509Certificate2 certificadoDigital)
        {
            var eventoLocal = evento;

            if (eventoLocal.infEvento.Id == null)
            {
                throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!");
            }

            var assinatura = Assinador.ObterAssinatura(eventoLocal, eventoLocal.infEvento.Id, certificadoDigital);

            eventoLocal.Signature = assinatura;
            return(eventoLocal);
        }
示例#6
0
        /// <summary>
        ///     Assina um objeto inutNFe
        /// </summary>
        /// <param name="inutNFe"></param>
        /// <returns>Retorna um objeto do tipo inutNFe assinado</returns>
        public static inutNFe Assina(this inutNFe inutNFe)
        {
            var inutNFeLocal = inutNFe;

            if (inutNFeLocal.infInut.Id == null)
            {
                throw new Exception("Não é possível assinar um onjeto inutNFe sem sua respectiva Id!");
            }

            var assinatura = Assinador.ObterAssinatura(inutNFeLocal, inutNFeLocal.infInut.Id);

            inutNFeLocal.Signature = assinatura;
            return(inutNFeLocal);
        }
示例#7
0
        public static Modelos.Inutilizacao.inutNFe Assinar(this Modelos.Inutilizacao.inutNFe inutNFe, X509Certificate2 certificadoDigital)
        {
            var inutNFeLocal = inutNFe;

            if (inutNFeLocal.infInut.Id == null)
            {
                throw new Exception("Não é possível assinar um onjeto inutNFe sem sua respectiva Id!");
            }

            var assinatura = Assinador.ObterAssinatura(inutNFeLocal, inutNFeLocal.infInut.Id, certificadoDigital);

            inutNFeLocal.Signature = assinatura;
            return(inutNFeLocal);
        }
示例#8
0
        public static Modelos.Eventos.evento Assinar(this Modelos.Eventos.evento evento, X509Certificate2 certificadoDigital, string signatureMethodSignedXml, string digestMethodReference)
        {
            var eventoLocal = evento;

            if (eventoLocal.infEvento.Id == null)
            {
                throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!");
            }

            var assinatura = Assinador.ObterAssinatura(eventoLocal, eventoLocal.infEvento.Id, certificadoDigital, signatureMethodSignedXml, digestMethodReference);

            eventoLocal.Signature = assinatura;
            return(eventoLocal);
        }
示例#9
0
        public void ServicosNFe_WhenNfeNFeAutorizacao4_ReturnsxMotivoSuccess()
        {
            var servico = CreateInstance4();
            var nfeProc = CreateObject();

            var nfe = nfeProc.NFe;

            var list = new List <NFe.Classes.NFe>();

            list.Add(nfeProc.NFe);

            nfe.infNFe.ide.mod           = DFe.Classes.Flags.ModeloDocumento.NFCe;
            nfe.infNFe.ide.tpImp         = NFeClasses.Informacoes.Identificacao.Tipos.TipoImpressao.tiNFCe;
            nfe.infNFe.ide.indPres       = NFeClasses.Informacoes.Identificacao.Tipos.PresencaComprador.pcPresencial;
            nfe.infNFe.dest              = null;
            nfe.infNFe.det[0].prod.xProd = "NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL";

            nfe.Signature = null;
            SetValuesForMoriMo(nfe);

            nfe.infNFe.ide.dhEmi    = DateTimeOffset.UtcNow;
            nfe.infNFe.ide.dhSaiEnt = null;

            CriarChaveDeAcesso(nfe);
            var a = new X509Certificate2(@"certificatePath", "certificatePassword", X509KeyStorageFlags.Exportable);

            var signature = Assinador.ObterAssinaturac <NFe.Classes.NFe>(nfe, nfe.infNFe.Id, a);

            nfe.Signature = signature;

            nfe.infNFeSupl = new NFeClasses.infNFeSupl
            {
                urlChave = nfe.infNFe.Id,
                qrCode   = ExtinfNFeSupl.ObterUrlQrCode(new NFeClasses.infNFeSupl(), nfe, VersaoQrCode.QrCodeVersao1, "security-id", "security-Code")
            };


            var issuedNfe = Assinador.SerializeToString(nfe);

            File.WriteAllText($@"D:\works\nfce\test123.xml", issuedNfe);

            var procNfe = new NFe.Classes.nfeProc
            {
                NFe = nfe
            };

            var result = servico.NFeAutorizacao(1, IndicadorSincronizacao.Sincrono, list);

            Assert.IsTrue("Lote recebido com sucesso" == result.Retorno.xMotivo.ToString());
        }
        /// <summary>
        ///     Assina um objeto inutNFe
        /// </summary>
        /// <param name="inutNFe"></param>
        /// <param name="certificadoDigital">Informe o certificado digital, se já possuir esse em cache, evitando novo acesso ao certificado</param>
        /// <returns>Retorna um objeto do tipo inutNFe assinado</returns>
        public static inutNFe Assina(this inutNFe inutNFe, X509Certificate2 certificadoDigital, string signatureMethodSignedXml = "http://www.w3.org/2000/09/xmldsig#rsa-sha1", string digestMethodReference = "http://www.w3.org/2000/09/xmldsig#sha1")
        {
            var inutNFeLocal = inutNFe;

            if (inutNFeLocal.infInut.Id == null)
            {
                throw new Exception("Não é possível assinar um onjeto inutNFe sem sua respectiva Id!");
            }

            var assinatura = Assinador.ObterAssinatura(inutNFeLocal, inutNFeLocal.infInut.Id, certificadoDigital, false, signatureMethodSignedXml, digestMethodReference);

            inutNFeLocal.Signature = assinatura;
            return(inutNFeLocal);
        }
示例#11
0
        /// <summary>
        ///     Assina um objeto evento
        /// </summary>
        /// <param name="evento"></param>
        /// <param name="certificadoDigital">Informe o certificado digital, se já possuir esse em cache, evitando novo acesso ao certificado</param>
        /// <returns>Retorna um objeto do tipo evento assinado</returns>
        public static evento Assina(this evento evento, X509Certificate2 certificadoDigital, string signatureMethodSignedXml = "http://www.w3.org/2000/09/xmldsig#rsa-sha1", string digestMethodReference = "http://www.w3.org/2000/09/xmldsig#sha1")
        {
            var eventoLocal = evento;

            if (eventoLocal.infEvento.Id == null)
            {
                throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!");
            }

            var assinatura = Assinador.ObterAssinatura(eventoLocal, eventoLocal.infEvento.Id, certificadoDigital, false, signatureMethodSignedXml, digestMethodReference);

            eventoLocal.Signature = assinatura;
            return(eventoLocal);
        }
示例#12
0
        public void ServicosNFe_WhenNfeNFeAutorizacao4_ReturnsxMotivoSuccess()
        {
            var servico = CreateInstance4();
            var nfe     = CreateObject();

            var list = new List <Classes.NFe>();

            list.Add(nfe.NFe);

            nfe.NFe.infNFe.ide.mod = DFe.Classes.Flags.ModeloDocumento.NFCe;

            var a = new X509Certificate2(@"D:\Works\CERTIFICADO MORIMO A1.pfx", "morimo1458");

            Assinador.ObterAssinatura <NFeClasses.NFe>(nfe.NFe, "teste", a);

            var result = servico.NFeAutorizacao(1, IndicadorSincronizacao.Sincrono, list);

            Assert.IsTrue("Lote recebido com sucesso" == result.Retorno.xMotivo.ToString());
        }
示例#13
0
        /// <summary>
        ///     Assina um objeto NFe
        /// </summary>
        /// <param name="nfe"></param>
        /// <returns>Retorna um objeto do tipo NFe assinado</returns>
        public static Classes.NFe Assina(this Classes.NFe nfe)
        {
            var nfeLocal = nfe;

            if (nfeLocal == null)
            {
                throw new ArgumentNullException("nfe");
            }

            #region Define cNF

            var tamanhocNf = 9;
            var versao     = (decimal.Parse(nfeLocal.infNFe.versao, CultureInfo.InvariantCulture));
            if (versao >= 2)
            {
                tamanhocNf = 8;
            }
            nfeLocal.infNFe.ide.cNF = Convert.ToInt32(nfeLocal.infNFe.ide.cNF).ToString().PadLeft(tamanhocNf, '0');

            #endregion

            var modeloDocumentoFiscal = nfeLocal.infNFe.ide.mod;
            var tipoEmissao           = (int)nfeLocal.infNFe.ide.tpEmis;
            var codigoNumerico        = int.Parse(nfeLocal.infNFe.ide.cNF);
            var estado           = nfeLocal.infNFe.ide.cUF;
            var dataEHoraEmissao = nfeLocal.infNFe.ide.dhEmi;
            var cnpj             = nfeLocal.infNFe.emit.CNPJ;
            var numeroDocumento  = nfeLocal.infNFe.ide.nNF;
            var serie            = nfeLocal.infNFe.ide.serie;

            var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico);

            nfeLocal.infNFe.Id      = "NFe" + dadosChave.Chave;
            nfeLocal.infNFe.ide.cDV = Convert.ToInt16(dadosChave.DigitoVerificador);

            var assinatura = Assinador.ObterAssinatura(nfeLocal, nfeLocal.infNFe.Id);
            nfeLocal.Signature = assinatura;
            return(nfeLocal);
        }
        private void btnFilter_Click(object sender, EventArgs e)
        {
            removeRows();

            WFTranparentLoading.ShowLoading(Program.MainForm);



            List <Certificado> ListCertificados = Assinador.BuscaCertificadosValidos();

            dataGridView1.AllowUserToAddRows = false;

            string sNome = txtFilterName.Text;

            txtFilterName.Text = "";

            ListaPessoas = DataBase.ACSDataBase.GetAllGEDPessoasLike(sNome);

            List <string> ListaCertificadosUsuario = new List <string>();


            foreach (var item in ListaPessoas)
            {
                DataGridViewRow row = new DataGridViewRow();
                row.Height = 30;

                row.CreateCells(dataGridView1);
                row.Cells[0].Value = item.PES_NOME;
                row.Cells[0].Tag   = item;

                foreach (var certs in item.GEDUSUARIOS)
                {
                    ListaCertificadosUsuario.Add(certs.USR_SERIALNUMBERCERT);
                }

                dataGridView1.Rows.Add(row);
            }

            int iPosition = 0;

            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                DataGridViewTextBoxCell  txtNome = (DataGridViewTextBoxCell)(row.Cells[0]);
                DataGridViewComboBoxCell cell    = (DataGridViewComboBoxCell)(row.Cells[1]);
                cell.DataSource = ListCertificados;

                cell.DisplayMember = "Nome";
                cell.ValueMember   = "Chave";

                string certificadoRow       = ListaCertificadosUsuario[iPosition];
                bool   fVerificaCertificado = false;

                foreach (var item in ListCertificados)
                {
                    if (item.Chave == ListaCertificadosUsuario[iPosition])
                    {
                        fVerificaCertificado = true;
                    }
                }

                if (fVerificaCertificado)
                {
                    cell.Value = certificadoRow;
                }

                iPosition++;
            }

            WFTranparentLoading.CloseLoading();
        }
        private bool SaveSettings()
        {
            List <string> UsuariosInvalidos = new List <string>();


            ///GRID ASSINATURAS
            if (dataGridView1.Rows.Count > 0)
            {
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    bool fInsert = true;
                    DataGridViewTextBoxCell  txtNome = (DataGridViewTextBoxCell)(row.Cells[0]);
                    DataGridViewComboBoxCell combo   = (DataGridViewComboBoxCell)(row.Cells[1]);

                    if (txtNome.Tag != null)
                    {
                        var    id       = ((GEDPESSOAS)txtNome.Tag).PES_IDPESSOA;
                        int    idPessoa = (int)id;
                        var    sNome    = txtNome.Value;
                        string chave    = (combo.Value == null) ? "" : combo.Value.ToString();

                        if (chave != "")
                        {
                            string sCpfCertificado = Assinador.BuscaCPFCertificadosValidos(chave);
                            string sVefica         = ACSConfig.GetApp().CPFValidateCertificado;

                            if (sVefica == "YES")
                            {
                                if (sCpfCertificado != "" && ((GEDPESSOAS)txtNome.Tag).PES_CPF != sCpfCertificado)
                                {
                                    fInsert = false;
                                    UsuariosInvalidos.Add("Usuário " + sNome + ", possui um CPF diferente ao do Certificado. Impossível fazer a vinculação do Certificado");
                                }
                            }
                        }

                        if (fInsert)
                        {
                            var fVerifica = DataBase.ACSDataBase.UpdateCertificadoUsuario(idPessoa, chave);
                            if (idPessoa == ACSGlobal.UsuarioLogado.USR_IDPESSOA)
                            {
                                ACSGlobal.UsuarioLogado.USR_SERIALNUMBERCERT = chave;
                            }
                        }
                    }
                }
            }

            ////GRID ASSINATURAS



            ACSConfig.GetStorage().Input  = tbInput.Text;
            ACSConfig.GetStorage().Output = tbOutput.Text;


            if (rbJPG.Checked)
            {
                ACSConfig.GetImages().Format = ImageFormat.Jpeg;
            }
            if (rbPNG.Checked)
            {
                ACSConfig.GetImages().Format = ImageFormat.Png;
            }
            if (rbTIF.Checked)
            {
                ACSConfig.GetImages().Format = ImageFormat.Tiff;
            }

            ACSConfig.GetImages().Resolution = float.Parse(dudResolution.SelectedItem.ToString());

            ACSConfig.GetBarCodeSettings().MaxLength = int.Parse(tbMaxLength.Text);

            ACSConfig.GetScanner().Driver = cbDrivers.Text;

            if (cbDrivers.Text.Contains("Lexmark"))
            {
                ACSMinCapture.Controls.UCImagesManipulation ucImagem = new Controls.UCImagesManipulation(null);
                ucImagem.btnDuplex.Visible = true;
                ucImagem.btnDuplex.Refresh();
            }
            else
            {
                ACSMinCapture.Controls.UCImagesManipulation ucImagem = new Controls.UCImagesManipulation(null);
                ucImagem.btnDuplex.Visible = false;
                ucImagem.btnDuplex.Refresh();
            }

            if (rbPretoBranco.Checked)
            {
                ACSConfig.GetScanner().ScanAs = 0;
            }

            if (rbTonsCinza.Checked)
            {
                ACSConfig.GetScanner().ScanAs = 1;
            }

            if (rbColorido.Checked)
            {
                ACSConfig.GetScanner().ScanAs = 2;
            }


            ACSConfig.GetImages().Brightness       = (int)tbBrightness.Value;
            ACSConfig.GetImages().BrightnessReload = (int)tbBrightness.Value;
            ACSConfig.GetImages().Contrast         = (int)tbContrast.Value;

            ACSConfig.GetNetworkAccesser().Valid    = cbAutentica.Checked;
            ACSConfig.GetNetworkAccesser().Domain   = tbDominio.Text;
            ACSConfig.GetNetworkAccesser().User     = tbUsuario.Text;
            ACSConfig.GetNetworkAccesser().Password = tbSenha.Text;
            if (UsuariosInvalidos.Count > 0)
            {
                foreach (var item in UsuariosInvalidos)
                {
                    WFMessageBox.Show(item, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                return(false);
            }
            return(true);
        }