Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao ler a Chave Método PAF_SaveFileTXT_RegistrosPAF


  • Este tópico foi criado há 2213 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

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.  

Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.