As novas implementações na camada Daruma Framework agora te auxiliam a atender o requisito do arquivo auxiliar criptografado exigido no roteiro do PAF-ECF.
Sim, agora você tem esta preocupação a menos!

Capturar o GT e o Número de Série do ECF, criptografar, gravar em um arquivo de texto e ficar comparando a informação gravada no mesmo com a do equipamento conectado...

Imaginamos o trabalho que você tem para criar esta rotina!
E agora a pedido da comunidade de desenvolvedores, a camada Daruma Framework conta com uma série de recursos para atender os requisitos e testes referentes ao arquivo auxiliar criptografado.

Métodos:

ePAFCadastrar_ECF_DARUMA
ePAFValidarDados_ECF_DARUMA
ePAFAtualizarGT_ECF_DARUMA
confModoPAF_ECF_Daruma

Alguns dos métodos acima possuem o prefixo ePAF o que representa que este é um método:
e : Especial
P : Programa
A : Aplicativo
F :  Fiscal

E indica que o método foi desenvolvido especialmente para atender testes do PAF-ECF, mas agora vamos ver melhor como funciona!

Método ePAFCadastrar_ECF_Daruma

Este método grava em um arquivo de texto o número de série da impressora e o GT(Totalizador Geral) criptografados com base em uma chave informada.

Esta chave é um texto utilizado para criptografar/descriptografar os dados gravados no arquivo.

O arquivo é criado apenas uma vez, porém a função pode ser executada N vezes, fazendo que o arquivo possua os dados criptografados de diversas ECFs.

Isto possibilita que você possua apenas um único arquivo criptografado do PAF-ECF com informações de todas as impressoras do estabelecimento.    

Caso o método tenha sido executado com sucesso o retorno será = 1, no caso da tentativa do cadastro de um número de série já existente no arquivo o retorno será = -112 (O número de série já existe no arquivo do PAF).

Parâmetros:

1 pszNomeArquivo: Nome do arquivo em que os dados serão gravados
    Exemplo: C:\Daruma\PAF.txt
2 pszChave: Texto utilizado para criptografar os dados gravados no arquivo 
    Exemplo: darumaECF
3 pszNumSerieECF: Número de série da impressora fiscal
    Exemplo: DR0207BR000000096456
4 pszGT: GT da impressora fiscal
    Exemplo: 1780524,87

Na prática (DELPHI)

//Declaracao
function ePAFCadastrar_ECF_Daruma(pszNomeArquivo:string; pszChave:string; pszNumSerieECF: string; pszGT:string): Integer; StdCall; External 'DarumaFramework.dll';

//Chamada

procedure TFR_MenuImpressoraFiscal_Principal.ePAFCadastrarClick(Sender: TObject);
  var
  Int_Retorno: Integer;

begin
Int_Retorno:=ePAFCadastrar_ECF_Daruma('C:\arquivo.crip', 'cripdaruma', 'DR0510BR000000207166', '279215,09');

end;

Após a execução do método, o arquivo auxiliar criptografado será criado conforme os parâmetros informados no local indicado.


Se aberto, podemos observar que os dados do arquivo estão criptografados como exigido no roteiro do PAF-ECF.

Exemplo:

IMPORTANTE: Os demais métodos abaixo dependem primeiramente da execução deste método apresentado acima: ePAFCadastrar_ECF_DARUMA, pois ele utiliza a criptografia no padrão da camada DarumaFramework.
ePAFValidarDados_ECF_DARUMA

Este é o método responsável por abrir o arquivo criptografado informado, descriptografar o mesmo com a palavra chave informada e verificar se o Número de Série e GT estão iguais aos informados pelos parâmetros passados à função: ePAFCadastrar_ECF_DARUMA.

Parâmetros:

1 pszNomeArquivo: Nome do arquivo em que os dados estão gravados. 
    Exemplo: C:\Daruma\PAF.txt
2 pszChave: Texto utilizado para criptografar os dados gravados no arquivo 
    Exemplo: darumaECF
3 pszNumSerieEFC: Número de série da impressora fiscal
    Exemplo: DR0207BR000000096456
4 pszGT: GT que será comparado com o do arquivo
    Exemplo: 1780524,87
    Obs: A variável pszChave que armazena a palavra chave na criptografia/descriptografia do arquivo deve ser passada da mesma maneira de que na chamada do método: ePAFCadastrar_ECF_DARUMA, para que a comparação seja válida.


Na prática (DELPHI)

//Declaracao
function ePAFValidarDados_ECF_Daruma(pszNomeArquivo:string; pszChave:string; pszNumSerieECF: string; pszGT:string): Integer; StdCall; External 'DarumaFramework.dll';

//Chamada
procedure TFR_MenuImpressoraFiscal_Principal.ePAFValidarClick(
  Sender: TObject);
  var
  Int_Retorno: Integer;

begin

