Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

lineco

[Encriptação] Ficheiro SAFT-PT OpenSSL

Mensagens Recomendadas

lineco    0
lineco

Bom dia,

Tenho um problema a assinar uma string através do openSSL.

A string a assinar é - "2012-01-04;2012-01-04T15:44:40;FT 2012/1;1200.00;"

Assino a string da seguinte forma:

$hash = exec('echo "'.$data.'" | openssl dgst -sha1 -sign '.private_key_location.' | openssl enc -base64 -A');

E a verdade é que a string fica encriptada, mas quando desencripto a string e verifico a integridade dos dados, dá-me um erro a diz que estes não são válidos devido à chave pública utilizada. Por isso parto do principio que a string não esteja bem encriptada.

Só mais uma observação esta string está inserida numa XML que vai para as Finanças para estas certificarem o software de contabilidade, ao que os entendidos na matéria normalmente chamam SAFT-PT. É um ficheiro que contém informação sobre as empresas que utilizam o software.

PS: Já utilizei também as funções nativas do openSSL para PHP e continua a dar-me o mesmo erro. Mas o mais engraçado é que ao encritpar a string através do "openssl_private_encrypt" a string é diferente daquela que é gerada através da função em cima referida.

Cumprimentos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
lineco    0
lineco

Olá Jorge,

Em que altura fizeste o SAFT-PT?

Agora as normas de certificação dizem que todos os Invoices têm que ter um campo "Hash" que é uma string com um conjunto de valores do Invoice. E está precisa de ser assinada através de umas regras especificadas pelas Finanças. Não é mais do que a utilização do algoritmo RSA, em que temos um conjunto de chaves (Privada e Pública).

Eu com a chave privada assino cada documento, utilizando o método descrito no primeiro post. E depois eles, para confirmarem que foi a pessoa correcta a gerar a informação têm a minha chave pública que possibilita validar a autenticidade da pessoa que assinou.

E é neste processo de validação da pessoa que eu tenho os problemas. Ao assinar os documentos com a minha chave privada, ao verificar a assinatura dá me um erro a dizer que a chave pública falha.

Eu já testei as chaves e estas estão bem.

Contava encontrar aqui alguma alma caridosa que já tivesse passado pelo processo de certificação com recurso ao novo método e que tivesse o seu programa em PHP

Cumprimentos.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jorgepinho    0
jorgepinho

Pois, eu fiz o SAF-PT em 2007... mas como já não estou naquela empresa é menos uma dor de cabeça...

Cant Help :cheesygrin: Boa sorte!  :eek:

Nota: este SAF-T-PT não é uma coisa só de Portugal, por isso pesquisa também nos fóruns estrangeiros... pode ser que apanhes a solução.

Isto acontece em qualquer documento que encriptes ou só num SAF-PT ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
IvanDist    0
IvanDist

Boas lineco, experimenta adicionar um espaço depois do último ; para que fique deste modo "2012-01-04;2012-01-04T15:44:40;FT 2012/1;1200.00; ".

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
alex01    0
alex01

Podem ajudar-me? Quando valido um ficheiro de saft dá este erro Na linha 655:InvalidRegex: Pattern value '([0-9])+|([a-zA-Z0-9-/]+ [0-9]+)' is not a valid regular expression. The reported error was: ''-' is an invalid character range. Write '\-'.' at column '{2}'. Mas apenas na minha máquina. Peço ajuda. Obrigada

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade