Artigo

[Escovando Bits] PAF.ECF, Arquivo Criptografado

Escovando Bits

 
Número de Série e GT Codificado

No roteiro de testes do PAF-ECF no requisito XXII, testes 4 e 5 é solicitada a gravação do número de série e do grande total, para isto desenvolvemos quatro funções na DarumaFramework.dll que facilitam este trabalho todo de ter que criptografar os valores e depois descriptografar para a devida comparação.


GT – Grande Total

rRetornarGTCodificado_ECF_Daruma

Definição:

Este método retorna o Grande Total da Impressora codificado.

Número de Série

rRetornarNumeroSerieCodificado_ECF_Daruma

Definição:

Este método retorna o Número Série da Impressora codificado.

rVerificaNumeroSerieCodificado_ECF_Daruma

Definição:

Este método recebe o Número de Série da Impressora codificado e informa se é válido ou não.
Obs: Caso o valor informado for diferente do GT da impressora, o comando irá retornar -12 e erro "Parâmetro inválido".


Na prática

Os exemplos abaixo demonstram as funções de Retorno e Verificação do Grande Total codificado, mas a forma de utilização é a mesma para as funções do Número de Série Codificado.

C(Sharp)

private void button1_Click(object sender, EventArgs e)
        {
            int int_erro = 0;
            int int_aviso = 0;
            StringBuilder Str_GTCodificado = new StringBuilder(38);
            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp
.rRetornarGTCodificado_ECF_Daruma(Str_GTCodificado);
            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.rVerificarGTCodificado_ECF_Daruma(
Convert.ToString(Str_GTCodificado));
            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.rStatusUltimoCmdInt_ECF_Daruma(ref int_erro,
ref int_aviso);

     }

Debug mode

Podemos observar na primeira imagem que a função rRetornarGTCodificado_ECF_Daruma devolve o grande total já codificado e na segunda linha envia para a função rVerificarGTCodificado_ECF_Daruma, para verificar se o mesmo é válido ou não. Na segunda imagem podemos observar que a função retornou = 1, o que vem a indicar que o método foi executado com sucesso.

Agora vou demonstrar como se o arquivo fosse violado e o GT alterado manualmente, para verificarmos o retorno. Acrescentei mais valores a string com o GT devolvido pela função rRetornarGTCodificado_ECF_Daruma, da seguinte maneira:

rVerificarGTCodificado_ECF_Daruma(Convert.ToString(Str_GTCodificado+"ABC"));

Podemos observar que agora o retorno da função nos devolveu -12 e o erro 195, Parâmetros inválidos. Com o Número de Série as funcionalidades são exatamente as mesmas.

Delphi
function rRetornarGTCodificado_ECF_Daruma(pszGTCriptografado:string): Integer; StdCall; External 'DarumaFramework.dll';

function rVerificarGTCodificado_ECF_Daruma(pszGTCriptografado:string): Integer; StdCall; External 'DarumaFramework.dll';

procedure TFR_FISCAL_rRetornarGTCodificado_ECF_Daruma.BT_ENVIARClick(
  Sender: TObject);
Var Str_GT_Codificado: String;
begin
                SetLength (Str_GT_Codificado,38);
                 Int_Retorno := rRetornarGTCodificado_ECF_Daruma(Str_GT_Codificado);
                 Int_Retorno := rVerificarGTCodificado_ECF_Daruma(Str_GT_Codificado);
                Edt_GTCodificado.Text := (Str_GT_Codificado);
end;

VB6

Public Declare Function rRetornarGTCodificado_ECF_Daruma Lib "DarumaFramework.dll" (ByVal pszGT As String) As Integer   
Public Declare Function rVerificarGTCodificado_ECF_Daruma Lib "DarumaFramework.dll" (ByVal pszVerificaGT As String) As Integer

Private Sub BotaoGT_Click(Index As Integer)
Dim Str_GTCodificado As String

          Str_GTCodificado = Space(38)
        iRetorno = rRetornarGTCodificado_ECF_Daruma(Str_GTCodificado)
        DarumaFramework_Mostrar_Retorno_ECF (iRetorno)
       
End Sub

Um abraço e até a próxima!

E-mails:
ddc.suporte@daruma.com.br
suporte.ddc@daruma.com.br
desenvolvedores.suporte@daruma.com.br
suporte.desenvolvedores@daruma.com.br
desenvolvedores.daruma@daruma.com.br
suporte@daruma.com.br
suporte.alexandre@daruma.com.br
claudenir@daruma.com.br
Skypes:
ddc_suporte_daruma
suporte_ddc_daruma
desenvolvedores_suporte_daruma
suporte_desenvolvedores_daruma
desenvolvedores_daruma
suporte_daruma
suporte_alexandre_daruma
claudenir_andrade
 

  • Daruma Developer

    Daruma Developer