Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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
Postado
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 mês depois ...
Postado

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.

Postado
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!

Postado (editado)

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

Editado por GuilhermeCosta
Erro de escrita
Postado
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?

  • Obrigado 1

Att,

Renato

Postado

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

Postado (editado)

@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;
        }

 

Editado por GuilhermeCosta
Erro de portugues
Postado

@GuilhermeCosta voce conseguiu validar e enviar o arquivo eSocial assinado com Certfly ? o que eu fiz aqui, peguei o acbr fiz o XML quando foi assinar, mandei o Certfly assinar ele assinou, quando vai passar pelo validar do ACBr da erro na assinatura.

Att,

Renato

Postado

eu não tinha colocado a Linha que você solicitou, no post acima, tem como você me encaminhar o fonte atualizado certifly, eu ainda vou te que fazer o download do VS para arrumar.

Att,

Renato

Postado

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

Postado (editado)

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';

 

 

 

Editado por RenatoE

Att,

Renato

Postado

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á 2615 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...
The popup will be closed in 10 segundos...