Clipper On Line • Ver Tópico - Problema com assinatura A3

Problema com assinatura A3

Projeto hbNFe (Nota Fiscal Eletronica/Danfe) para [x]Harbour

Moderador: Moderadores

 

Problema com assinatura A3

Mensagempor JoséQuintas » 07 Dez 2017 08:24

Passou a acontecer isto num cliente com certificado A3.
O esquisito é que é só neste cliente.
O bloco <X509DATA> está duplicado.
Apagando um dos blocos, ok.

Alguém já teve esse problema?

A solução vai ser colocar na rotina de assinatura para que se o bloco estiver duplicado, retirar um dos blocos.
Mas isto pode atrapalhar o uso da rotina pra NFSE.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Problema com assinatura A3

Mensagempor JoséQuintas » 07 Dez 2017 09:18

Lembrei da parte do fonte que parecia que não servia pra nada, até comentei aqui:

http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=16873&p=119468&hilit=parece+nada+assinatura#p119468

Tinha deixado como anotação no fonte.
Mas vendo o problema que aconteceu, alterei pra isto agora, ainda deixando o anterior anotado:

STATIC FUNCTION AssinaAjustaAssinado( cXml )

   LOCAL nPosIni, nPosFim

   cXml    := StrTran( cXml, Chr(10), "" )
   cXml    := StrTran( cXml, Chr(13), "" )
   nPosIni := RAt( [<SignatureValue>], cXml ) + Len( [<SignatureValue>] )
   cXml    := Substr( cXml, 1, nPosIni - 1 ) + StrTran( Substr( cXml, nPosIni ), " ", "" )

   // Ocorrência estranha: <X509Data> duplicado num cliente com A3
   nPosIni := At( "</X509Data><X509Data>", cXml )
   IF nPosIni != 0
      nPosFim := hb_At( "</X509Data>", cXml, nPosIni + 5 )
      cXml    := Substr( cXml, 1, nPosIni - 1 ) + Substr( cXml, nPosFim )
   ENDIF

   //nPosIni := hb_At( [<X509Certificate>], cXml, nPosIni ) - 1
   //nP      := nPosIni + 1
   //nPosFim := 0
   //DO WHILE nP <> 0
   //   nPosFim := nP
   //   nP      := hb_At( [<X509Certificate>], cXml, nP + 1 )
   //ENDDO
   //cXml := Substr( cXml, 1, nPosIni ) + Substr( cXml, nPosFim, Len( cXml ) )

   RETURN cXml


Em XHarbour não tem hb_At(), mas na sefazclass está resolvido em ze_XHarbour.prg, que pra XHarbour adiciona a função FUNCTION hb_At( cText, nStart, nEnd ); RETURN At( cText, nStart, nEnd )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Projeto hbNFe

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro