Ir para conteúdo
  • Cadastre-se

Problemas na geração da assinatura do QrCode 3 com certificado não exportável ....


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

Recommended Posts

Postado

Muito bom dia a todos:

Temos nossa aplicação NFCE e essa aplicação não está usando os componentes ACBr, apesar de termos aqui MDFE, CTE e NFSE utilizando o componente ACBr!

Estamos implementando a
Nota Técnica 2025.001 e preciso fazer a assinatura do Qrcode para a situação de contingencia, assim como solicitado na nota técnica, e pensei utilizar parte do componente ACBrCTe para isso, sendo assim coloquei o componente em meu formulário e implementei a procedure abaixo, porém está me retornando a falha "O Provedor de Criptografia não suporta o algoritmo", e no fórum vi que se deixar o certificado como exportável funciona, mas o cliente não permite deixar o certificado exportável, alguma ideia para solucionar esse problema?

function TF_NFCE1000.AssinaStringDigitalmente(W_Dados: String): String;
begin
    Result := '';
    ACBrCTe.Configuracoes.Certificados.NumeroSerie := WVG_Certificado;
    ACBrCTe.SSL.CarregarCertificadoSeNecessario;
    ACBrCTe.SSL.CarregarCertificado;
    Result := ACBrCTe.SSL.CalcHash(W_Dados, dgstSHA256, outBase64, True);
end;

______________________________________________________

Nilton Olher Serafim
Analista de Sistema - Inovação Tecnologia 
Discord: @niltonolher_76258
WhatsApp: 37-99962-0397
  • Consultores
Postado

ou usa o pfx original ou grava ele no banco eassim não precisa instalar ele no micro

carrega direto pro componente e assim ninguém vai ter ele

mas indiferente o clietne vai precisar , mesmo que coloque openssl ele vai precisar 

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado (editado)

Muito bom dia, Juliomar!

Agradeço a sua atenção e o rapido atendimento!

Me desculpe mas não entendi muito bem, pois utilizamos em todos os documentos eletrônico utilizando os componentes ACBr (MDFE, CTE e NFSE), com certificado não exportável e não estão em nosso banco, e funciona perfeitamente!

Inclusive retirei essa rotina do componente ACBrCTe, que em contingência(FSDA) do Sefaz de Minas Gerais, utiliza da mesma assinatura para o QrCode, como abaixo, e funciona perfeitamente, se puder me esclarecer melhor ficarei muito grato!

function TACBrCTe.GetURLQRCode(const CUF: integer;
  const TipoAmbiente: TpcnTipoAmbiente; const TipoEmissao: TpcnTipoEmissao;
  const AChaveCTe: String; const Versao: Double): String;
var
  idCTe, sEntrada, urlUF, Passo2, sign: String;
//  VersaoDFe: TVersaoCTe;
begin
//  VersaoDFe := DblToVersaoCTe(ok, Versao);  // Deixado para usu futuro

  if TipoAmbiente = taHomologacao then
  begin
    if ( (TipoEmissao in [teSVCSP]) and (CUF in [41, 50, 51]) ) then
      urlUF := LerURLDeParams('CTe', GetUFFormaEmissao, TipoAmbiente, 'URL-QRCode', 0)
    else
      urlUF := LerURLDeParams('CTe', CUFtoUF(CUF), TipoAmbiente, 'URL-QRCode', 0);
  end
  else
    urlUF := LerURLDeParams('CTe', CUFtoUF(CUF), TipoAmbiente, 'URL-QRCode', 0);

  if Pos('?', urlUF) <= 0 then
    urlUF := urlUF + '?';

  idCTe := OnlyNumber(AChaveCTe);

  // Passo 1
  sEntrada := 'chCTe=' + idCTe + '&tpAmb=' + TpAmbToStr(TipoAmbiente);

  // Passo 2 calcular o SHA-1 da string idCTe se o Tipo de Emissão for EPEC ou FSDA
  if TipoEmissao in [teDPEC, teFSDA] then
  begin
    // Tipo de Emissão em Contingência
    SSL.CarregarCertificadoSeNecessario;
    sign := SSL.CalcHash(idCTe, dgstSHA1, outBase64, True);
    Passo2 := '&sign=' + sign;

    sEntrada := sEntrada + Passo2;
  end;

  Result := urlUF + sEntrada;
end;

Editado por nolher

______________________________________________________

Nilton Olher Serafim
Analista de Sistema - Inovação Tecnologia 
Discord: @niltonolher_76258
WhatsApp: 37-99962-0397
  • Consultores
Postado
29 minutos atrás, nolher disse:

Me desculpe mas não entendi muito bem, pois utilizamos em todos os documentos eletrônico utilizando os componentes ACBr (MDFE, CTE e NFSE), com certificado não exportável e não estão em nosso banco, e funciona perfeitamente!

 a sugestão que dei é gravar o pfx no banco e carregar direto para os componentes. sem ninguém ter acesso a ele.

30 minutos atrás, nolher disse:

Inclusive retirei essa rotina do componente ACBrCTe, que em contingência(FSDA) do Sefaz de Minas Gerais, utiliza da mesma assinatura para o QrCode, como abaixo, e funciona perfeitamente, se puder me esclarecer melhor ficarei muito grato!

mesmo ele não precisando para gerar o qrcode ele vai precisar pra poder enviar. 

 

caso tenha alguma sugestão de mudanças pode anexar aqui no fórum

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

Juliomar, mais uma vez, agradeço a sua atenção e o rápido atendimento!

A transmissão do NFCE já realizamos sem problemas, apenas estamos implementando a normal técnica referente a assinatura no QrCode, as demais ações funcionam perfeitamente!

O que realmente estamos precisando é realizar a assinatura da string referente ao QrCode!

 Na verdade o que gostaríamos é  apenas de usar as funcionalidades do procedimento abaixo, e sem que houvesse necessidade de ter o certificado instalado como exportável!

SSL.CalcHash(idCTe, dgstSHA1, outBase64, True); 

______________________________________________________

Nilton Olher Serafim
Analista de Sistema - Inovação Tecnologia 
Discord: @niltonolher_76258
WhatsApp: 37-99962-0397
  • Moderadores
  • Solution
Postado
2 minutos atrás, nolher disse:

SSL.CalcHash(idCTe, dgstSHA1, outBase64, True); 

SHA1 deve funcionar, e é o que o ACBr está usando na geração do QrCode 3.

SHA256 por alguma razão precisa do certificado exportável ou pfx.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Muitíssimo obrigado, BigWings

Show, resolveu o problema!

Muito bom mesmo!

Pode ser fechado esse tópico como resolvido!

______________________________________________________

Nilton Olher Serafim
Analista de Sistema - Inovação Tecnologia 
Discord: @niltonolher_76258
WhatsApp: 37-99962-0397
  • Este tópico foi criado há 329 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.