Closed Marcosinffoco closed 4 years ago
@Marcosinffoco O detalhe na sua questão está ótimo.
O problema parece-me estar no último ;
O ;
atua como separador e no último valor, quando este é a assinatura do último documento, não há ;
Bom dia, Então nesta linha do texto.inf: 2020-03-20;2020-03-20T18:44:24;FR FR20/17;6899.00; rK38X1LE487MaGvI4M14riAOBMPtxACc+Xvy24xTiVkyHmgvS8Umhz+GeotUOgNSk/KRLgf2ZTdFBrWIR97IR9g06uPZ9HLSRrdSvSr1fblA+Z2svH5TJytcaIV7yK9aJkAOBpfOAL2rDmCfQ4Or7znWmutblcX9eiJjjgas5R4=; Este ultimo caracter de separação dos argumentos, não é para ter, correcto?
Infelizmente, já tentei isto..rs
Bem, neste momento estou trabalhando no windows, e estou usando o openssl 64.
E comecei a pouco tempo a rastrear o ficheiro com o XMLPAD para windows.
Ainda não consegui comparar com o XSD para ver se tem erros. Pois ainda não compreendi como fazer, mas vou logo contornar isto.
Já andei muito quebrando a cabeça sozinho.
Só tenho mesmo esta pendência, pois no restante, valida sem problemas.
@cryptolopes , Consegui. tudo funcionando como um relógio suíço.
O Luis Salazar tinha me despertado uma observação que até então não tinha entendido.
O GROSSTOTAL que influencia isto tudo e depois tudo que vem antes em relação de como publicar as casas decimais em algumas informações, então, para que ainda esta aventurando nisto, dou a dica: 1) rever tudo que vem antes em termos de casas decimais. 2) cuidado com valores arredondados e ter visão de como esta no banco de dados e no script 3) ter certeza dos totais que estão sendo acumulados 4) E O MAIS IMPORTANTE, O GROSSTOTAL QUE PUBLICA NA CHAVE HASH TEM DE SER IDENTIFICO AO GROSSTOTAL. 5) E POR FIM. CUIDADO PARA NÃO USAR A VIRGULA COMO SEPARADOR DECIMAL
Este é o meu conselho, pois penei muito nisto até ontem.
Bem, boa sorte para quem for ao teste de conformidade,.
PS. cuidado com as armadilhas nos teste. Ter bastante cautela no que o programa faz.
Já tentei varias vesses e não consigo.
2021-01-29;2021-01-29T15:10:50;FT S2021/3;32492.00;bS7N55SGusdjKGgL8zT/UBBnkxqyLjQzGLs/FPFWyDCecYRrOBshp6PBbAtwkLReMcMmcWtUm0RypMSxUBPdwuLM9TWG1l6hOf5G7g6kUf/TbulLgilTe1dRL7sV8yzmlxm6sm5g2YK2L9QahCjkrZRZFmhCT4upnfsDj+u3RV0=
Já tentei varias vesses e não consigo.
https://github.com/assoft-portugal/SAF-T-AO/issues/49#issuecomment-589232955
Estou usando o openssl no windows e fazendo passagem de linha de comando.
PRIMEIRO DOCUMENTO FACTURA PARA ASSINATURA
CONTEUDO DO FICHEIRO
texto.inf
2020-03-20;2020-03-20T18:27:39;FR FR20/16;178845.15;
primeira linha de comando Assinar documentos usando a chave privada - valor guardada num ficheiro
openssl.exe dgst -sha1 -sign keypriv.pem -out registoout.sh1 texto.inf
O openssl cria então o ficheiro
registoout.sh1
Lá dentro esta escrito com caracteres especias.
APÓS ISTO ENVIO A LINHA DE COMANDO PARA codificar assinatura em base64
openssl.exe enc -in registoout.sh1 -base64 -A -out registoout.b64
O CONTEUDO DO FICHEIRO registoout.b64 É ESTE ABAIXO QUE É A PRÓPRIA CHAVE HASH
Aproveitei e verifiquei se esta correto com a chave publica e a mensagem é OK. verificar assinatura com a chave pública
openssl.exe dgst -sha1 -verify keypublic.pem -signature registoout.sh1 texto.inf
esta dado verificação OK
Segunda factura
conteudo do ficheiro
texto.inf
2020-03-20;2020-03-20T18:44:24;FR FR20/17;6899.00; rK38X1LE487MaGvI4M14riAOBMPtxACc+Xvy24xTiVkyHmgvS8Umhz+GeotUOgNSk/KRLgf2ZTdFBrWIR97IR9g06uPZ9HLSRrdSvSr1fblA+Z2svH5TJytcaIV7yK9aJkAOBpfOAL2rDmCfQ4Or7znWmutblcX9eiJjjgas5R4=;
Atenção, obedeci o comando colocando o caracter
;
para separar todos os argumentos.Criando a assinatura
openssl.exe dgst -sha1 -sign keypriv.pem -out registoout.sh1 texto.inf
Conteudo do ficheiro registoout.sh1
ǶÇÀ°êÒúöFéÍ[„¦Mõg)ô„G£âå^6Ûü
4¦ßËÁ®G+r@Ô¥ºäŒ]ì¿LŸ dßcÎyé1¯m¯íÍ·ÐÞk2©28e¡wÂÄ?bL‚DaêY¨‚TÑa£ÝwÔ™N¶!Ü2¥¿h~<sup>3</sup>Jÿ—à
APÓS ISTO ENVIO A LINHA DE COMANDO PARA codificar assinatura em base64
openssl.exe enc -in registoout.sh1 -base64 -A -out registoout.b64
Esta é a segunda chave HASH
verificação
openssl.exe dgst -sha1 -verify keypublic.pem -signature registoout.sh1 texto.inf
esta dado verificação OKrevi diversas vezes e infelizmente no site de testes da AGT continua o meu calvário.
Já desisti e não tenho mais opções.
Li em algum momento que o próprio site de testes tinha algum problema.
Vi os dois tópicos que fala sobre este assunto, mas li e reli e fiz várias tentativa e nada.