Jump to content

dev botao

Erro ao ler a Chave Método PAF_SaveFileTXT_RegistrosPAF


  • Este tópico foi criado há 2266 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde, estou com um problema semelhante, quando chamo o método  ACBrPAFInterop.INSTANCE.PAF_SaveFileTXT_RegistrosPAF(getHandle(), toUTF8(pArquivo));

Tenho o seguinte retorno "Erro ao ler a Chave", como aparentemente o método é executado pela DLL não consigo identificar o problema, estou utilizando jAcbrFramework em Java.

Pelo o que entendi no jACBrFramework.ead é necessário configurar o par de Chaves para assinatura do arquivo, mas não encontrei o método e nem a documentação de como configurar essas chaves.

Alguém ja teve este problema? 

Link to comment
Share on other sites

20 minutos atrás, Carlos Alberto Senczkowski disse:

Boa tarde, estou com um problema semelhante, quando chamo o método  ACBrPAFInterop.INSTANCE.PAF_SaveFileTXT_RegistrosPAF(getHandle(), toUTF8(pArquivo));

Tenho o seguinte retorno "Erro ao ler a Chave", como aparentemente o método é executado pela DLL não consigo identificar o problema, estou utilizando jAcbrFramework em Java.

Pelo o que entendi no jACBrFramework.ead é necessário configurar o par de Chaves para assinatura do arquivo, mas não encontrei o método e nem a documentação de como configurar essas chaves.

Alguém ja teve este problema? 

Creio que com esse exemplo você possa criar o seu componente ACBrPAF

        acbrEad = new ACBrEAD();
        acbrEad.addOnGetChavePrivada(new ACBrEventListener<EADChavePrivadaEventObject>() {

            @Override
            public void notification(EADChavePrivadaEventObject t) {
                t.setKey("Sua Chave Privada");
            }
        });
        
        acbrEad.addOnGetChavePublica(new ACBrEventListener<EADChavePublicaEventObject>() {

            @Override
            public void notification(EADChavePublicaEventObject t) {
                t.setKey("Sua Chave Pública");
            }
        });
        
        acbrPaf = new ACBrPAF(Charset.forName("cp1252"));
        acbrPaf.setAssinarArquivo(true);
        acbrPaf.setEad(acbrEad);

Geovani Nicolau de Paula

Cell Corporação Tecnológica

Link to comment
Share on other sites

3 horas atrás, Carlos Alberto Senczkowski disse:

Tentei atribuir as chaves desta forma, mas ao chamar o método acbrPaf.saveFileTXT_RegistrosECF(nomeArquivo), obtenho o retorno -1 "erro ao ler a chave".

agora vem a dúvida se o erro está com a configuração das chaves públicas ou se há algum problema na criação do arquivo.  

Tem como postar o código para que possamos verificar como você fez a inicialização dos componentes?

Geovani Nicolau de Paula

Cell Corporação Tecnológica

