Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2479 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

 

http://www.edsonbill.com

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

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

 

http://www.edsonbill.com

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á 2479 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.