Jump to content

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

Recommended Posts

Posted

Boa Tarde,

Pessoal segue abaixo o projeto que iniciei, mais ainda não terminei com relação a certificação A3 e SHA256! 

Problema ainda não resolvido: Faz a assinatura e envio na primeira vez e no segundo envio há falhas com relação a conflitos não identificado.

Estou colocando aqui para caso alguém tenha tempo e interesse em resolver! porque no momento estou com outras atividades e tempo está curto,!

Antes que alguém pergunte: Sim resolvi a questão do A3/SHA256...fiz uma lib que funciona perfeitamente, mais tem partes de código proprietário o qual não posso incluir dentro do projeto de Código Aberto.  

https://github.com/leivio/CertFly

Espero que de alguma forma ajude alguém ou dê um novo caminho para uma solução aberta.

Abraços.!

Leivio -

  • Consultores
Posted
14 horas atrás, Juliomar Marchetti disse:

é delphi?

Lib COM desenvolvida em C# .NET 4.6.1.

Pode-se importar como objeto COM e utilizar no projeto em Delphi. Tem um exemplo na pasta Samples.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 1 month later...
Posted

Bom dia Srs,

Quando executo o exemplo me apresenta a mensagem de erro "Classe não registrada".

Tentei executar o comando "regsvr32 CertFly.dll" porém é apresentado o erro "DllRegisterServer não foi localizado".

Como proceder?

Obrigado.

Posted
7 horas atrás, GuilhermeCosta disse:

Bom dia Srs,

Quando executo o exemplo me apresenta a mensagem de erro "Classe não registrada".

Tentei executar o comando "regsvr32 CertFly.dll" porém é apresentado o erro "DllRegisterServer não foi localizado".

Como proceder?

Obrigado.

tenta registrar o arquivo tlb tmb!

Posted (edited)

Boa tarde,

estou utilizando Windows 10 x64, copiei a DLL e o TLB para a pasta system32 e sysWOW64, ao executar o comando:

regsvr32 %windir%\System32\Certfly.tlb

ou

regsvr32 %windir%\sysWOW64\Certfly.tlb

é apresentado a mensagem em anexo. Teria que recompilar a DLL em 64 bits? Se for o caso como proceder? Qualquer versão do c# me permite compilar o projeto?

Obrigado.

erro.png

Edited by GuilhermeCosta
Erro de escrita
Posted
Em 23/11/2017 at 13:41, GuilhermeCosta disse:

Boa tarde,

estou utilizando Windows 10 x64, copiei a DLL e o TLB para a pasta system32 e sysWOW64, ao executar o comando:


regsvr32 %windir%\System32\Certfly.tlb

ou


regsvr32 %windir%\sysWOW64\Certfly.tlb

é apresentado a mensagem em anexo. Teria que recompilar a DLL em 64 bits? Se for o caso como proceder? Qualquer versão do c# me permite compilar o projeto?

Obrigado.

erro.png

Já rodei este 2 comandos 

 

 

Em 24/11/2017 at 09:11, GuilhermeCosta disse:

Bom dia Srs,

resolvi o problema executando o comando


regasm CertFly.dll

 

e também já rodei este porem fala que não deu certo

tem outra sugestão de registrar?

  • Thanks 1

Att,

Renato

 

http://www.edsonbill.com

Posted

Isso varia dependendo da versão do NET Framework e do Windows.. Mas geralmente fica nesse diretório.. %WINDIR%\Microsoft.NET\Framework\v4.0.30319

então para registrar ficaria assim %WINDIR%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe %WINDIR%\System32\Certfly.dll

Posted (edited)

@Leivio Fontenele criei um pull request alterando uma linha, pois os servidores do eSocial estavam acusando que o DigestMethod era invalido.

 

reference.DigestMethod = "http://www.w3.org/2001/04/xmlenc#sha256";

ficando assim

        static XmlDocument SignXML(string mensagemXML, X509Certificate2 certificado, string AAtributoId, string APin)
        {
            CryptoConfig.AddAlgorithm(typeof(RSAPKCS1SHA256SignatureDescription), "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256");

            System.Xml.XmlDocument xmlDoc = new XmlDocument();
            RSACryptoServiceProvider Key = new RSACryptoServiceProvider();
            SignedXml SignedDocument = default(SignedXml);
            KeyInfo keyInfo = new KeyInfo();
            xmlDoc.LoadXml(mensagemXML);

            Key = (RSACryptoServiceProvider)certificado.PrivateKey;
            keyInfo.AddClause(new KeyInfoX509Data(certificado));
            SignedDocument = new SignedXml(xmlDoc);

            SignedDocument.SigningKey = Key;
            SignedDocument.KeyInfo = keyInfo;
            SignedDocument.SigningKey = LerDispositivo(Key, APin);
            SignedDocument.SignedInfo.CanonicalizationMethod = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
            SignedDocument.SignedInfo.SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";            

            Reference reference = new Reference();
             if (AAtributoId == "0")
             {
                 reference.Uri = string.Empty;
             } 
             else
             {
                 reference.Uri = "#" + AAtributoId;
             }
            reference.DigestMethod = "http://www.w3.org/2001/04/xmlenc#sha256";
            reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
            reference.AddTransform(new XmlDsigC14NTransform(false));            
            SignedDocument.AddReference(reference);
            SignedDocument.ComputeSignature();
            System.Xml.XmlElement xmlDigitalSignature = SignedDocument.GetXml();
            xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true));

            return xmlDoc;
        }

 

Edited by GuilhermeCosta
Erro de portugues
Posted

A linha que coloquei não tem relação com o assinador e validador do ACbr, tanto que antes da alteração ele passava pela validação sem problemas, o erro só ocorria no retorno do processamento do lote ao consumir o WS do eSocial.

Segue em anexo.

Certfly.dll

Posted (edited)

voce tem o exemplo ai do eSocial que voce disse ter passado? pq o meu aqui da erro no validar. Como voce configurou o componente?

 

  // Configuracao Certificados
  AACBreSocial.Configuracoes.Geral.SSLLib := libWinCrypt;
//  AACBreSocial.Configuracoes.Geral.SSLHttpLib := httpWinHttp;

  AACBreSocial.Configuracoes.Certificados.ArquivoPFX := '';
  AACBreSocial.Configuracoes.Certificados.NumeroSerie := '31021701246Z2FV1';
  AACBreSocial.Configuracoes.Certificados.Senha := 'ABC2017';

 

 

 

Edited by RenatoE

Att,

Renato

 

http://www.edsonbill.com

Posted

Você está chamando a CertFly pra assinar? Ela assina um arquivo físico e gera um outro arquivo físico assinado, pra que o metodo validar do acbr funcione o atributo "FXMLAssinado" da classe "TeSocialEvento" deve estar preenchido com os dados xml gerado no seu hd...

  • Este tópico foi criado há 2464 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...