quinta-feira, 7 de julho de 2011

Requisito IX do PAF-ECF

Esse requisito tem como objetivo garantir que o PAF-ECF homologado não sofreu alteração, pois se o mesmo sofrer alguma alteração o MD5 que será impresso no cupom fiscal não vai ser mais o mesmo que foi homologado e registrado.
Ao implementar esse requisito cuidado para não utilizarem qualquer gerador de MD5 existente na web. Aconselho a utilizar o FSUM (http://www.slavasoft.com/fsum/) que é o adotado pela Secretaria da Fazenda.
Abaixo mostro na prática como implementar esse requisito. Para isso irei mim basear na especificação de requisitos do PAF-ECF (ER-PAF-ECF) versão 01.07.

 



ITEM 1: O PAF-ECF deve a cada inicialização:

a) gerar, por meio do algoritmo Message Digest-5 (MD-5), código de autenticação para
cada arquivo executável que realize os requisitos estabelecidos nesta especificação;

Vamos levar em consideração que o seu PAF-ECF tem os seguintes executáveis e a seguinte estrutura:

C:\Sistema\Caixa.exe
C:\Sistema\Retaguarda.exe

Com o arquivo fsum.exe (que nesse caso vamos colocá-lo na pasta C:\Sistema), execute o seguinte comando para gerar o MD5 de cada executável:

C:\Sistema\fsum.exe -md5 -r -dC:\Sistema Caixa.exe >c:\md5_exe1.txt
C:\Sistema\fsum.exe -md5 -r -dC:\Sistema Retaguarda.exe >c:\md5_exe2.txt


b) gerar um arquivo texto, conforme o leiaute estabelecido no Anexo X do Ato
COTEPE/ICMS 06/08, contendo a lista de arquivos autenticados, e seus respectivos
códigos MD-5;

Exemplo desse arquivo texto:

C:\Sistema\Caixa.exe                 B7FAB699933E6FD3D3B3C449FDBBB66B
C:\Sistema\Retaguarda.exe       6BFDAE60F5C91449A6297B36EBAF71DE

Vamos chamar esse arquivo de Lista.txt


c) gerar, por meio do algoritmo Message Digest-5 (MD-5), código de autenticação do
arquivo TXT a que se refere a alínea “b” e gravar o resultado no arquivo auxiliar
criptografado e inacessível ao estabelecimento usuário de que trata o item 4 do Requisito XXII, sobrepondo à gravação anteriormente realizada, devendo este código ser impresso no Cupom Fiscal, no campo:


Aqui vamos gerar o MD5 do arquivo Lista.txt:

C:\Sistema\fsum.exe -md5 -r -dC:\Sistema Lista.txt >c:\Assinatura.txt

c1) "informações complementares", no caso de ECF que disponibilize este campo, devendo utilizar este campo para esta informação e iniciando a impressão na primeira coluna, disponibilizada pelo software básico do ECF, da primeira linha, precedido pela mensagem “MD-5:”

c2) "mensagens promocionais", no caso de ECF que não disponibilize o campo
"informações complementares", devendo utilizar a primeira linha para esta informação e iniciando a impressão na primeira coluna disponibilizada pelo software básico do ECF, precedido pela mensagem “MD-5:”


Agora é só ler o arquivo Assinatura.txt a cada cupom fiscal e colocar a seguinte informação em "mensagens promocionais" ou "informações complementares", dependendo da impressora fiscal.

Exemplo:

MD5: 1055d3e698d289f2af8663725127bd4b

8 comentários:

  1. Ola, boa noite.
    Segundo o ato cotepe, não pode ter o caminho do executavel e sim, so o nome do executavel em si, ou seja:

    C:\Sistema\Caixa.exe B7FAB699933E6FD3D3B3C449FDBBB66B
    C:\Sistema\Retaguarda.exe 6BFDAE60F5C91449A6297B36EBAF71DE

    assim estatia errado, deveria ser so o nome do executavel, correto?

    Outra, eu tenho que gerar o md5 dos executaveis a cada inicialização ou a cada emissão de cupom ?

    ResponderExcluir
  2. Pessoal,

    Anteriormente a criação desse arquivo texto não seguia nenhum padrão, por isso poderia ser criado de qualquer forma contendo os executáveis e seus respectivos MD5, como mostrei na postagem. A partir da versão 01.07 do Ato Cotepe 06/08 foi criado um leiaute (Anexo X) de como esse arquivo tem que ser criado. Esse arquivo por sua vez tem que ser montado com seus respectivos dados a cada inicialização do sistema e gerado o seu MD5 para ser impresso no cupom fiscal.

    ResponderExcluir
  3. Tenho uma dúvida, o MD5 é para ser criado encima dos bytes do arquivo, ou do nome do mesmo?

    ResponderExcluir
  4. É para ser gerado o MD5 do conteúdo do arquivo e não do nome do arquivo.

    ResponderExcluir
  5. Olá Guilherme, bom dia.

    Primeiramente quero agradecer pela postagem que é de grande ajuda a quem está passando pelo processo de homologação.

    Gostaria de tirar algumas dúvidas.

    O MD5 impresso no rodapé do cupom é o MD5 do arquivo .TXT que contém a relação dos binários e seus repectivos MD5, certo?

    Porém cada vez que o PAF-ECF for inicializado, o mesmo deve recriar o arquivo arquivo texto, porém, pelo fato de recriar o arquivo .TXT, o mesmo fica com o seu md5 modificado.

    Nós implementamos o nosso PAF-ECF desta forma e estamos tendo difilculdade, porque no laudo vai o md5 do arquivo .TXT gerado na última vez que foi execultado o aplicativo, porém, quando o mesmo é execultado navamento o arquivo .TXT é recriado com o mesmo conteúdo, porém com o md5 alterado.

    1. Estamos realizando o procedimento correto?
    2. O arquivo deve .TXT deve ser recriado?
    3. Ao ser recriado e com isso o seu MD5 modificado isso não pode gerar problemas na confaz?

    Agradeço a atenção dispensada,
    Obrigado pela força.

    Sds,

    David Bandeira

    ResponderExcluir
  6. Bom dia Guilherme

    Estou com uma dúvida na geração do md5.
    O arquivo TXT em que é listado os md5 dos executaveis é necessário assiná-lo com a assinatura EAD da impressora.
    O problema é que pela Bematech gera uma EAD diferente da Daruma e consequentemente muda o MD5 do TXT que vai para o cupom.
    Voce teve esse problema?

    ResponderExcluir
    Respostas
    1. Julio, Boa Tarde!

      Não tive esse problema. Eu utilizo só a função da biblioteca da Bematech para todos os clientes independente se ele utiliza ou não a Bematech. Agora verifique se as chaves pública e privada que você está utilizando são as mesmas independente de impressora.

      Abraço,

      Guilherme Braga

      Excluir
  7. Este seu blog está supimpex, ajudou muito...

    ResponderExcluir