DFeSigner.NET 1.0.1

There is a newer version of this package available.
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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DFeSigner.NET" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DFeSigner.NET" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="DFeSigner.NET" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DFeSigner.NET --version 1.0.1
                    
#r "nuget: DFeSigner.NET, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DFeSigner.NET@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DFeSigner.NET&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=DFeSigner.NET&version=1.0.1
                    
Install as a Cake Tool

DFeSigner.NET

.NET C# xUnit GitHub License

📖 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:

  1. 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
    
  2. Abra no Visual Studio:

    • Abra o arquivo de solução DFeSigner.sln no Visual Studio (2019 ou superior).
  3. 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.
  4. Construa a Solução:

    • Clique em Build > Build Solution (ou Ctrl+Shift+B) para compilar os projetos DFeSigner.Core e DFeSigner.Tests.

💡 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.4 115 7/31/2025
1.0.3 116 7/30/2025
1.0.2 113 7/29/2025
1.0.1 108 7/29/2025

Biblioteca dedicada a oferecer uma solução simples para assinar digitalmente seus documetos fiscais utilizando um certificado digital(A1/A3).