Link to comment
Share on other sites


        ACBrEAD acbrEad = new ACBrEAD();
        acbrEad.addOnGetChavePrivada(new ACBrEventListener<EADChavePrivadaEventObject>() {

            @Override
            public void notification(EADChavePrivadaEventObject t) {
                t.setKey("Chave");
            }
        });
        
        acbrEad.addOnGetChavePublica(new ACBrEventListener<EADChavePublicaEventObject>() {

            @Override
            public void notification(EADChavePublicaEventObject t) {
                t.setKey("-----BEGIN PUBLIC KEY-----\n" +
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCppEr/CNhXQpLQ956CHv0e67Pb\n" +
"g5NQvwcaf0mYCiSrC7O6IvhzhZKrdnlgSu4MiGw4EL7i3ZUPJmfH4iHjXVigH/BU\n" +
"r30j0htSXLTMFGo/kNugAqOzfowYdCbR5WvoUvwihpKhuurh3aypWieexSbagnb9\n" +
"JvtN1Ny1F+c8cyIagQIDAQAB\n" +
"-----END PUBLIC KEY-----");
            }
        });
        
        //acbrPaf = new ACBrPAF(Charset.forName("cp1252"));
        acbrPaf.setAssinarArquivo(true);
        acbrPaf.setEad(acbrEad);

        // U1 - Identificação do Estabelecimento Usuário do PAF-ECF
        geraRegistroU(acbrPaf);

        // A2 - Total Diário de Meios de Pagamento
        geraRegistroA2(acbrPaf, dataInicio, dataFim);

        // P2 - Relação das Mercadorias e Serviços
        geraRegistroP2(acbrPaf);

        // E2 - Relação das Mercadorias em Estoque
        geraRegistroE2(acbrPaf, pEstoqueTotalOuParcial, pEstoqueCodigoOuNome, pEstoqueCriterioUm, pEstoqueCriterioDois);

        // E3 - Identificação do ECF que Emitiu o Documento Base para a Atualização do Estoque
        geraRegistroE3(acbrPaf);

        // D2 - Relação dos DAV Emitidos / D3 - Detalhe do DAV
        geraRegistrosDAV(acbrPaf);

        // R01 a R07
        geraRegistrosR(acbrPaf, dataInicio, dataFim);

        /*
         O arquivo a que se refere o item 5 deverá ser denominado no formato CCCCCCNNNNNNNNNNNNNNDDMMAAAA.txt, sendo:
         a) “CCCCCC” o Código Nacional de Identificação de ECF relativo ao ECF a que se refere o movimento informado;
         b) “NNNNNNNNNNNNNN” os 14 (quatorze) últimos dígitos do número de fabricação do ECF;
         c) “DDMMAAAA” a data (dia/mês/ano) do movimento informado no arquivo.
         */
        String nomeArquivo = SessaoUsuario.getConfiguracao().getSistemaEcfId().getCodigo();

        if (SessaoUsuario.getConfiguracao().getSistemaEcfId().getSerie().length() > 14) {
            nomeArquivo += SessaoUsuario.getConfiguracao().getSistemaEcfId().getSerie().substring(SessaoUsuario.getConfiguracao().getSistemaEcfId().getSerie().length() - 14);
        } else {
            nomeArquivo += Biblioteca.repete("0", 14 - SessaoUsuario.getConfiguracao().getSistemaEcfId().getSerie().length()) + SessaoUsuario.getConfiguracao().getSistemaEcfId().getSerie();
        }

        if (dataMovimento == null) {
            dataMovimento = new Date();
        }
        nomeArquivo += Biblioteca.formataData(dataMovimento).replace("/", "") + ".txt";
        
        

        if (!acbrPaf.saveFileTXT_RegistrosECF(nomeArquivo)) {
            throw new ACBrException("Não foi possível criar o arquivo 'Registros PAF'.");
        }

        JOptionPane.showMessageDialog(null, "Arquivo armazenado em: " + Constantes.DIRETORIO_APLICACAO + nomeArquivo, "Informação do Sistema", JOptionPane.INFORMATION_MESSAGE);
    }

A principio o erro ocorre ao chamar o método acbrPaf.saveFileTXT_RegistrosECF(nomeArquivo) na penultima linha com o retorno Erro ao Ler a Chave.

Tentei atribuir as chaves diretamente para testar mas o erro continua.

Link to comment
Share on other sites

Ainda estou esbarrando neste problema.

O erro ocorre aparentemente em todas as assinaturas de arquivos.

Ex: acbrPaf.saveFileTXT_N("ArquivoMD5.txt");

 int ret = ACBrPAFInterop.INSTANCE.PAF_SaveFileTXT_N(getHandle(), toUTF8(pArquivo));        

checkResult(ret);

Retorno -1;

"Erro ao Ler a chave"

Existe alguma configuração do componente ou forma de atribuir estas chaves? 

Tentei atribuir aos componentes através do método setKeyRSA na classe ACBRPAF sem exito.

Atribuir diretamente ao componente ACBREAD e ao ACBRAAC.

 

Nos fontes do jACBrFramework existem os testes pelo ProgramTestEad.java

Tenho o mesmo problema, e não encontro uma forma de atribuir as chaves.

Se alguém puder me dar uma luz de como configurar as chaves dentro do ACBR fico agradecido.

Link to comment
Share on other sites

package jACBrFramework.Test;

