Ir para conteúdo
  • Cadastre-se

dev botao

Assinatura A3 e A1 Instalado na máquina


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

Recommended Posts

Boa tarde,

Depois de muito tempo trabalhando em cima, conseguimos aqui na empresa corrigir o problema da assinatura com o certificado A3, e o A1 instalado na máquina para o e-Social (sha-256).

Fizemos diversos testes, enviamos e recebemos os recibos normalmente...

Segue a unit para análise, testes, e se for o caso ser versionada no componente.

É só substituir a unit na pasta: \Fontes\ACBrDFe

Valeu!

ACBrDFeXsLibXml2.pas

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

7 minutos atrás, Joceandro Perin disse:

Bom dia, como vocês estão usando as configurações pra poder usar os dois tipos?

Joceando, bom dia!

Estou utilizando assim:

Nesse momento aqui já foi validado se ele associou o certificado cadastrado a empresa e tal...

Dessa forma estou enviando com A1 PFX, A1 instalado e A3.

//Quando usuário cadastrou o certificado pelo PFX

if dmESocial.qryCertificadoDigital.FieldByName('DS_CAMINHOPFX').AsString <> '' then
begin
    dmESocial.ACBreSocial.Configuracoes.Geral.SSLLib     := libOpenSSL;
    dmESocial.ACBreSocial.Configuracoes.Geral.SSLHttpLib := httpWinHttp;

    dmESocial.ACBreSocial.Configuracoes.Certificados.ArquivoPFX  := dmESocial.qryCertificadoDigital.FieldByName('DS_CAMINHOPFX').AsString;
   
end
else
begin

  //Assinando com o A3
  dmESocial.ACBreSocial.Configuracoes.Geral.SSLLib        := libCustom;
  dmESocial.ACBreSocial.Configuracoes.Geral.SSLHttpLib    := httpWinHttp;
  dmESocial.ACBreSocial.Configuracoes.Geral.SSLCryptLib   := cryWinCrypt;
  dmESocial.ACBreSocial.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2;

  dmESocial.ACBreSocial.Configuracoes.Certificados.NumeroSerie := dmESocial.qryCertificadoDigital.FieldByName('NR_SERIE').AsString;

end;

dmESocial.ACBreSocial.Configuracoes.Certificados.Senha       := TMetodos.fncCriptografia(Descriptografar, dmESocial.qryCertificadoDigital.FieldByName('DS_SENHA').AsString);

Editado por Paulo Aguiar Junior
Link para o comentário
Compartilhar em outros sites

10 minutos atrás, Paulo Aguiar Junior disse:

Joceando, bom dia!

Estou utilizando assim:

Nesse momento aqui já foi validado se ele associou o certificado cadastrado a empresa e tal...

Dessa forma estou enviando com A1 PFX, A1 instalado e A3.

//Quando usuário cadastrou o certificado pelo PFX

if dmESocial.qryCertificadoDigital.FieldByName('DS_CAMINHOPFX').AsString <> '' then
begin
    dmESocial.ACBreSocial.Configuracoes.Geral.SSLLib     := libOpenSSL;
    dmESocial.ACBreSocial.Configuracoes.Geral.SSLHttpLib := httpWinHttp;

    dmESocial.ACBreSocial.Configuracoes.Certificados.ArquivoPFX  := dmESocial.qryCertificadoDigital.FieldByName('DS_CAMINHOPFX').AsString;
   
end
else
begin

  //Assinando com o A3
  dmESocial.ACBreSocial.Configuracoes.Geral.SSLLib        := libCustom;
  dmESocial.ACBreSocial.Configuracoes.Geral.SSLHttpLib    := httpWinHttp;
  dmESocial.ACBreSocial.Configuracoes.Geral.SSLCryptLib   := cryWinCrypt;
  dmESocial.ACBreSocial.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2;

  dmESocial.ACBreSocial.Configuracoes.Certificados.NumeroSerie := dmESocial.qryCertificadoDigital.FieldByName('NR_SERIE').AsString;

end;

dmESocial.ACBreSocial.Configuracoes.Certificados.Senha       := TMetodos.fncCriptografia(Descriptografar, dmESocial.qryCertificadoDigital.FieldByName('DS_SENHA').AsString);

Bom dia Paulo, obrigado por postar um exemplo, vou seguir desta forma e ver se consigo assinar com A1 e A3, no momento só estou conseguindo usando o A1 com PFX, de outra forma não dá certo, talvez por causa das configurações que estou usando..

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

23 minutos atrás, Joceandro Perin disse:

Bom dia Paulo, obrigado por postar um exemplo, vou seguir desta forma e ver se consigo assinar com A1 e A3, no momento só estou conseguindo usando o A1 com PFX, de outra forma não dá certo, talvez por causa das configurações que estou usando..

Joceando, não estava funcionando mesmo nem o A3 nem o A1 instalado mesmo...

A gente fez a correção aqui na empresa, e enviamos, e o Rafael implementou de acordo com o padrão aqui do ACBr e anexou aqui.

Testei e está funcionando certinho também, provavelmente jájá eles versionam...

Valeu!

Link para o comentário
Compartilhar em outros sites

10 minutos atrás, Paulo Aguiar Junior disse:

Joceando, não estava funcionando mesmo nem o A3 nem o A1 instalado mesmo...

A gente fez a correção aqui na empresa, e enviamos, e o Rafael implementou de acordo com o padrão aqui do ACBr e anexou aqui.

Testei e está funcionando certinho também, provavelmente jájá eles versionam...

Valeu!

Ahh, entendi.. Legal, vou aguardar o versionamento então pra fazer os testes também.. Obrigado..

Link para o comentário
Compartilhar em outros sites

Com pfx estou conseguido funcionar e para usar sem o pfx o devo configurar.

 

Assim Funcionar com PFX

        ACBreSocial.Configuracoes.Geral.SSLLib := libOpenSSL;
        ACBreSocial.Configuracoes.Geral.SSLHttpLib := httpWinHttp;
        ACBreSocial.Configuracoes.Certificados.ArquivoPFX  := edtCertificadoDiretorio.Text;
        ACBreSocial.Configuracoes.Certificados.Senha       := eCertificadoSenha.Text;
        ACBreSocial1.Configuracoes.Certificados.NumeroSerie := '';

 

Se usar assim da erro na assinatura 256

          ACBreSocial1.Configuracoes.Geral.SSLLib        := libCustom;
          ACBreSocial1.Configuracoes.Geral.SSLHttpLib    := httpWinHttp;
          ACBreSocial1.Configuracoes.Geral.SSLCryptLib   := cryWinCrypt;

          ACBreSocial1.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2;

          AACBreSocial.Configuracoes.Certificados.ArquivoPFX  := '';
          AACBreSocial.Configuracoes.Certificados.Senha       := '';


          ACBreSocial1.Configuracoes.Certificados.NumeroSerie := eCertificadoNoSerie.Text;

  o erro é o Provedor de criptografia não suporta dgstSHA256

ps. so usei os fontes que ja estão no cvs

 

 

Editado por EdmarFrazao
Link para o comentário
Compartilhar em outros sites

  • Solution

Units alteradas e enviadas ao SVN.

Agradecimento ao @Paulo Aguiar Junior que graças as mods dele eu achei na documentação o problema que tinha na nossa unit anterior.

Segundo o padrão de assinatura quando a URI é vazia deve-se usar todo o xml para gerar o hash de assinatura.

  • Curtir 3
  • Obrigado 3

 

Link para o comentário
Compartilhar em outros sites

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