-
Notifications
You must be signed in to change notification settings - Fork 63
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Falha na validação do Hash da parte AuditFile #67
Comments
Para validar as assinaturas é necessário a chave pública. Atenção que esse SAF-T tem atributos que não pertencem ao schema e isso pode resultar num problema ao validar o ficheiro.
|
Obrigado cryptolopes pela resposta. SACWEBPublicKey.txt |
As assinaturas estão corretas. $ echo -n "eLCV8o71tLbr+ANWiPUNX9TuotQgyCHGWsuwbIj00LAIUhIqJlVtIs5eWDEPLdLsImglfH4gBIS8qD5EgVKQ7F1IXde4cd+7lsX2axqsUX5Oq8ReLwRCx0/lx65BBzxqOXYAw9hU9Fc/io0VBI5YDuSvseaIpG/zWE4EIy3Z6NI=" | openssl enc -base64 -d -A > testing/sha1.sign
$ echo -n "2020-05-14;2020-05-14T14:41:15;FT UUFC20/8305;62824.26;Nm2AdcYT33BvA04ymMj4lYhHEKn8V3OofAoWctnuYoKb7zBNLJI3gprSfXdqR+6qIYtT64sGf9Fyp5gcFEm4VCNKDENh0tDtUsky0XMyoUk5y5tsQF85tBVFNa7YecsPuZwFyogYmU1VSXvvZIPSh9YvBjUeXtPpAx2BTnYSHHg=" | openssl dgst -sha1 -verify testing/SACWEBPublicKey.txt -signature testing/sha1.sign
Verified OK $ echo -n "SbCiFdQNuuraErKgzRH/ooi6vRiY2mATPzUXKbFqLsQMo68jjAMJVlH0vlAqkbkBUNmofejpwV0n9FKr3M2S9Zri/0eyZ0VofgPSBnCaQQxl/I7LN4KnetH1mEoqTR/IFfsfn7gv1aGyb1FYYeAzoig9oUGpc18LIkl3FfJ4wsA=" | openssl enc -base64 -d -A > testing/sha1.sign
$ echo -n "2020-05-14;2020-05-14T14:43:53;FT UUFC20/8306;353267.76;eLCV8o71tLbr+ANWiPUNX9TuotQgyCHGWsuwbIj00LAIUhIqJlVtIs5eWDEPLdLsImglfH4gBIS8qD5EgVKQ7F1IXde4cd+7lsX2axqsUX5Oq8ReLwRCx0/lx65BBzxqOXYAw9hU9Fc/io0VBI5YDuSvseaIpG/zWE4EIy3Z6NI=" | openssl dgst -sha1 -verify testing/SACWEBPublicKey.txt -signature testing/sha1.sign
Verified OK Possivelmente tem que ver com a plataforma de validação da AGT e insisto nos atributos que estão a mais, que podem estar a dificultar o processo. Reparei também que existem elementos como <MovementEndTime>2020-05-14T14:52:03</MovementEndTime>
<MovementStartTime>2020-05-14T14:52:03</MovementStartTime> |
Duplicate of #49 |
Criar assinaturas através do algoritmo RSAAs assinaturas são geradas através do algoritmo RSA (algoritmo de criptografia de dados que usa o sistema de chaves assimétricas, chave pública e chave privada). Para o efeito, cada fabricante de software necessita de criar o seu par de chaves. A chave privada é do conhecimento exclusivo do fabricante, devendo ser protegida contra disclosure a todo o custo. Já a chave pública, tal como o nome indica é pública e pode ser fornecida a qualquer entidade que tenha por fim o uso dos dados obtidos a partir da chave privada, no caso a Administração Geral Tributária (AGT). Para que se tenha uma noção da importância da chave privada e da importância desta ter que ser preservada apenas no domínio do fabricante, caso seja conhecida por terceiros, estes podem usá-la para fins ilícitos. Por exemplo, assinar documentos em nome de ou fazendo-se passar por. Alguns comandos gerais de OpenSSL# Criar um certificado-auto assinado
# Criar uma chave privada
openssl req -x509 -sha1 -nodes -days 365 -newkey rsa:1024 -keyout private.key -out certificate.crt
# Em alternativa, para criar apenas uma chave privada
openssl genrsa -out private.key 1024
# Remover a passphrase de uma chave privada (limpar a chave privada)
openssl rsa -in private.key -out newprivate.key
# Guardar chave pública
openssl rsa -pubout -in private.key -out public.key MétodoDe forma simples, o método usado consiste na assinatura do Por fim assinatura que se quer obter para o # Criar mensagem
echo -n "hello world!" > message.txt
# Calcular o valor do hash SHA1
sha1sum 1 message.txt
430ce34d020724ed75a196dfc2ad67c77772d169 message.txt
# O hash SHA1 da mensagem ou do ficheiro são idênticos, como se pode verificar
echo -n "hello world!" | sha1sum
430ce34d020724ed75a196dfc2ad67c77772d169 - Comandos de OpenSSL para criar e validar a assinatura de uma mensagem# Assinar mensagem/ficheiro usando o digest sha1
openssl dgst -sha1 -sign private.key -out sha1.sign message.txt
# Codificar a assinatura em base64
# O parâmetro -A é usado para guardar o valor apenas numa linha
openssl enc -base64 -in sha1.sign -out sign.b64 -A
# Converter de base64 para o formato incial da assinatura
openssl enc -base64 -in sign.b64 -out b64.sign -d -A
# Verificar a assinatura do ficheiro
openssl dgst -sha1 -verify public.key -signature sha1.sign message.txt
Verified OK
openssl dgst -sha1 -verify public.key -signature b64.sign message.txt
Verified OK Características da mensagem e regras para a criação das assinaturas dos documentosAs regras estipulam que a mensagem deve ser composta pela concatenação dos elementos que se seguem, usando
O objetivo é estabelecer uma relação em cadeia entre todos os documentos de uma determinada série de documentos. # Exemplo de mensagem do primeiro documento de uma série
echo -n "2020-01-01;2020-01-01T00:30:50;FT SPOS1/1;2756.78;"
# Exemplo de mensagem do segundo (e restantes) documentos
# O separador ; deixa de existir no fim porque após o hash do documento anterior não existe mais nenhum campo para separar
echo -n "2020-01-01;2020-01-01T00:35:10;FT SPOS1/2;8000.00;vBCRgoKYCNWim/cZe8aaJhKcP3ZVNkiSnjCi2f0dC6t/Xdd+bgutrZjL7xd/JwQT2Uq4lxSaPkKpZfIlUWu7K+qRq2v6N1UkXes0bUciHV2FaAo2paV/DCpKP836jDgQzEsI6/lCvfUK7ta24M9B2dr+A2n3VLXWM3T0j8PlHUo=" Deste modo todos os documentos vão permanecer interligados entre si numa cadeia em que é sempre possível verificar o último depende do anterior e assim sucessivamente. Caso um determinado documento sofra uma alteração ao nível dos elementos contidos na mensagem ou seja removido por alguma razão, a cadeia sofre uma rutura, o que é possível de verificar facilmente através da chave pública. Links e mais informação |
Muito boa tarde estimados Segundo String assidado é "2020-08-09;2020-08-09T16:23:59;FR 2020/62;60.00;p/VOPbp87I8Fmto+5XITeqrhl4nVrmJncqpoyRPfpBj/vZgoS3zZqnZOdEMCdZhsrzdoLPmKgVK8t2asIr+xSJ/u8gpRwAxvDbR6ziKDoNb8EmlC1ltMqRu7HpH+NVMPkdUMUIGLA8fvf54BsX28fzousNAjbSJm4S2LHSTqLFw=" Aqui esta os meus meus ficheiros em anexo |
Muito boa tarde estimados Gerou o seguinte assinatura Hash UOwzONA+IfZ1nYCGQcJ8Ohqad/6fl5FBA4GiLe3OKBdxD9QM+7xSAO9ij6bvzY1Vi/gsSGIWxJECuJVZ9XuPB4MujGUUxYpn0p86rkXLzhokTYojO2Z3f8pnRoUGdY8AvoAoUAheQM3XjiO1wbf8TIyL7xoQz42N/AdWxZdFVc0= Segundo String assidado é "2020-08-07;2020-08-07T16:42:47;FR 2020/65;39900.00;UOwzONA+IfZ1nYCGQcJ8Ohqad/6fl5FBA4GiLe3OKBdxD9QM+7xSAO9ij6bvzY1Vi/gsSGIWxJECuJVZ9XuPB4MujGUUxYpn0p86rkXLzhokTYojO2Z3f8pnRoUGdY8AvoAoUAheQM3XjiO1wbf8TIyL7xoQz42N/AdWxZdFVc0=" Gerou o seguinte assinatura Hash lq9q1kmATWAmFjaDVqMlqHI3XLkyXJPFrUq2jK4UKCWogfjMF8W7jVqnHbddPD6cUiXT3eGcLFN7jWuYwjHuPQvRAG7XhPw3byw5mZm3L1PuvZ/Wwm0Rvi3/45p9KhftigawDexJJIqctV7vNUc34GhPcUXAlwn0C7O0EXoC1Cg= Já fiz a verificação com os seguintes comando usanda a minha chave publica openssl dgst -sha1 -verify sisvendaPublica.pem -signature Registo1.sha1 Registo1.txt verificação OK openssl dgst -sha1 -verify sisvendaPublica.pem -signature Registo2.sha1 Registo2.txt verificação OK |
Boa tarde, Alguém obteve a certificação desenvolvendo a aplicação em C#? Alguém pode ajudar? |
Muito bom dia caríssimo também tive esse problema mais já foi superado, eu
poderia lhe ajudar mais infelizmente a minha linguagem é java
Analise primeiro o teu xds comparando com xml que produz o seu software
outra coisa o conteúdo assinado não deve ter a mesmo InvoiceNo exemplo
O primeiro conteúdo 2022-02-02;2022-02-02T09:18:57;FR1/01;1200.57; = Hash1
O segundo Conteúdo 2022-02-02;2022-02-02T09:18:57;FR2/02;57.32;Hash1 =
Hash2
Se não der, podes entrar em contacto no seguinte terminal 924549673
Java e C# não foge muito
Em sáb., 9 de abr. de 2022 às 16:52, Adilson da Costa <
***@***.***> escreveu:
… Boa tarde, Alguém obteve a certificação desenvolvendo a aplicação em C#?
Estou com o erro na validação do segundo Hash já a um tempo.
Alguém pode ajudar?
—
Reply to this email directly, view it on GitHub
<#67 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AF7EXVN6UOUASJ73AL5ERNLVEGRSRANCNFSM4NHXUHNQ>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Este erro pode também ocorrer quando o campo SoftwareValidationNumber, no cabeçalho for 0. Nestes casos, o hash deve ser 0 para poder ser válido. Contudo, isto aplica-se apenas a importação de informações de softwares pré-SAFT. Todos os softwares certificados devem conter um SoftwareValidationNumber no formato XXX/AGT/YYYY, onde XXX é o número atribuído pela AGT, e YYYY é o ano da certificação. Para quem está a validar o software, devem colocar 000/AGT/YYYY, onde YYYY é o ano de válido. Mas convém colocar o ano de validação, só para quando actualizarem não cometerem mais erros. Portanto, para 2022, coloquem 000/AGT/2022 no SoftwareValidationNumber, tal como é demonstrado abaixo:
|
Eu posso. Me puxa no whatsapp. 935793301. Tenho 2 apps validadas e com c#
A quinta, 26/05/2022, 21:17, Fidel H Viegas ***@***.***>
escreveu:
… Este erro pode também ocorrer quando o campo SoftwareValidationNumber, no
cabeçalho for 0. Nestes casos, o hash deve ser 0 para poder ser válido.
Contudo, isto aplica-se apenas a importação de informações de softwares
pré-SAFT. Todos os softwares certificados devem conter um
SoftwareValidationNumber no formato XXX/AGT/YYYY, onde XXX é o número
atribuído pela AGT, e YYYY é o ano da certificação.
Para quem está a validar o software, devem colocar 000/AGT/YYYY, onde YYYY
é o ano de válido. Mas convém colocar o ano de validação, só para quando
actualizarem não cometerem mais erros. Portanto, para 2022, coloquem
000/AGT/2022 no SoftwareValidationNumber, tal como é demonstrado abaixo:
<SoftwareValidationNumber>000/AGT/2022</SoftwareValidationNumber>
—
Reply to this email directly, view it on GitHub
<#67 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AMBB23ZGS6QBUJJF5IVOX7LVL7L5PANCNFSM4NHXUHNQ>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
Boa tarde,
Desde à 1 mês atrás, começamos a ter um problema de validação do ficheiro SAFT-AO por causa do HASH.
O erro que dá na validação do ficheiro é:
Estive a verificar e a verificar novamente todos os valores e a criação do HASH e parece tudo ok.´
ExcelDados.xlsx
No excel em anexo, além dos dados das faturas, tenho uma coluna com o HASH gerado e outro (HASHORI) com o HASH antes de ser encriptado.
Envio também o ficheiro XML para verificarem que está com os dados ok.
SAFTAO.txt
Nota: o problema com a validação do HASH começou à relativamente pouco tempo, já tivemos ficheiros submetidos e validados e a forma de fazer o HASH é a mesma.
Agradeço a Vossa ajuda por favor.
Obrigado.
Ricardo Sousa
The text was updated successfully, but these errors were encountered: