public static string GetSelloDigitalEmisor33_v2(ref string noCertificado, ref string certificadoB64, string cadenaOriginal, byte[] archivoCer, byte[] archivoKey, string password) { string selloDigital = null; try { CertificadoDigital cert = GetCertificadoDigital_v2(archivoCer); noCertificado = cert.NoCertificado; certificadoB64 = cert.CertificadoBase64; SecureString identidad = new SecureString(); identidad.Clear(); foreach (var c in password.ToCharArray()) { identidad.AppendChar(c); } byte[] llavePrivadaBytes = archivoKey; RSACryptoServiceProvider lrsa = opensslkey.DecodeEncryptedPrivateKeyInfo(llavePrivadaBytes, identidad); SHA256CryptoServiceProvider hasher = new SHA256CryptoServiceProvider(); byte[] bytesFirmados = lrsa.SignData(Encoding.UTF8.GetBytes(cadenaOriginal), hasher); //bool isValid = lrsa.VerifyData(Encoding.UTF8.GetBytes(cadenaOriginal), hasher, bytesFirmados); selloDigital = Convert.ToBase64String(bytesFirmados); return(selloDigital); } catch (Exception ex) { return(selloDigital); } }
private void btn_certificado_windows_Click(object sender, EventArgs e) { try { X509Certificate2 certificado = CertificadoDigital.ListareObterDoRepositorio(); if (certificado.IsA3()) { string senha = Prompt.ShowDialog("Entre com a senha do certificado", ""); certificado = CertificadoDigital.getA3Certificado(certificado.SerialNumber, senha); certificado.VerificaValidade(); user_control.salvarCertificadoUserLogado(certificado, 3, "", senha); } else { certificado.VerificaValidade(); user_control.salvarCertificadoUserLogado(certificado, 2, "", ""); } MessageBox.Show("O certificado foi configurado com êxito"); this.Close(); } catch (Exception ex) { if (ex.Message.Contains("Nome do parâmetro: index")) { MessageBox.Show("Certificado não selecionado."); } else { MessageBox.Show("Erro ao obter certificado: " + ex.Message); } } }
private static async Task ManifestarCienciaOperacao() { try { Console.WriteLine("Informe a chave da NFe para download:"); string chave = Console.ReadLine(); using (var _certificado = CertificadoDigital.ObterCertificado(_configuracoes.CfgServico.Certificado)) using (var servicoNFe = new ServicosNFe(_configuracoes.CfgServico, _certificado)) { var retornoManifestacao = servicoNFe.RecepcaoEventoManifestacaoDestinatario(idlote: 1, sequenciaEvento: 1, chavesNFe: new string[] { chave }, nFeTipoEventoManifestacaoDestinatario: NFeTipoEvento.TeMdCienciaDaOperacao, cpfcnpj: _configuracoes.Emitente.CNPJ, justificativa: null); Console.WriteLine($"Retorno da manifestação: {retornoManifestacao.RetornoStr}"); } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private static void ValidCertificateChain(CertificadoDigital cert) { if (cert.ErrosValidacaoCadeia != null && cert.ErrosValidacaoCadeia.Any()) { StringBuilder erroMessage = new StringBuilder(); bool exception = cert.ErrosValidacaoCadeia.Any(e => e.Key == (int)X509ChainStatusFlags.PartialChain || e.Key == (int)X509ChainStatusFlags.RevocationStatusUnknown || e.Key == (int)X509ChainStatusFlags.OfflineRevocation); foreach (var erro in cert.ErrosValidacaoCadeia) { erroMessage.AppendLine($"Status: {erro.Key} | Status Information: {erro.Value}"); } if (exception) { erroMessage.Insert(0, $"Não foi possível validar a cadeia do certificado digital.\n"); throw new Exception(erroMessage.ToString()); } else { erroMessage.Insert(0, $"Certificado digital com cadeia inválida. {message}\n"); throw new Exception(erroMessage.ToString()); } } }
private static async Task DownloadXml() { try { Console.WriteLine("Informe a chave da NFe para download:"); string chave = Console.ReadLine(); Console.WriteLine("Deseja manifestar a NFe? (S/N)"); bool manifestar = string.Equals(Console.ReadLine().Trim().ToLower(), "s"); using (var _certificado = CertificadoDigital.ObterCertificado(_configuracoes.CfgServico.Certificado)) using (var servicoNFe = new ServicosNFe(_configuracoes.CfgServico, _certificado)) { if (manifestar) { try { var retornoManifestacao = servicoNFe.RecepcaoEventoManifestacaoDestinatario(idlote: 1, sequenciaEvento: 1, chavesNFe: new string[] { chave }, nFeTipoEventoManifestacaoDestinatario: NFeTipoEvento.TeMdCienciaDaOperacao, cpfcnpj: _configuracoes.Emitente.CNPJ, justificativa: null); Console.WriteLine($"Retorno da manifestação: {retornoManifestacao.RetornoStr}"); } catch (Exception ex) { Console.WriteLine($"Manifestação: {ex.Message}"); } } var retornoNFeDistDFe = servicoNFe.NfeDistDFeInteresse(ufAutor: _configuracoes.EnderecoEmitente.UF.ToString(), documento: _configuracoes.Emitente.CNPJ, chNFE: chave); if (retornoNFeDistDFe.Retorno.loteDistDFeInt == null) { await Task.Delay(2000); //https://github.com/ZeusAutomacao/DFe.NET/issues/568#issuecomment-339862458 retornoNFeDistDFe = servicoNFe.NfeDistDFeInteresse(ufAutor: _configuracoes.EnderecoEmitente.UF.ToString(), documento: _configuracoes.Emitente.CNPJ, chNFE: chave); if (retornoNFeDistDFe.Retorno.loteDistDFeInt == null) { throw new Exception(retornoNFeDistDFe.Retorno.xMotivo); } } if ((retornoNFeDistDFe.Retorno.loteDistDFeInt.Count()) > 0) { var xmlBytes = retornoNFeDistDFe.Retorno.loteDistDFeInt[0].XmlNfe; string xmlStr = Compressao.Unzip(xmlBytes); Console.WriteLine($"Xml: {xmlStr}"); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// Valida o XML de acordo com o schema. /// </summary> /// <param name="xml">A mensagem XML que deve ser verificada.</param> /// <param name="provedor">O provedor.</param> /// <param name="schema">O schema que será usado na verificação.</param> /// <returns>Se estiver tudo OK retorna null, caso contrário as mensagens de alertas e erros.</returns> protected RetornoWebservice ValidarSchema(string xml, string schema) { schema = Path.Combine(Config.Geral.PathSchemas, Name, schema); string[] errosSchema; string[] alertasSchema; if (!CertificadoDigital.ValidarXml(xml, schema, out errosSchema, out alertasSchema)) { var retLote = new RetornoWebservice { Assincrono = true, XmlEnvio = xml }; foreach (var erro in errosSchema.Select(descricao => new Evento { Codigo = "0", Descricao = descricao })) { retLote.Erros.Add(erro); } foreach (var alerta in alertasSchema.Select(descricao => new Evento { Codigo = "0", Descricao = descricao })) { retLote.Alertas.Add(alerta); } return(retLote); } return(null); }
private void button_selecionar_certificado_Click(object sender, EventArgs e) { if (ckbCertificadoInstalado.Checked) { CertificadoDigital oCertDig = new CertificadoDigital(); if (oCertDig.SelecionarCertificado() == true) { oMeuCert = oCertDig.oCertificado; oEmpresa.Certificado = oMeuCert.Subject; oEmpresa.CertificadoDigitalThumbPrint = oMeuCert.Thumbprint; oEmpresa.X509Certificado = oMeuCert; DemonstraDadosCertificado(); } } else { if (File.Exists(txtArquivoCertificado.Text)) { FileInfo arq = new FileInfo(txtArquivoCertificado.Text); this.openFileDialog1.InitialDirectory = arq.DirectoryName; this.openFileDialog1.FileName = txtArquivoCertificado.Text; } else { this.openFileDialog1.InitialDirectory = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"; this.openFileDialog1.FileName = null; } if (openFileDialog1.ShowDialog() == DialogResult.OK) { txtArquivoCertificado.Text = this.openFileDialog1.FileName; } } }
public void Validar(bool salvando = true) { empresa.CertificadoInstalado = ckbCertificadoInstalado.Checked && ckbTemCertificadoInstalado.Checked; empresa.CertificadoArquivo = ckbTemCertificadoInstalado.Checked ? txtArquivoCertificado.Text : ""; empresa.CertificadoSenha = ckbTemCertificadoInstalado.Checked ? txtSenhaCertificado.Text : ""; empresa.Certificado = (ckbTemCertificadoInstalado.Checked ? (this.oMeuCert == null ? empresa.Certificado : oMeuCert.Subject.ToString()) : ""); empresa.CertificadoDigitalThumbPrint = (ckbTemCertificadoInstalado.Checked ? (this.oMeuCert == null ? empresa.CertificadoDigitalThumbPrint : oMeuCert.Thumbprint) : ""); empresa.CertificadoPIN = ckbTemCertificadoInstalado.Checked ? txtPinCertificado.Text : ""; empresa.UsaCertificado = ckbTemCertificadoInstalado.Checked; if (ckbTemCertificadoInstalado.Checked) { if (!String.IsNullOrEmpty(empresa.CertificadoPIN)) { CertificadoDigital oCertificado = new CertificadoDigital(); CertProviders providerInfo = new CertProviders(); providerInfo = oCertificado.GetInfoProvider(cboProviders.SelectedItem.ToString()); empresa.ProviderCertificado = providerInfo.NameKey; empresa.ProviderTypeCertificado = providerInfo.Type; if (salvando) { ValidarCertificadoA3(true); } } if (cboProviders.SelectedItem != null) { } } }
/// <summary> /// Genera el sello digital para el cfdi - pasando como string la cadena original generada previamente /// </summary> /// <param name="noCertificado"></param> /// <param name="certificadoB64"></param> /// <param name="cadenaOriginal"></param> /// <param name="datos"></param> /// <returns></returns> public static string GetSelloDigitalEmisor(ref string noCertificado, ref string certificadoB64, string cadenaOriginal, PathsCertificado datos) { string selloDigital = null; try { CertificadoDigital cert = GetCertificadoDigital(datos.PathArchivoCer); noCertificado = cert.NoCertificado; certificadoB64 = cert.CertificadoBase64; SecureString identidad = new SecureString(); identidad.Clear(); foreach (var c in datos.Password.ToCharArray()) { identidad.AppendChar(c); } byte[] llavePrivadaBytes = File.ReadAllBytes(datos.PathArchivoKey); RSACryptoServiceProvider lrsa = opensslkey.DecodeEncryptedPrivateKeyInfo(llavePrivadaBytes, identidad); SHA1CryptoServiceProvider hasher = new SHA1CryptoServiceProvider(); byte[] bytesFirmados = lrsa.SignData(Encoding.UTF8.GetBytes(cadenaOriginal), hasher); selloDigital = Convert.ToBase64String(bytesFirmados); return(selloDigital); } catch (Exception) { return(selloDigital); } }
public void CertificadoDigital_ComListaTesteExpirados_DeveDarErro() { // arrange var(expirados, _, _) = CertificadoDigitalTestsContext.GetListaParaValidar(); var options = new CertificadoDigitalOptions(); foreach (var file in expirados) { if (file.EndsWith(".pdf")) { var buffer = ObterCertificadoFromPdf(file); using var certificado = new X509Certificate2(buffer); // act var result = CertificadoDigital.Processar(certificado, options); // assert result.Should().NotBeNull(); result.Erro.Should().BeTrue(); } else { using var certificado = new X509Certificate2(file); // act var result = CertificadoDigital.Processar(certificado, options); // assert result.Should().NotBeNull(); result.Erro.Should().BeTrue(); } } }
public void Deletar(CertificadoDigital certificadoDigital) { using (var instancia = NHibernateHelper.InstanciaComTransacao()) { _repositorioCertificadoDigital.SetNHibernateHelper(instancia); _repositorioCertificadoDigital.Deletar(certificadoDigital); } }
/// <summary> /// Cria uma instância da Classe responsável pelos serviços relacionados à NFe /// </summary> /// <param name="cFgServico"></param> public ServicosNFe(ConfiguracaoServico cFgServico) { _cFgServico = cFgServico; _certificado = string.IsNullOrEmpty(_cFgServico.Certificado.Arquivo) ? CertificadoDigital.ObterDoRepositorio(_cFgServico.Certificado.Serial, _cFgServico.Certificado.Senha) : CertificadoDigital.ObterDeArquivo(_cFgServico.Certificado.Arquivo, _cFgServico.Certificado.Senha); _path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); }
public void Generado_PersonaNacional_CertificadoNacionalDeAutenticacion() { elResultadoEsperado = ObtengaUnCertificadoNacionalDeAutenticacion(); losDatos = ObtengaLosDatosDeUnaEmisionNacional(); elResultadoObtenido = new CertificadoDeAutenticacion(losDatos).Generado(); Verificacion.SonIguales(elResultadoEsperado, elResultadoObtenido); }
public void Generado_PersonaExtranjera_CertificadoExtranjeroDeFirma() { elResultadoEsperado = ObtengaUnCertificadoExtranjeroDeFirma(); losDatos = ObtengaLosDatosDeUnaEmisionExtranjera(); elResultadoObtenido = new CertificadoDeFirma(losDatos).Generado(); Verificacion.SonIguales(elResultadoEsperado, elResultadoObtenido); }
public void Sujeto_ExtranjeroDeFirma_SujetoFormateado() { elResultadoEsperado = "CN=MIGUEL SUAREZ GODINEZ (FIRMA), OU=EXTRANJERO, O=PERSONA FISICA, C=CR, GivenName=MIGUEL, Surname=SUAREZ GODINEZ, SERIALNUMBER=NUP-3034560333"; elCertificado = ObtengaUnCertificadoExtranjeroDeFirma(); elResultadoObtenido = elCertificado.Sujeto; Assert.AreEqual(elResultadoEsperado, elResultadoObtenido); }
private static X509Certificate2 ObterCertificado() { if (!string.IsNullOrEmpty(CaminhoCertificadoDigital) && !string.IsNullOrEmpty(SenhaCertificadoDigital)) { return(CertificadoDigital.ObterDeArquivo(CaminhoCertificadoDigital, SenhaCertificadoDigital)); } return(CertificadoDigital.ObterDoRepositorio(NumeroSerieCertificadoDigital, SenhaCertificadoDigital)); }
public ServNFe4(EmissorServicoConfig emissorConfig) { EmissorConfig = emissorConfig ?? throw new ArgumentNullException(nameof(emissorConfig)); EmissorConfig = emissorConfig; //Setar dados de configuração do serviço apropriado para NFe 4.0 EmissorConfig.VersaoServico = VersaoServico.Ve400; //Obter certificado Digital X509Certificate2 = CertificadoDigital.ObterCertificado(EmissorConfig.Certificado); }
private static void ValidDigitalCertificate(CertificadoDigital cert, PdfPkcs7 pkcs7) { bool timestampImprint = pkcs7.VerifyTimestampImprint(); if (!timestampImprint && !cert.PeriodoValido) { throw new Exception("Este documento possui uma assinatura ICPBrasil inválida."); } }
public void FechaDeVencimiento_UnaFechaActual_CuatroAñosEnElFuturo() { elResultadoEsperado = new DateTime(2020, 10, 11); elCertificado = ObtengaUnCertificadoNacionalDeAutenticacion(); elResultadoObtenido = elCertificado.FechaDeVencimiento; Assert.AreEqual(elResultadoEsperado, elResultadoObtenido); }
/// <summary> /// Verificar se o certificado digital está vencido /// </summary> /// <param name="emp">Empresa que é para ser verificado o certificado digital</param> /// <remarks> /// Retorna uma exceção ExceptionCertificadoDigital caso o certificado esteja vencido /// </remarks> protected void CertVencido(Empresa empresa) { CertificadoDigital CertDig = new CertificadoDigital(); if (CertDig.Vencido(empresa)) { throw new ExceptionCertificadoDigital(ErroPadrao.CertificadoVencido, "(" + CertDig.dValidadeInicial.ToString() + " a " + CertDig.dValidadeFinal.ToString() + ")"); } }
public void DireccionDeRevocacion_UnaDireccion_LaMisma() { elResultadoEsperado = "http://direccionderevocacion.com"; elCertificado = ObtengaUnCertificadoNacionalDeAutenticacion(); elResultadoObtenido = elCertificado.DireccionDeRevocacion; Assert.AreEqual(elResultadoEsperado, elResultadoObtenido); }
public void Sujeto_NacionalDeFirma_SujetoFormateado() { elResultadoEsperado = "CN=MIGUEL SUAREZ GODINEZ (FIRMA), OU=CIUDADANO, O=PERSONA FISICA, C=CR, GivenName=MIGUEL, Surname=SUAREZ GODINEZ, SERIALNUMBER=CPF-3034560333"; elCertificado = ObtengaUnCertificadoNacionalDeFirma(); elResultadoObtenido = elCertificado.Sujeto; Assert.AreEqual(elResultadoEsperado, elResultadoObtenido); }
public void FechaEmision_UnaFechaActual_LaMismaFechaDeEmision() { elResultadoEsperado = new DateTime(2016, 10, 11); elCertificado = ObtengaUnCertificadoNacionalDeAutenticacion(); elResultadoObtenido = elCertificado.FechaDeEmision; Assert.AreEqual(elResultadoEsperado, elResultadoObtenido); }
public void CertificadoDeAutenticacion_DatosNacionales_CertificadoNacional() { elResultadoEsperado = ObtengaUnCertificadoNacionalDeAutenticacion(); Emision laEmision = ObtengaUnaEmisionConDatosNacionalesDeAutenticacion(); elResultadoObtenido = laEmision.CertificadoDeAutenticacion; Verificacion.SonIguales(elResultadoEsperado, elResultadoObtenido); }
/// <summary> /// Cria uma instância da Classe responsável pelos serviços relacionados à NFe /// </summary> /// <param name="cFgServico"></param> public ServicosNFe(ConfiguracaoServico cFgServico) { _cFgServico = cFgServico; _certificado = string.IsNullOrEmpty(_cFgServico.Certificado.Arquivo) ? CertificadoDigital.ObterDoRepositorio(_cFgServico.Certificado.Serial, _cFgServico.Certificado.Senha) : CertificadoDigital.ObterDeArquivo(_cFgServico.Certificado.Arquivo, _cFgServico.Certificado.Senha); _path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); //Define a versão do protocolo de segurança ServicePointManager.SecurityProtocol = cFgServico.ProtocoloDeSeguranca; }
public void LiberarRecurso() { AssinaturaDigital = new AssinaturaDigital(); Certificado = new CertificadoDigital(); ValidarSchemaDocFiscal = new ValidarDocumentoFiscal(); NumRecibo = ""; ProtocoloAutorizacao = ""; IDToken = ""; CSC = ""; Erro = ""; Mensagem = ""; }
private void button_selecionar_certificado_Click(object sender, EventArgs e) { CertificadoDigital oCertDig = new CertificadoDigital(); if (oCertDig.SelecionarCertificado() == true) { oMeuCert = oCertDig.oCertificado; Empresa.Configuracoes[Empresa.FindConfEmpresaIndex(cbEmpresa.SelectedValue.ToString().Trim())].Certificado = oMeuCert.Subject; Empresa.Configuracoes[Empresa.FindConfEmpresaIndex(cbEmpresa.SelectedValue.ToString().Trim())].X509Certificado = oMeuCert; DemonstraDadosCertificado(); } }
private void CarregaDadosCertificado() { try { var cert = CertificadoDigital.ObterDoRepositorio(); TxtCertificado.Text = cert.SerialNumber; //TxtValidade.Text = "Validade: " + cert.GetExpirationDateString(); } catch (Exception ex) { Funcoes.Mensagem(ex.Message, TituloErro, MessageBoxButton.OK); } }
private void CarregaDadosCertificado() { try { var cert = new CertificadoDigital(); TxtCertificado.Text = cert.Serial; //lblCertificadoValidade.Content = cert.Validade.ToString(); } catch (Exception ex) { Funcoes.Mensagem(ex.Message, TituloErro, MessageBoxButton.OK); } }
public void CertificadoDigital_ComECpfValido_DeveFuncionar() { // arrange var certificado = ObterCertificado(CertificadoTipo.FileECpfValido); var options = new CertificadoDigitalOptions(); // act var result = CertificadoDigital.Processar(certificado, options); // assert result.Should().NotBeNull(); result.Erro.Should().BeFalse(); }