import jACBrFramework.ACBrException;
import jACBrFramework.ead.ACBrEAD;
import jACBrFramework.ead.Chaves;
import jACBrFramework.ead.EADDigest;
import jACBrFramework.ead.ModuloExpoente;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Jose Mauro
 * @version Criado em: 26/12/2013 10:12:34, revisao: $Id$
 */
public class ProgramTestEad {
    
    public static void main(String[] args) {
        try {
            ACBrEAD lAcbr = new ACBrEAD();     
            lAcbr.setChavePrivada("-----BEGIN RSA PRIVATE KEY-----" "\n"
            + "-----END RSA PRIVATE KEY-----");
            lAcbr.setChavePublica("-----BEGIN PUBLIC KEY-----" + "\n"
            + "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnFwt3/HloBZfRpN+HjuCkHBp7" + "\n"
            + "p12fRsQ4NqEKV7apObbop1DsiqbP8UVMuohrgOvlHRaXLVfwgs5e+fsbff2k0u2U" + "\n"
            + "jeEheN+CFWhYO+VIGDQE4+OGGTI8+mJy5q2aybI2MEcWriaEGerEXfWNVB8jimID" + "\n"
            + "QZFrYjT0EmMuNDW1DwIDAQAB" + "\n"
            + "-----END PUBLIC KEY-----");
            
            lAcbr.gerarChaves();
            
            System.out.println("\nMD5FromFile: " + lAcbr.MD5FromFile("teste.txt"));
            System.out.println("MD5FromString: " + lAcbr.MD5FromString("jACBrFramework"));
            System.out.println("assinarArquivoComEAD: " + lAcbr.assinarArquivoComEAD("teste.txt", true));
            System.out.println("calcularChavePublica:\n " + lAcbr.calcularChavePublica());
            //TODO Verificar no ACBrFramework uma forma de especificar o tamanho do vetor.
            //ArrayList<String> lStrings = new ArrayList<String>();
            //lStrings.add("Framework");
            //lStrings.add("jACBrFramework");
            //System.out.println("calcularEAD: " + lAcbr.calcularEAD(lStrings));
            //System.out.println("calcularEAD: " + lAcbr.calcularEAD(lStrings.toArray(new String[lStrings.size()])));
            System.out.println("calcularEADArquivo: " + lAcbr.calcularEADArquivo("teste.txt"));
            System.out.println("calcularHash: " + lAcbr.calcularHash("jACBrFramework", EADDigest.SHA1));
            System.out.println("calcularHashArquivo: " + lAcbr.calcularHashArquivo("teste.txt", EADDigest.SHA));
            System.out.println("getAbout: " + lAcbr.getAbout());
            System.out.println("getOpenSSL_Version: " + lAcbr.getOpenSSL_Version());
            
            Chaves lChaves = lAcbr.gerarChaves();
            System.out.println("gerarChaves.getChavePrivada(): \n" + lChaves.getChavePrivada());
            System.out.println("gerarChaves.getChavePublica(): \n" + lChaves.getChavePublica());
            lAcbr.setChavePrivada(lChaves.getChavePrivada());
            lAcbr.setChavePublica(lChaves.getChavePublica());

            System.out.println("Gerando gerarXMLeECFc");
            lAcbr.gerarXMLeECFc("Empresa Teste");
            
            ModuloExpoente lModExp = lAcbr.calcularModuloeExpoente();
            System.out.println("calcularModuloeExpoente.getModulo(): \n" + lModExp.getModulo());
            System.out.println("calcularModuloeExpoente.getExpoente(): \n" + lModExp.getExpoente());
            System.out.println("converteXMLeECFcParaOpenSSL: \n" + lAcbr.converteXMLeECFcParaOpenSSL("Empresa Teste.xml"));
        } catch (ACBrException ex) {
            Logger.getLogger(ProgramTestEad.class.getName()).log(Level.SEVERE, null, ex);
        }
    }       
}

Esse é o arquivo que estou rodando o teste para assinar o Teste.txt;

Ao executar o método lAcbr.gerarChaves(); retorna o seguinte erro: Erro ao gerar par de Chaves RSA

 

Link to comment
Share on other sites

  • Este tópico foi criado há 2266 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.