DFeSigner.NET
1.0.1
See the version list below for details.
dotnet add package DFeSigner.NET --version 1.0.1
NuGet\Install-Package DFeSigner.NET -Version 1.0.1
<PackageReference Include="DFeSigner.NET" Version="1.0.1" />
<PackageVersion Include="DFeSigner.NET" Version="1.0.1" />
<PackageReference Include="DFeSigner.NET" />
paket add DFeSigner.NET --version 1.0.1
#r "nuget: DFeSigner.NET, 1.0.1"
#:package DFeSigner.NET@1.0.1
#addin nuget:?package=DFeSigner.NET&version=1.0.1
#tool nuget:?package=DFeSigner.NET&version=1.0.1
DFeSigner.NET
📖 Sobre o Projeto
DFeSigner.NET
é uma biblioteca em C# (.NET) projetada para simplificar o processo de assinatura digital de Documentos Fiscais Eletrônicos (DF-e) no padrão brasileiro. Utilizando certificados digitais X.509 (A1 ou A3), a biblioteca oferece uma solução flexível e robusta para integrar a funcionalidade de assinatura em suas aplicações, com foco inicial em NF-e (Nota Fiscal Eletrônica) e NFC-e (Nota Fiscal de Consumidor Eletrônica).
O projeto adota uma arquitetura modular com uma classe base abstrata, permitindo a fácil extensão para outros tipos de DF-e no futuro, como CT-e (Conhecimento de Transporte Eletrônico) e MDF-e (Manifesto Eletrônico de Documentos Fiscais). Acompanha um projeto de testes unitários abrangente para garantir a confiabilidade e a validação das funcionalidades de assinatura.
✨ Funcionalidades
- Assinatura de NF-e: Assina digitalmente documentos XML de Nota Fiscal Eletrônica (modelo 55).
- Assinatura de NFC-e: Assina digitalmente documentos XML de Nota Fiscal de Consumidor Eletrônica (modelo 65).
- Classe Abstrata
DFeXmlSigner
: Fornece uma base comum para a lógica de assinatura XML, promovendo reuso de código e facilitando a adição de novos tipos de DF-e. - Validação de Tipo de Documento: As implementações concretas (NF-e, NFC-e) validam o modelo do documento no XML para garantir que o tipo correto de assinador está sendo usado.
- Tratamento de Erros Robusto: Lançamento de exceções claras para cenários como XML inválido, certificado nulo ou certificado sem chave privada.
- Testes Unitários: Projeto de testes dedicado (xUnit) com exemplos de uso e cenários de sucesso e falha.
- Suporte a Certificados X.509: Compatível com certificados PFX (A1) carregados de arquivo ou certificados instalados no repositório do Windows (A3).
🚀 Tecnologias Utilizadas
- C# (.NET): Linguagem de programação e plataforma principal.
- XML (System.Xml): Para manipulação e leitura de documentos XML.
- Criptografia XML (System.Security.Cryptography.Xml): Componente do .NET para operações de assinatura XML digital.
- Certificados X.509 (System.Security.Cryptography.X509Certificates): Para gerenciamento e uso de certificados digitais.
- xUnit: Framework de testes unitários para .NET.
🛠️ Instalação e Configuração
Para configurar e executar o projeto, siga os passos abaixo:
Clone o Repositório:
git clone [https://github.com/tiago-saldanha/DFeSigner.NET.git](https://github.com/SEU_USUARIO/DFeSigner.NET.git) cd DFeSigner.NET
Abra no Visual Studio:
- Abra o arquivo de solução
DFeSigner.sln
no Visual Studio (2019 ou superior).
- Abra o arquivo de solução
Restaure as Dependências:
- O Visual Studio deve restaurar automaticamente os pacotes NuGet. Caso contrário, clique com o botão direito na solução e selecione
Restore NuGet Packages
.
- O Visual Studio deve restaurar automaticamente os pacotes NuGet. Caso contrário, clique com o botão direito na solução e selecione
Construa a Solução:
- Clique em
Build
>Build Solution
(ouCtrl+Shift+B
) para compilar os projetosDFeSigner.Core
eDFeSigner.Tests
.
- Clique em
💡 Como Usar
A biblioteca é projetada para ser fácil de usar. Você precisa de um conteúdo XML (string) e um certificado digital X.509.
Exemplo de Uso (Assinando uma NF-e):
using DFeSigner.Core.Signers;
using System.Security.Cryptography.X509Certificates;
using System.IO;
using System;
public class ExemploAssinatura
{
public static void Main(string[] args)
{
try
{
// 1. Carregar o XML da NF-e (substitua pelo seu XML real)
string xmlNFeContent = File.ReadAllText("caminho/para/sua/nfe.xml");
// 2. Carregar o Certificado Digital (exemplo de certificado PFX com senha)
// Certifique-se de que o certificado.pfx está acessível e a senha está correta.
// Para certificados A3 (instalados no Windows), você pode usar o GetCertificateBySubjectName().
string certificatePath = "caminho/para/seu/certificado.pfx";
string certificatePassword = "sua_senha_do_certificado";
X509Certificate2 certificate = new X509Certificate2(
certificatePath,
certificatePassword,
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet
);
// 3. Instanciar o assinador específico (NFeXmlSigner para NF-e)
NFeXmlSigner nfeSigner = new NFeXmlSigner();
// 4. Assinar o XML
string signedNFeXml = nfeSigner.Sign(xmlNFeContent, certificate);
Console.WriteLine("NF-e assinada com sucesso!");
// Opcional: Salvar o XML assinado
File.WriteAllText("nfe_assinada.xml", signedNFeXml);
// --- Exemplo com NFC-e ---
string xmlNFCeContent = File.ReadAllText("caminho/para/sua/nfce.xml");
NFCeXmlSigner nfceSigner = new NFCeXmlSigner();
string signedNFCeXml = nfceSigner.Sign(xmlNFCeContent, certificate);
Console.WriteLine("NFC-e assinada com sucesso!");
File.WriteAllText("nfce_assinada.xml", signedNFCeXml);
}
catch (Exception ex)
{
Console.WriteLine($"Ocorreu um erro: {ex.Message}");
Console.WriteLine(ex.InnerException?.Message); // Detalhes da exceção interna
}
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- System.Security.Cryptography.Xml (>= 9.0.7)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Biblioteca dedicada a oferecer uma solução simples para assinar digitalmente seus documetos fiscais utilizando um certificado digital(A1/A3).