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); }
/// <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); }
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); } }
/// <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); }
/// <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); }
/// <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); }
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); }
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); }
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); }
/// <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); }
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()); }
/// <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); }