Int_Retorno:=ePAFValidarDados_ECF_Daruma('C:\arquivo.crip', 'cripdaruma', 'DR0510BR000000207166', '279215,09');
FR_MenuImpressoraFiscal_Principal.DarumaFramework_Mostrar_Retorno(Int_Retorno);

end;

Caso os dados do arquivo tenham sido validados com sucesso o retorno da função será = 1.
Em caso contrário o erro será = 0, que representa: Erro durante a execução.
ePAFAtualizarGT_ECF_DARUMA

Este é o método responsável por substituir o GT que está gravado no arquivo do criptografado pelo GT atual, obtido através da DarumaFrameWork.dll.

A função solicita em um dos parâmetros a passagem do GT atual para fazer as devidas comparações de autenticidade.

Os dados gravados no arquivo são criptografados através da chave passada na chamada à função, por isso são lidos e modificados somente quando a mesma é informada corretamente.

Parâmetros:

1 pszNomeArquivo: Nome do arquivo em que os dados serão gravados
    Exemplo: C:\Daruma\PAF.txt
2 pszChave: Texto utilizado para criptografar os dados gravados no arquivo 
    Exemplo: darumaECF
3 pszNumSerieECF: Número de série da impressora fiscal
    Exemplo: DR0207BR000000096456
4 pszGT: GT que estava no arquivo e dever ser atualizado.
    Exemplo: 1780524,87

A função pode ser utilizada quando houver a emissão de algum documento Fiscal e a necessidade de alterar o valor no arquivo criptografado criado.


Na prática(DELPHI):


//Declaracao

function ePAFAtualizarGT_ECF_Daruma(pszNomeArquivo:string; pszChave:string; pszNumSerieECF: string; pszGT:string): Integer; StdCall; External 'DarumaFramework.dll';

//Chamada

procedure TFR_MenuImpressoraFiscal_Principal.ePAFAtualizarGTClick(
  Sender: TObject);
  var
  Int_Retorno: Integer;

begin

Int_Retorno:=ePAFAtualizarGT_ECF_Daruma('C:\arquivo.crip', 'cripdaruma', 'DR0510BR000000207166', '279215,09');
FR_MenuImpressoraFiscal_Principal.DarumaFramework_Mostrar_Retorno(Int_Retorno);

end;

Caso os dados do arquivo tenham sido validados e atualizados com sucesso o retorno da função será = -110, o que indica que o GT foi atualizado no arquivo de registro do PAF.
confModoPAF_ECF_Daruma

Este é o método responsável por tornar automático todo o controle de atualização do arquivo criptografado do PAF-ECF, habilitando o “Modo PAF” na DarumaFrameWork.dll, que realiza a comparação do GT (Totalizador Geral) e do Numero de Série da ECF gravados no arquivo criptografado, com as mesmas informações obtidas diretamente da impressora.

Essa comparação é feita automaticamente na abertura dos Cupons Fiscais, na venda dos itens do Cupom Fiscal, na abertura de um comprovante Não-Fiscal, Sangria e Suprimento de Caixa, de acordo com a legislação do PAF-ECF.

Caso o GT ou número de série da ECF não correspondam, somente os métodos de retorno poderão ser utilizados.

Parâmetros:
1 pszAtivar: Deve possuir valor 1 para a ativação do modo PAF, e valor 0 para desativação
    Exemplo: 1
2 pszChave: Texto utilizado para descriptografar os dados gravados no arquivo
    Exemplo: darumaECF
3 pszNomeArquivo: Nome do arquivo em que os dados estão gravados
    Exemplo: C:\Daruma\PAF.txt

Na prática(DELPHI):

//Declaracao
function confModoPAF_ECF_Daruma(pszAtivar: string; pszChave:string; pszNomeArquivo:string): Integer; StdCall; External 'DarumaFramework.dll';

//Chamada

procedure TFR_MenuImpressoraFiscal_Principal.ePAFCadastrarClick(
  Sender: TObject);
  var
  Int_Retorno: Integer;

begin
Int_Retorno:=confModoPAF_ECF_Daruma('1', 'cripdaruma', 'C:\arquivo.crip');
Int_Retorno:=iCFAbrirPadrao_ECF_Daruma();
Int_Retorno:=iCFVenderSemDesc_ECF_Daruma('F1', '2','2,00', '0032920', 'UN', 'Venda teste');
FR_MenuImpressoraFiscal_Principal.DarumaFramework_Mostrar_Retorno(Int_Retorno);

end;

Caso a validação e atualização do arquivo criptografado tenha ocorrido com sucesso o retorno da função será = 1, conforme demonstrado na imagem abaixo.

No caso de outra impressora ter sido conectada e feita à comparação com os dados do arquivo criptografado o retorno será = -113 (ECF conectado não cadastrado no arquivo do PAF), bloqueando assim todas as operações Fiscais na impressora.


Ficou fácil mesmo né...
Este é mais um recurso planejado e implementado graças aos feedbacks da comunidade de desenvolvedores Daruma.

Um abraço!