Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2225 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Olá a todos, gostaria de saber como faço para verificar se o digest value e um arquivo de BPe está correto ?

Seria para o caso de ocorrer alteração no arquivo, eu gostaria de poder calcular o digest e comparar com o arquivo, ou se o ACBr me traz esse retorno ?

Grato.

 

  • Consultores
Postado

Boa tarde Marcelo,

Não entendi bem o motivo dessa verificação, mas uma coisa é certa se você gerar o XML, assinar, alterar algo no XML e depois enviar a SEFAZ vai rejeitar.

Para que isso não ocorra a minha sugestão é só gerar o XML no momento do seu envio.

Ou seja, alimenta o componente com os dados lidos do banco de dados, execute o método Assinar, pois este se encarrega de gerar o XML, execute o método Validar e por fim o Enviar.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Olá Italo, 

Obrigado pela resposta. Minha dúvida seria em relação ao conteúdo do XML, pois recebo este arquivo xml de BPe de meu cliente e o importo para meu sistema, mas gostaria de validar o conteúdo do arquivo, fazendo o cálculo do digest e comparando com o a tag DisgestValue do arquivo e comparando como que eu calculei, para o caso do usuario alterar o arquivo e eu importar este arquivo com esta alteração.

Fazendo  cálculo e comparando com o que esta no arquivo tenho esta garantia, seria neste sentido.

Vi que o componente tem um método de validar assinatura mas usando desta forma:

      Result := vBPeCompleto.Bilhetes.LoadFromFile(FNomeArquivo);
      vBPeCompleto.Bilhetes.VerificarAssinatura(vMsg);


Mas ocorre este erro:

image.png.1d3e79ed84417d05731f026ec749e605.png

Seria ete o método ?

Ou se não for gostaria de saber se o ACBr tem alguma validação neste sentido (Validar o arquivo pelo Digest) ou como faço este cálculo ?

Grato

  • Consultores
Postado

Marcelo,

Acredito o erro que você tendo é devido a configuração do componente.

Outra coisa, para você gerar um DigestValue para comparar com o do XML, você iria precisar do certificado do seu cliente.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Italo,

 
Acredito ser possivel a validação sem a certificado, pois neste site "https://bpe-portal.sefazvirtual.rs.gov.br/Bpe/ValidadorXml", consigo fazer a validação, mas usando os mesmo métodos utilizados para validas a NFe e o CTe ( que fazem a validação do cálculo do digest ) não funcionam para o BPe e no site colocando o texto do BPe ele é validado, alterando qualquer informação ele rejeita o arquivo.
  • Moderadores
Postado
16 horas atrás, MarceloBaza disse:

Acredito ser possivel a validação sem a certificado, pois neste site "https://bpe-portal.sefazvirtual.rs.gov.br/Bpe/ValidadorXml", consigo fazer a validação, mas usando os mesmo métodos utilizados para validas a NFe e o CTe ( que fazem a validação do cálculo do digest ) não funcionam para o BPe e no site colocando o texto do BPe ele é validado, alterando qualquer informação ele rejeita o arquivo.

Uma coisa é validar a assinatura, outra é querer gerar novamente o DigestValue.

Validar a assinatura é possível, basta você configurar o componente como o Italo recomendou, no que se refere as configurações SSLLib do componente.

  • Curtir 2
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

BigWings,

Sim, entendo e o que preciso seria verificar se o componente BPe verifica se o conteúdo do arquivo bate com o digest que está no arquivo na tag DigestValue, recalculando de alguma forma e retornando o digest calculado ou verificando diretamente se o conteúdo  bate com o digest que está no arquivo.

Grato.

  • Moderadores
Postado
22 minutos atrás, MarceloBaza disse:

BigWings,

Sim, entendo e o que preciso seria verificar se o componente BPe verifica se o conteúdo do arquivo bate com o digest que está no arquivo na tag DigestValue, recalculando de alguma forma e retornando o digest calculado ou verificando diretamente se o conteúdo  bate com o digest que está no arquivo.

Grato.

Você pode:

- Comparar o digest value da assinatura com o digest value do protocolo:

ACBrBPe1.Bilhetes.Clear;
ACBrBPe1.Bilhetes.LoadFromFile(OpenDialog1.FileName, False);

if ACBrBPe1.Bilhetes[0].BPe.Signature.DigestValue <> ACBrBPe1.Bilhetes[0].BPe.procBPe.digVal then
  raise Exception.Create('DigestValue do documento não confere com o DigestValue do protocolo');

- Fazer a consulta do BPe para obter o DigestValue do protocolo retornado:

ACBrBPe1.Bilhetes.Clear;
ACBrBPe1.Bilhetes.LoadFromFile(OpenDialog1.FileName, False);
ACBrBPe1.Consultar;

if ACBrBPe1.Bilhetes[0].BPe.Signature.DigestValue <> ACBrBPe1.WebServices.Consulta.protBPe.digVal then
  raise Exception.Create('DigestValue do documento inválido');

 

Em 19/10/2018 at 16:35, MarceloBaza disse:

mas usando os mesmo métodos utilizados para validas a NFe e o CTe ( que fazem a validação do cálculo do digest )

Os componente ACBrNFe e ACBrCTe fazem a validação da assinatura, assim como o ACBrBPe. Um DigestValue incorreto incorreria em erro na validação da assinatura, então não vejo o motivo de insistir em validar apenas pelo digest.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

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