Ir para conteúdo
  • Cadastre-se

Jeihcio Francis

Membros
  • Total de ítens

    64
  • Registro em

  • Última visita

Tudo que Jeihcio Francis postou

  1. Eu acabei comentado em outro tópico... O componente da ACBR não está conseguindo assinar com o A3, ele assina, mas gera uma assinatura errada. Eu resolvi o problema usando dll externa, que postamos aqui no fórum (https://www.projetoacbr.com.br/forum/topic/39471-uma-opção-certificação-a3sha256-fontes/?page=2), olha no tópico eu explicando como usa-la. Mas isso é uma solução paliativa e não é feita pela ACBR, e sim por membros do fórum... Então tenha em mente que no futuro vc terá q baixar o código original da acbr e alterar...
  2. Eu fiz alguns testes e o que eu entendi é que o componente ainda não consegue assinar de forma correta. Eu resolvi o problema de forma paliativa, usando uma dll externa, já postada no fórum: https://www.projetoacbr.com.br/forum/topic/39471-uma-opção-certificação-a3sha256-fontes/?page=2
  3. isso ai é pq falta o numero de inscrição, ou seja, cnpj ou cpf... essas mensagens de erro é da validação do xsd.
  4. Sempre que eu exporto com o A3 o servidor do e-social me retorna a seguinte mensagem "Assinatura do evento inválida. Ações Sugeridas: Verificar se houve alteração do evento após a assinatura. Verificar a validade da assinatura.", mesmo tendo o "FLoteEventos.Clear;" no método "GerarXMLEventos"...
  5. Eu testei e também tive esse problema, mas não consegui resolver ainda...
  6. usa essas configurações no A1: AACBreSocial.Configuracoes.Geral.SSLHttpLib := httpWinHttp; AACBreSocial.Configuracoes.Geral.SSLLib := libOpenSSL;
  7. Com a versão do svn basta descomentar as linhas de código e adicionar algumas q volta a funcionar perfeitamente...
  8. Então, verifica se o A3 está conectado corretamente. Só use essa dll se for para o a3, o a1 usa o próprio ACBR
  9. Eu acabei resolvendo o problema que mencionei acima da seguinte forma: Configurações do componente: If ( Obj.Modelo = A3 ) Then Begin If FConsultar Then AACBreSocial.Configuracoes.Geral.SSLLib := libCapicom Else AACBreSocial.Configuracoes.Geral.SSLLib := libCustom; AACBreSocial.Configuracoes.Geral.SSLXmlSignLib := xsNone; AACBreSocial.Configuracoes.Certificados.NumeroSerie := Obj.NumeroSerie; AACBreSocial.SSL.CarregarCertificado; End; Obs: Eu sei que por default o 'SSLXmlSignLib' vem 'xsNone', mas eu quis deixar explicitamente no código do meu controller que é obrigatório setar esse valor no atributo. Depois e antes de enviar eu faço: { Assinatura digital } ACBreSocial1.AssinarEventos; { Enviar dados ao webservice } ACBreSocial1.Configuracoes.Geral.SSLXmlSignLib := xsXmlSec; ACBreSocial1.Enviar(getTipoGrupo(nTabela)); Antes de enviar é obrigatório setar 'xsXmlSec' para a propriedade 'SSLXmlSignLib', pois no método 'Enviar' da classe 'TACBreSocial' que fica dentro do arquivo 'ACBReSocial' existe a seguinte verificação: if SSL.SSLXmlSignLib <> xsXmlSec then raise EACBreSocialException.Create('Necessário DigestMethod Algorithm = sha256 -> SSLLib = libOpenSSL'); Essas configurações eu fiz no meu código da minha aplicação, já no componente da ACBR tive que fazer as seguintes alterações no arquivo 'ACBrDFeSSL': Método 'Assinar' da classe 'TDFeSSLXmlSignClass': function TDFeSSLXmlSignClass.Assinar(const ConteudoXML, docElement, infElement: String; SignatureNode: String; SelectionNamespaces: String; IdSignature: String; IdAttr: String): String; var xml: PAnsiChar; begin FpDFeSSL.SSLCryptLib := cryCapicom; xml := PAnsiChar(AnsiString(ConteudoXML)); TESocialSignature.SignSHA256Ansi(xml, PAnsiChar(AnsiString(infElement)), PAnsiChar(AnsiString(FpDFeSSL.NumeroSerie)), PAnsiChar(AnsiString(FpDFeSSL.Senha))); Result := string(AnsiString(xml)); end; e no método 'Validar' dessa mesma classe: function TDFeSSLXmlSignClass.Validar(const ConteudoXML, ArqSchema: String; out MsgErro: String): Boolean; var DFeSSL: TDFeSSL; begin DFeSSL := TDFeSSL.Create; Try DFeSSL.SetSSLXmlSignLib(xsXmlSec); Result := DFeSSL.Validar(ConteudoXML, ArqSchema, MsgErro); Finally DFeSSL.Free; End; end; Essas foram as unicas alterações que fiz para resolver o problema....
  10. Acabei de testar e eu mesmo tive problemas, quando eu tento exportar um lote com mais de um evento está dando a seguinte mensagem de erro: "Certificado não permite Exportar Chave Privada.". Ele acontece no arquivo 'ACBrDFeWinCrypt' no método "ExportCertContextToPFXData" na linha 681, onde tem: if not PFXExportCertStoreEx( AStore, PFXBlob, LPCWSTR(WideString( APass )), Nil, dwFlags) then raise EACBrDFeExceptionNoPrivateKey.Create('Certificado não permite Exportar Chave Privada.'); Alguém sabe o motivo? Estranho, por que certificado A3 não tem PFX, então não era para está chamando todo esse processo....
  11. [Solved] Assinatura A3 com SHA256. Uma opção que achei junto ao um amigo meu que é programador C# foi criar uma DLL em C# para fazer a assinatura. Basicamente, a gente manda o XML e a DLL devolve assinada, apenas isso. A DLL foi feita baseada no CertFly e é consumida pelo o método 'Assinar' da classe 'TDFeSSLXmlSignClass' que fica localizada no arquivo 'ACBrDFeSSL'. [Código aberto] https://github.com/tiagopsilva/eSocialSignature [Como usar] No arquivo 'ACBrDFeSSL' coloque 'eSocialSignature' no 'uses' da 'interface'. Depois disso apague tudo que está no método 'Assinar' e substitua por esse código: var xml: PAnsiChar; begin FpDFeSSL.SetSSLXmlSignLib(xsXmlSec); FpDFeSSL.SSLCryptLib := cryCapicom; xml := PAnsiChar(AnsiString(ConteudoXML)); TESocialSignature.SignSHA256Ansi(xml, PAnsiChar(AnsiString(infElement)), PAnsiChar(AnsiString(FpDFeSSL.NumeroSerie)), PAnsiChar(AnsiString(FpDFeSSL.Senha))); Result := string(AnsiString(xml)); Isso é a única coisa que precisa ser alterada no plugin da ACBReSocial. Porém, é necessário definir a 'SSLLib' para 'libCustom' nas configurações do 'ACBreSocial', exemplo: If ( Obj.Modelo = A3 ) Then Begin If Not FConsultar Then AACBreSocial.Configuracoes.Geral.SSLLib := libCustom Else AACBreSocial.Configuracoes.Geral.SSLLib := libCapicom; AACBreSocial.Configuracoes.Certificados.NumeroSerie := Obj.NumeroSerie; AACBreSocial.SSL.CarregarCertificado; End; Para facilitar, apenas uso a 'libCustom' na hora de exportar já que o problema estava na assinatura do XML. Quando eu consulto eu já deixo o plugin fazer o processo dele normalmente, já que, na consulta não é necessário a assinatura digital. Porém, no código da ACBR pede o carregamento do certificado, e eu estava com problemas no método 'EnviarDados' da classe 'TDFeWebService' que fica no arquivo 'ACBrDFeWebService'. Quando o método executa '(FPDFeOwner.SSL.CertDataVenc < Now)' da problemas, pois, o 'CertDataVenc' vem com o valor default e não do certificado. Então preferi fazer essa estratégia com a flag do que sobrescrever mais o código original.
×
×
  • 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...