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á 2464 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

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
Postado (editado)
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
Postado
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
Postado
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!

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

Postado (editado)

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
  • Solution
Postado

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

 

  • 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.
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.