-
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
Validação das HASH geradas #49
Comments
SAF-T
O SAF-T não respeita a última versão do schema. testing/SAFT-AO-Feb-2020_facturacao.xml:348: element WithholdingTaxAmount: Schemas validity error : Element '{urn:OECD:StandardAuditFile-Tax:AO_1.01_01}WithholdingTaxAmount': This element is not expected. Expected is ( {urn:OECD:StandardAuditFile-Tax:AO_1.01_01}WithholdingTaxType ).
testing/SAFT-AO-Feb-2020_facturacao.xml:404: element WithholdingTaxAmount: Schemas validity error : Element '{urn:OECD:StandardAuditFile-Tax:AO_1.01_01}WithholdingTaxAmount': This element is not expected. Expected is ( {urn:OECD:StandardAuditFile-Tax:AO_1.01_01}WithholdingTaxType ).
testing/SAFT-AO-Feb-2020_facturacao.xml:483: element WithholdingTaxAmount: Schemas validity error : Element '{urn:OECD:StandardAuditFile-Tax:AO_1.01_01}WithholdingTaxAmount': This element is not expected. Expected is ( {urn:OECD:StandardAuditFile-Tax:AO_1.01_01}WithholdingTaxType ).
testing/SAFT-AO-Feb-2020_facturacao.xml fails to validate validação da estrutura: $ xmllint --schema XSD/SAFTAO1.01_01.xsd testing/SAFT-AO-Feb-2020_facturacao.xml --noout Assinaturas
Verification Failure(1) Parece-me que uma das causas possível é a chave privada não ter 1024 bits. Exemplos de como fazer usando o OpenSSLAssinar documentos usando a chave privada$ echo -n 'mystring' | openssl dgst -sha1 -sign myprivate.pem -out sha1.sign ou se o valor estiver guardado num ficheiro
|
Caro Nelson, antes de mais, muito obrigado pela ajuda.
e a assinar o documento do seguinte modo: $string2encrypt = $sales_data['sale_time'].';'.$doctype.';'.$gov_seriesprefix.'/'.$new_sale_number.';'.$sales_data['to este ultimo resultado, com 172 bytes, é escrito na base da dados. parece-me equivalente ao que me envia para fazer do command line do opensll ... |
Entretanto gerei uma factura 1 e uma factura 2 e gerei as respectivas hash ecriptadas, uma de cada vez, com os comandos do openssl, com base na string a encriptar e coloquei essas hash no xml. Continuo com o mesmo erro de hash invalida. Podem tentar do seu lado a ver se é a minha chave privada que está errada ? |
Obrigado! O problema não era apenas esse, era na chamada da assinatura mas já está resolvido.
|
Parece-me existir aqui um valor em falta, o Atenção, é obrigatório que cada elemento esteja formatado de acordo com o schema:
Parâmetros:
|
@pcasqueiro como resolveu esta questão. Estou com exactamente o mesmo erro. Se tiver apenas uma factura ele valida sem problemas mas quando tenho mais facturas no ficheiro XML apresenta este erro a partir da segunda factura. |
Na verdade o sistema não valida a primeira HASH, apenas as seguintes. No meu caso tinha dois problemas: a string não estava a incluir o systemdate e estava a usar uma função errada para fazer a assinatura. No issue pode ver a função correcta do openssl
|
@pcasqueiro Refere-se a esta mensagem? Usei o código acima e sem sucesso. Tu criaste o hash no acto da emissão da factura ou apenas no acto da exportação do ficheiro saft? Eu tenho gerado o hash no acto da emissão do documento e durante a exportação do ficheiro SAFT apenas faço a leitura das facturas (incluindo o hash). Cmpts |
@omdesignz |
Caro @cryptolopes, a classe foi simplesmente para criar o par de chaves (primeira e única vez). Agora as outras classes do sistema implementam a função "encrypt". Talvez tinha que ser claro e informar que devem apenas ver a função encrypt. Cmpts |
@omdesignz |
|
Copia mesmo o valor de |
$data = 2020-01-01;2020-01-01T15:56:56;FT 2020/1;2700.00 |
@cryptolopes algum feedback que possa me dar? Até ao momento continuo com dificuldades ao validar o campo hash dos documentos no portal da AGT. |
Olá @omdesignz Falta um $data = 2020-01-01;2020-01-01T15:56:56;FT 2020/1;2700.00;
$digest = 5bc0529b6136d9e58fb8dc585427a95a7024d0e7 ver #49 (comment) |
Mesmo quando não tem “lasthash” leva esse separador “;” após o total ?
|
@cryptolopes muito obrigado pelo feedback. Já estava a procura de outras formas de criar a assinatura. Vou reverter as alterações feitas, incluir o ; após o GrossTotal e voltar a testar. Obrigado |
Sim. O |
Caros Produtores, Após várias tentativas e diagnósticos na nossa classe de gerar o hash para cada documento, finalmente conseguimos gerar um hash validado com êxito no portal da AGT. Alguns "GOTCHAS" que podemos frisar:
Estamos gratos pelos inputs do @pcasqueiro e @cryptolopes. Esperamos poder ajudar alguém que possa ter a mesma dificuldade. |
Já tinha colocado está informação neste mesmo ticket 😉
On 7 Mar 2020, at 18:53, omdesignz <notifications@github.com> wrote:
Caros Produtores,
Boa tarde.
Após várias tentativas e diagnósticos na nossa classe de gerar o hash para cada documento, finalmente conseguimos gerar um hash validado com êxito no portal da AGT.
Alguns "GOTCHAS" que podemos frisar:
1. O comando para a criação da assinatura no instrutivo fornecido pela AGT levou-nos a crer que podemos seguir as instruções linha por linha, que não devia ser, visto que não estamos a fazer uso da linha de comandos. Para os produtores que fazem uso da linha de comandos as instruções funcionam de uma forma impecável. Contudo, para o nosso caso, usando PHP e gerando o hash de uma dinâmica sem recorrer a linha de comandos e nem mesmo criar ficheiros os comandos diferem.
openssl dgst -sha1 -sign ChavePrivada.pem -out Registo1.sha1 Registo1.txt
* Não precisamos criar o digest da informação a ser assinada porque o mesmo é criado automaticamente com a função openssl_sign($data, $signature, $private_key, OPENSSL_ALGO_SHA1);
1. Como o código final e funcional, temos o seguinte:
[code_data_sign_AGT]<https://user-images.githubusercontent.com/2884479/76148168-f4ba3080-60a3-11ea-9220-7301c0e4ca7b.png>
Estamos gratos pelos inputs do @pcasqueiro<https://github.com/pcasqueiro> e @cryptolopes<https://github.com/cryptolopes>. Esperamos poder ajudar alguém que possa ter a mesma dificuldade.
|
Infelizmente o código: Não funcionou connosco. |
Boa tarde caríssimos, Pretendo algumas dicas de como encriptar os dados usando a criptografia RSA, quando o tamanho do dado a encriptar é superior ao tamanho da chave (1024), e garantir que o texto encriptado não passe dos 172 bytes, usando a aplicação OpenSSL corre bem, mais ao usar o C#, ou o VB.NET me deparo com a dificuldade acima exposta. Osvaldo Mateus |
@cryptolopes , grato pela pronta resposta, por acaso já acedi varias vezes o link sugerido, mais não optive sucesso, ja tentei importar de alguma forma uma biblioteca OpenSSL, mais mesmo assim não obtive sucesso, importa referir que quando se trata do primeiro registo, a encriptação corre com sucesso, mais a partir do segundo registo começam os erros |
Porque não usas o openssl no .net ?
Note: This example requires Chilkat v9.5.0.71 or later.
Chilkat .NET Downloads
Chilkat .NET Assemblies<http://www.chilkatsoft.com/downloads_DotNet.asp>
Chilkat for .NET Core<http://www.chilkatsoft.com/dotnet-core.asp>
Chilkat for Mono<http://www.chilkatsoft.com/mono.asp>
```vb
Dim crypt As New Chilkat.Crypt2<http://www.chilkatsoft.com/refdoc/vbnetCrypt2Ref.html>
Dim success As Boolean = crypt.UnlockComponent("Anything for 30-day trial")
If (success <> True) Then
Debug.WriteLine(crypt.LastErrorText)
Exit Sub
```
|
@cryptolopes , a grande questão é que a biblioteca Chilkat deve ser desbloqueada. |
@pcasqueiro , grato pela resposta, o projecto acima serve apenas para criar certificados, assinar digitalmente. não permite criptografar e decriptografar,. |
Amanhã vou tentar testar mas na realidade trata-se de assinar … as funções que se usam do OpenSSL são apenas:
openssl_sign($string2encrypt, $signed, $privKey, "sha1");
$my64 = base64_encode($signed);
From: vd-king <notifications@github.com>
Sent: 22 de abril de 2020 20:21
To: assoft-portugal/SAF-T-AO <SAF-T-AO@noreply.github.com>
Cc: Pedro Casqueiro <pcasqueiro@leya.com>; Mention <mention@noreply.github.com>
Subject: Re: [assoft-portugal/SAF-T-AO] Validação das HASH geradas (#49)
@pcasqueiro<https://github.com/pcasqueiro> , grato pela resposta, o projecto acima serve apenas para criar certificados, assinar digitalmente. não permite criptografar e decriptografar,.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#49 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ANTSTOXYHMQ22DFTFHRA5RTRN47SXANCNFSM4KYSWPHA>.
[ { "@context": "http://schema.org", "@type": "EmailMessage", "potentialAction": { "@type": "ViewAction", "target": "#49 (comment)", "url": "#49 (comment)", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { "@type": "Organization", "name": "GitHub", "url": "https://github.com" } } ]
|
O que precisa è de assinar digitalmente, as funções de OpenSSL a usar são:
On 22 Apr 2020, at 20:21, vd-king <notifications@github.com> wrote:
@pcasqueiro<https://github.com/pcasqueiro> , grato pela resposta, o projecto acima serve apenas para criar certificados, assinar digitalmente. não permite criptografar e decriptografar,.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#49 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ANTSTOXYHMQ22DFTFHRA5RTRN47SXANCNFSM4KYSWPHA>.
[ { "@context": "http://schema.org", "@type": "EmailMessage", "potentialAction": { "@type": "ViewAction", "target": "#49 (comment)", "url": "#49 (comment)", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { "@type": "Organization", "name": "GitHub", "url": "https://github.com" } } ]
|
Boa noite @pcasqueiro , grato pela resposta , ficarei aguardar a resposta do teste. |
Boa tarde @pcasqueiro , alguma novidade sobre os testes. |
Boa tarde, Estou neste momento com o processo de certificação em curso e o unico ponto pendente é o SAFT. "Falha na validação do hash da parte AuditFile.SourceDocuments.SalesInvoice.2Invoice" Analisei as respostas a este issue e penso que todos os pontos estão correto. deixo a hash string base da fatura que é referenciada no erro: 2020-05-22;2020-05-22T16:29:38;FT 201/2020000002;30000.00;HZtWynzU3k7bNsF4/F+VpibbOgZc5CZ5858RNNNHqQHmvaQXYG4JPAjGk6N0YO Alguem consegue ajudar? |
Boas caríssimos, Tenho dificuldades na validação das hash. 1ª assinatura: hash: ZA5DkeKJ6y9OOwhZB+nqiXHXkPvlDYepgX53a00B3XmkV6WwaZy5fegDvM8A6xk9es/W8k8IpYimRC5GRQznHP9e/LKV9pGLMejszuw7UCZ2QRuz4mUrOJTYXqWYNYqTK9BV2KTIwqtV8ibivx/2oIQn6AsH7iDdvy2uxb1V7+w= 2ª assinatura: hash: |
PESSOAL UMA INFORMAÇÃO!!!! |
Olá pessoal boa noite... Estou precisando de alguns inputs com relação ao ficheiro. Cumpri com todos os requisitos e parâmetros. |
Validação do hash do segundo Invoice continua a dar erro.. |
Boa Tarde |
Saudações a todos pessoal.... Meu nome é Garcia Miguel, sou programador PhP. Estou precisando de ajuda para a validação do Ficheiro Saft no Portal da AGT. Mas até ao momento estou tendo bastante dificuldades na criação e validação do 1º Registo (Hash), segundo registo (2º Hash) e subsenquente. Por favor, alguém pra me orientar nessa. Por favor |
Boa tarde Mano. Posso te ajudar
Me puxa no whatsapp...
942959725
Garcia2159 ***@***.***> escreveu (quinta, 15/02/2024 à(s)
06:47):
… Saudações a todos pessoal....
Meu nome é Garcia Miguel, sou programador PhP. Estou precisando de ajuda
para a validação do Ficheiro Saft no Portal da AGT.
Mas até ao momento estou tendo bastante dificuldades na criação e
validação do 1º Registo (Hash), segundo registo (2º Hash) e subsenquente.
Por favor, alguém pra me orientar nessa. Por favor
—
Reply to this email directly, view it on GitHub
<#49 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A4L5RTETIWWO3KBS4NFA523YTXKUZAVCNFSM4KYSWPHKU5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TCOJUGU3TCOJRGAZA>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Necessitamos de ajuda para compreender porque é que o validador da AGT está a dar erro nas 2ª e 3ª HASH do ficheiro SAFT em anexo.
public_phpPOS_1024.pem.txt
Falha na validação do Hash da parte AuditFile.SourceDocuments.SalesInvoices.2Invoice
Falha na validação do Hash da parte AuditFile.SourceDocuments.SalesInvoices.3Invoice
SAFT-AO-Feb-2020_facturacao.xml.txt
The text was updated successfully, but these errors were encountered: