Ir para conteúdo
  • Cadastre-se

dev botao

Programa Para Fazer A Assinatura Para Certificados A3 Em C#


Rafa Moraes
Ver Solução Respondido por Marcio OFFSuporte,
  • Este tópico foi criado há 2690 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde,

 

Com base no código disponibilizado pelo e Sefaz a também pelo modelo apresentado pelo Marcio.Bonfim, consegui desenvolver um programa para fazer a assinatura do SAT para o modelo A3. O programa possui uma interface simples e muito pratica e foi desenvolvido em C#. Agradeço a todos pela disposição em nos ajudar.

 

Segue abaixo o link do arquivo executável:

 

http://1drv.ms/1ESi0lX

 

Qualquer duvida é só comentar. 

Editado por Rafa Moraes
  • Curtir 3
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...
  • Membros Pro

Amigo não sei se vai te resolver , mas tente dar uma olhada  no   Site da TANCA, ( selecione opção SAT) , tem um programa: GERADOR DE CODIGO DE VINCULAÇÃO , que me parece que é para A1 , pois pede certificado de extensão: p12 ou pfx .

 

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

perdoe minha ignorância, mas ao tentar utiliza-lo retornou a seguinte exceção.

 

alguém já viu um erro deste tipo?

Object reference not set to an instance of an object.

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
   at CertificadoUI.Assinar.AssinarCertificado(String Cnpj, X509Certificate2 certificado)
   at CertificadoUI.frmMain.btRenovar_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
CertificadoUI
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/User/Downloads/CertificadoUI%20(1).exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Configuration
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Security
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Security/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Security.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

 

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • Membros Pro

Rafa, parabéns pela iniciativa!

Mas ao selecionar o certificado A3, digitar os 2 CNPJs, que no meu caso são iguais porque o desenvolvimento é da própria empresa e ao pedir para assinar recebo a seguinte resposta: Hash Inválido. Você saberia porque está retornando essa mensagem de erro?

Link para o comentário
Compartilhar em outros sites

Parabéns, amigo. Eu já estava pensando que o problema estava com meu certificado. O meu é o A1 da Certisign, em token (pen drive), e nada nem ninguém estava conseguindo me ajudar. A sua iniciativa merece um brinde! Acho que todos os que conseguirem poderiam indicar aqui qual o tipo de seu certificado para montarmos uma lista dos que permitem. Valeu mesmo, campeão. Abraços aí.

Link para o comentário
Compartilhar em outros sites

Colegas,

Segue o programa em C# (tem o binário dentro da pasta bin/Release) que eu desenvolvi para assinar com certificado A1 diretamente do repositório do Windows. Ele é semelhante ao da Tanca, mas diferencia-se pelo fato de usar um certificado instalado, enquanto o Tanca você precisa do arquivo e da senha.

Não faço ideia se funciona com A3 também, mas se estiver instalado no Windows, acho que deveria funcionar.

Abraços.

SatCVSign.zip

Editado por Gabriel Frones
  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • 2 semanas depois ...

Olá estou com o mesmo erro.

Fiz um teste no windows 7 com framework 3, depois 4.0 e 4.5 (fui atualizando, achando que fosse esse o problema). Testei também no windows 10, sem sucesso.

Eu seleciono o certificado digital, informo o CNPJ da SH e do cliente e quando clico em assinar, ocorre o erro abaixo:

 

Consulte o final desta mensagem para obter detalhes sobre como chamar a
depuração just-in-time (JIT) em vez desta caixa de diálogo.
 
************** Texto de Exceção **************
System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.
   em CertificadoUI.Assinar.AssinarCertificado(String Cnpj, X509Certificate2 certificado)
   em CertificadoUI.frmMain.btRenovar_Click(Object sender, EventArgs e)
   em System.Windows.Forms.Control.OnClick(EventArgs e)
   em System.Windows.Forms.Button.OnClick(EventArgs e)
   em System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   em System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   em System.Windows.Forms.Control.WndProc(Message& m)
   em System.Windows.Forms.ButtonBase.WndProc(Message& m)
   em System.Windows.Forms.Button.WndProc(Message& m)
   em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   em System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
 

************** Assemblies Carregados **************
mscorlib
    Versão do Assembly: 4.0.0.0
    Versão do Win32: 4.0.30319.34209 built by: FX452RTMGDR
    Base de Código: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
CertificadoUI
    Versão do Assembly: 1.0.0.0
    Versão do Win32: 1.0.0.0
    Base de Código: file:///E:/Documentos/DocumentoFiscal/SATFiscal/Gerador_Assinatura_AC___SiteAcbr/CertificadoUI.exe
----------------------------------------
System.Windows.Forms
    Versão do Assembly: 4.0.0.0
    Versão do Win32: 4.0.30319.34209 built by: FX452RTMGDR
    Base de Código: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Versão do Assembly: 4.0.0.0
    Versão do Win32: 4.0.30319.34209 built by: FX452RTMGDR
    Base de Código: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
    Versão do Assembly: 4.0.0.0
    Versão do Win32: 4.0.30319.34209 built by: FX452RTMGDR
    Base de Código: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Security
    Versão do Assembly: 4.0.0.0
    Versão do Win32: 4.0.30319.34209 built by: FX452RTMGDR
    Base de Código: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Security/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Security.dll
----------------------------------------
mscorlib.resources
    Versão do Assembly: 4.0.0.0
    Versão do Win32: 4.0.30319.34209 built by: FX452RTMGDR
    Base de Código: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_pt-BR_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
    Versão do Assembly: 4.0.0.0
    Versão do Win32: 4.0.30319.34209 built by: FX452RTMGDR
    Base de Código: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_pt-BR_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
 
************** Depuração JIT **************
Para habilitar a depuração just-in-time (JIT), o arquivo .config deste
aplicativo ou computador (machine.config) deve ter o valor
jitDebugging definido na seção system.windows.forms.
O aplicativo também deve ser compilado com a depuração
habilitada.
 
Por exemplo:
 
<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>
 
Quando a depuração JIT está habilitada, qualquer exceção sem tratamento
será enviada ao depurador JIT registrado no computador,
em vez de ser tratada nesta caixa de diálogo.
 
Link para o comentário
Compartilhar em outros sites

Muito bom,

Eu criei um com base num artigo que achei na internet também em C# mas o meu quando coloco a string dos CNPJs ele gera certinho tanto criptografa quando descriptografa mas o SAT não associa!!!

Extraido do site http://www.ultradevelopers.net/Blog/21

Segue em anexo para quem quiser ver,

Dario

CertificadoDigital.zip

Link para o comentário
Compartilhar em outros sites

Olá Dario,

fiz um teste e seu programa só funciona com certificado A1 (fiz um teste com o certificado de um cliente).

Inclusive consegui fazer a associação ao emulador do SAT.M

 

Mas ocertificado da minha software house é A3, e quando teste com esse certificado, dá erro: Referência de objeto não definida para uma instância de um objeto.

Sabe o que pode ser, seu gerador de assinatura não está preparado para certificado A3?

Por enquanto, Obrigado!!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

  Olá, boa noite pessoal. Obrigado pela iniciativa de postar os programas aq.

  Fiz um teste usando um certificado A3 de um cliente, e 2 Cnpj´s. Usei 2 programas de geração disponibilizados aq, e cada um deu um resultado, de tamanho 344.

Usando o programa do Rafa Moraes em:   http://1drv.ms/1ESi0lX

o13bJEw2RcbQy3gvj0fVFzyONLR4cyXwKRegyWh+EWEkqdZ9cPDnQchtDLrLWE8QJbe/n4sK6V2IuncVLmXIrc3st7hnL39eZ4ZirMKpomPRiCiLqN5AALADocbV9OsDf0hzGiwP+Ej6R91UH/YZx3yF66KoZKMx4KHYCr32yhrNjrxjBek9YlbJFuLPcO8dKhW/eZ8Gf4CojpvCscys00fTEeC6vcPs79MhD1bI1swmDtYMbxQJ7MfWl7z6MGmQKb4u7kJNNO2CV0KSXqLli+1fq1wMbwmjBDJ0j7cw1QgspOYD737a/sIWSS5iAj7SbpPV+70OlkbLin9XmOEWxA==

Usando o programa do JcChiaretto em;    Assinador_A3.zip

QjONHYfqfRmrDYWC0O39XMqZqSzj3IoouiFNVrqxBaZ2qJzfogEmdsB9/wnlbGpZ5N26w21KSEz+joSCwBJw9HQsPcvxWRIXQfbIjJ8ub7AUo/Tk//Q2IbhUsFAkm9Aa0ggsyC5BuyrW7JdnHZOd6zsVLnMnBsqEujxISDLXj+zrKOCpIuODC1YoVnS3a0wMAgprgVs0JQLR673ZlJYaauwfQKYLj8QSXQfG49q/yCFIzLG2b9F25ltoQesLhKgzpRzNbDXatkVPAfJte2gVrcODp3plf/fZYqsVRKhFFlvgnl+/McClhNducLN1ffOFtUlgb+7KiJxatUBbZh8TtA==

  É normal assim cada um gerar um código diferente ? Só gerei, não coloquei num Sat.

  Abraços a todos - Maurício

Link para o comentário
Compartilhar em outros sites

Maurício,

como sou apenas desenvolvedor terceiro, a empresa para qual eu desenvolvi o SAT optou por usar o assinatura A3.ZIP (da ACSN) que foi indicado pela TANCA (pois a TANCA só desenvolveu assinador A1 e no fórum deles eles indicam esse para assinar o A3).

Eles ainda não testaram em um cliente real, então não posso dizer se está OK.

Não é desmerecendo o programa do Rafa Moraes, mas como programa da ACSN (Assinador_A3) foi indicado pela TANCA, eles optaram por usar este, por se tratar de uma indicação de uma empresa grande, que eles conhecem e confiam.

Quanto ao fato de estar gerando diferente, sinceramente não sei dizer porque.

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2690 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...