Pesquisar na Comunidade
Showing results for tags 'ACBREAD'.
Encontrado 4 registros
-
Boa tarde pessoal, Fizemos a atualização da ACBr para uma das últimas versões (26/12/2016) e ao executar o comando: ACBrEAD.GerarXMLeECFc(RemoveAcento(dm.RazaoSocial), AddSlash(dm.ExePath)); Recebemos a mensagem: Método CalcularModuloeExpoente ainda não é compatível com OpenSSL 1.0.0 ou superior Efetuei uma pesquisa e esta validação o Daniel implementou no commit revision 12726 do dia 23/12/2016. Em debug, verifiquei que na função: function TACBrEAD.VerificaVersaoCompativel: Boolean; Temos: 1) A função 'GetOpenSSL_Version' retorna 'OpenSSL 0.9.8n 24 Mar 2010' 2) A comparação '(CompareVersions(Ver, '1.0.0') < 0)' retorna FALSE Gostaria da opinião de vocês, se é algum problema na minha máquina ou se é a comparação de versões que está equivocada. Desde já agradeço.
- 6 replies
-
- gerarxmleecfc
- acbread
-
(e 2 mais)
Tags:
-
Acbread Não Consigo Assinar Arquivo Com Minha Chave
um tópico no fórum postou Wendel Fassarella ACBrSerial
Pessoal, eu to usando o acbread e não estou conseguindo assinar o arquivo com uma chave que eu já utilizava anteriormente com a dll... o que eu faço??? -
Paf-Ecf - Acbraac Erro No Arquivo Auxiliar De Configuração
um tópico no fórum postou fabricarneiro ACBrSintegra/ACBrPAF
Prezados, Estou tendo um erro no procedimento "ACBrPAF.SaveFileTXT_N('lista_autenticados.txt')", quando chego nesta linha se eu tenho o arquivo no diretório ele da a exception "Arquivo: Auxiliar.txt inválido" e se eu não tenho ele da a exception "Arquivo: Auxiliar.txt Não encontrado". Gostaria de uma ajuda de como configurar o AcbrAAC e o AcbrEAD corretamente. O componente acbrECF está ligado ao componente acbrACC, no acbrACC está setada a propriedade NomeArquivoAux -> Auxiliar.txt e o arquivo Auxiliar.txt está na pasta setada no caminho. Não encontrei muitas informações no demo do acbrACC e nenhuma referencia no acbrECF. Configurei o acbrACC conforme o exemplo do demo , (troquei apenas o valor da chave mas mantive com 4 digitos), O que pode estar ocorrendo ? Se possível também confirmar se obrigatóriamente no Arquivo Auxiliar Criptografado devo colocar o Número de Série da Impressora e o GT, e como fazer isso (de forma criptografada). Abaixo código que estou usando : Para o acbrEAD: procedure TFDMPafEcf.ACBrEAD1GetChavePrivada(var Chave: String); begin Chave := 'MIICXgIBAAKBgQDawShBJxM0rFLadxR8GSD5DaKVvxtlQ+OnuOZX/vOEP2pQXCiG'; Chave := Chave + 'NpQfNMDm73dWpTaqFLhuFvU+MSF+ys9u6bI2IqOmWUfEaE16cK4nKTbIm69fLDB8'; Chave := Chave + 'SnaocjMfO6LnbdJmG+dSxbLmrHE8BYX17/d7Vbuxcr1BoSDojGpubqP7OQIDAQAB'; Chave := Chave + 'AoGBAK0+F+ExTvaCGsPFVsXJKOHUuJQbW1jhYSPtPQ8nbDep+UpXEgjopHnqT3MU'; Chave := Chave + '5tAJ27bq3fzh1atBQaOmfoz6KxVZHEptcLPlpR+jSrBXyhG/mlvD54ZMKKZQb3qD'; Chave := Chave + 'b1UvHAO2CYRH7f7Y9PEGAvqXCloUVkbKl9rS7MEfaukj3xq5AkEA+Qqi8c1j47Db'; Chave := Chave + 'NyezJULfskNwK1wnxcLaFQBKfzpWD2dD0GS/dzWaB5T6d1zmxfXa8ZYv6WQULvqd'; Chave := Chave + '/BGCs+FMcwJBAODd4aDvQf6py4FocklojYbDhpp040NGUyhsVnj702Gq/oj2HBgI'; Chave := Chave + '4bce/b2H5+HwkyEsSZHMm5d/5HuNY35Y+qMCQQDoWCMTgvLZn8u1loVNkymOb9p7'; Chave := Chave + 'qZu1poe+JiparrtR3Z7oEsaK2mhdAIH40KTBNhHRaLREg8lM1yaD4HZXii+/AkA2'; Chave := Chave + 'L0EfNogAhYm0NSbU6Yyw3Iyiy2e33kpLg0+S95uH/Vw4RJWgdQNuzNj3wrftibrq'; Chave := Chave + 'U3Gm4FbdusOjwf4ng+lhAkEApd6RF3AqJXtmgtZpXrO6P8riEpE1qZXBQwdfeRBX'; Chave := Chave + 'Q22LlhcCq5vxgG78jKWeydtan9ue2ebXav/oUT+37LfHYA=='; end; procedure TFDMPafEcf.ACBrEAD1GetChavePublica(var Chave: String); begin Chave := 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDawShBJxM0rFLadxR8GSD5DaKV'; Chave := Chave + 'vxtlQ+OnuOZX/vOEP2pQXCiGNpQfNMDm73dWpTaqFLhuFvU+MSF+ys9u6bI2IqOm'; Chave := Chave + 'WUfEaE16cK4nKTbIm69fLDB8SnaocjMfO6LnbdJmG+dSxbLmrHE8BYX17/d7Vbux'; Chave := Chave + 'cr1BoSDojGpubqP7OQIDAQAB'; end; Para o ACBRAcc : procedure TFDMPafEcf.ACBrAAC1GetChave(var Chave: String); begin Chave := '7777'; end; procedure TFDMPafEcf.ACBrAAC1VerificarRecomporNumSerie( const NumSerie: String; const ValorGT: Double; var CRO, CNI: Integer); var OK: Boolean; NumCRZ, NumCRO: Integer; VendaBruta: Double; begin // ler os dados da ultima Z no ECF FDMPAFECF.ACBrECF1.DadosUltimaReducaoZ; NumCRO := FDMPAFECF.ACBrECF1.DadosReducaoZClass.CRO; NumCRZ := FDMPAFECF.ACBrECF1.DadosReducaoZClass.CRZ; VendaBruta := FDMPAFECF.ACBrECF1.DadosReducaoZClass.ValorVendaBruta; // comparar os dados obtidos com os dados da ultima redução Z gravada no Banco de dados //OK := Comparar com dados do BD; Aqui deixei sempre como true, para teste. OK:= TRUE; // setar os parametros se os valores (CRZ, CRO e Venda Bruta) forem iguais if OK then begin CRO := NumCRO; CNI := 010101; // codigo nacional de identificação do ECF conforme tabela end; end; procedure TFDMPafEcf.ACBrAAC1VerificarRecomporValorGT( const NumSerie: String; var ValorGT: Double); var OK: Boolean; NumCRZ, NumCRO: Integer; VendaBruta: Double; begin // ler os dados da ultima Z no ECF FDMPAFECF.ACBrECF1.DadosUltimaReducaoZ; NumCRO := FDMPAFECF.ACBrECF1.DadosReducaoZClass.CRO; NumCRZ := FDMPAFECF.ACBrECF1.DadosReducaoZClass.CRZ; VendaBruta := FDMPAFECF.ACBrECF1.DadosReducaoZClass.ValorVendaBruta; // comparar os dados obtidos com os dados da ultima redução Z gravada no Banco de dados //OK := Comparar com dados do BD; Aqui deixei sempre como true, para teste. OK:= TRUE; // setar o parametro se os valores (CRZ, CRO e Venda Bruta) forem iguais if OK then ValorGT := FDMPAFECF.ACBrECF1.GrandeTotal; end; if FileExists(ExtractFilePath(Application.ExeName) + 'Auxiliar.txt') then DeleteFile(ExtractFilePath(Application.ExeName) + 'Auxiliar.txt'); AssignFile(F, ExtractFilePath(Application.ExeName) + 'Auxiliar.txt'); Rewrite(F); closefile(F); // setar o diretório onde vai ser salvo o arquivo FdmPafEcf.ACBrPAF1.Path := ExtractFilePath(Application.ExeName) + 'PAF-ECF\'; // registro dos dados do desenvolvedor //Self.PreencherHeaderArquivo(FdmPafEcf.ACBrPAF1.PAF_N.RegistroN1); // registro dos dados do aplicativo FdmPafEcf.ACBrPAF1.PAF_N.RegistroN1.RAZAOSOCIAL := FdmPafEcf.ACBrAAC1.IdentPAF.Empresa.RazaoSocial; FdmPafEcf.ACBrPAF1.PAF_N.RegistroN1.UF := FdmPafEcf.ACBrAAC1.IdentPAF.Empresa.Uf; FdmPafEcf.ACBrPAF1.PAF_N.RegistroN1.CNPJ := FdmPafEcf.ACBrAAC1.IdentPAF.Empresa.CNPJ; FdmPafEcf.ACBrPAF1.PAF_N.RegistroN1.IE := FdmPafEcf.ACBrAAC1.IdentPAF.Empresa.IE; FdmPafEcf.ACBrPAF1.PAF_N.RegistroN1.IM := FdmPafEcf.ACBrAAC1.IdentPAF.Empresa.IM; FdmPafEcf.ACBrPAF1.PAF_N.RegistroN2.NOME := FdmPafEcf.ACBrAAC1.IdentPAF.Paf.Nome; FdmPafEcf.ACBrPAF1.PAF_N.RegistroN2.VERSAO := FdmPafEcf.ACBrAAC1.IdentPAF.Paf.Versao; FdmPafEcf.ACBrPAF1.PAF_N.RegistroN2.LAUDO := FdmPafEcf.ACBrAAC1.IdentPAF.NumeroLaudo; // lista dos arquivo executaveis e seus respectivos MD5 with FdmPafEcf.ACBrAAC1.IdentPAF.OutrosArquivos.New do //Aqui só está pegando e processando o ultimo nome (easyconfigurador.exe) begin Nome := 'EmpPafEcf.exe'; end; with FdmPafEcf.ACBrAAC1.IdentPAF.OutrosArquivos.New do //Aqui só está pegando e processando o ultimo nome (easyconfigurador.exe) begin Nome := 'BemaFI32.dll'; end; // Salvar o arquivo de autenticados FdmPafEcf.ACBrPAF1.SaveFileTXT_N('lista_autenticados.txt'); // Carregar o MD5 do arquivo de autenticados FdmPafEcf.ACBrAAC1.IdentPAF.ArquivoListaAutenticados.Nome := 'lista_autenticados.txt'; FdmPafEcf.ACBrAAC1.IdentPAF.ArquivoListaAutenticados.MD5 := FdmPafEcf.ACBrEAD1.MD5FromFile(ExtractFilePath(Application.ExeName) + 'PAF-ECF\' + 'lista_autenticados.txt'); FdmPafEcf.ACBrAAC1.SalvarArquivo; // setar o MD5 do arquivo de autenticados que deve aparecer no rodapé do cupom // se a impressora for MFD então fazer a programação para que apareça nas informações complementares // se não for MFD setar a propriedade InfoRodapeCupom.MD5 do FdmPafEcf.ACBrECF if FdmPafEcf.ACBrECF1.MFD then begin FdmPafEcf.ACBrECF1.InfoRodapeCupom.MD5 := EmptyStr; if FdmPafEcf.ACBrECF1.Estado = estLivre then begin FdmPafEcf.ACBrECF1.IdentificaPAF( FdmPafEcf.ACBrAAC1.IdentPAF.Paf.Nome + ' v' + FdmPafEcf.ACBrAAC1.IdentPAF.Paf.Versao, 'MD-5: ' + FdmPafEcf.ACBrAAC1.IdentPAF.ArquivoListaAutenticados.MD5 ); end; end else begin FdmPafEcf.ACBrECF1.InfoRodapeCupom.MD5 := FdmPafEcf.ACBrAAC1.IdentPAF.ArquivoListaAutenticados.MD5; end; Grato se alguem responder. -
Bom dia a todos, É fato que ainda para o pacote Java, não esta completo com todas as funções necessárias, exemplo o ACBrEAD e o ACBrAAC. Tomei liberdade para encapsular a classe ACBrEADInterop.java, e criei a ACBrEAD, para encapsular alguns métodos, o método "assinarArquivoComEAD(...)", funcionou! Os métodos que ainda não implementei, não pude entender a funcionalidade, se alguém puder me explicar, eu me a habilito a terminar de implementar os outros métodos. Por favor, sintam-se livres para comentar e me corrigir: package jACBrFramework.serial.ecf; import com.sun.jna.ptr.IntByReference; import jACBrFramework.ACBrClass; import jACBrFramework.ACBrException; import jACBrFramework.interop.ACBrEADInterop; import java.nio.ByteBuffer; public class ACBrEAD extends ACBrClass { public ACBrEAD() throws ACBrException {} @Override protected void onInitialize() throws ACBrException { IntByReference handle = new IntByReference(); int ret = ACBrEADInterop.INSTANCE.EAD_Create(handle); checkResult(ret); setHandle(handle.getValue()); } @Override protected void onFinalize() throws ACBrException{ int ret = ACBrEADInterop.INSTANCE.EAD_Destroy(getHandle()); checkResult(ret); setHandle(0); } @Override protected void checkResult(int result) throws ACBrException { switch (result) { case -1: String message; int LEN = 1024; ByteBuffer buffer = ByteBuffer.allocate(LEN); int ret = ACBrEADInterop.INSTANCE.EAD_GetUltimoErro(getHandle(), buffer, LEN); message = fromUTF8(buffer, ret); throw new ACBrException(message); case -2: throw new ACBrException("ACBr EAD não inicializado."); } } // Funções /** * @return String * @param arquivo local para gravar o arquivo * @param remove boolean * @throws ACBrException */ public String assinarArquivoComEAD(String nomeArquivo, boolean remove) throws ACBrException { ByteBuffer returnBuffer = ByteBuffer.allocate(STR_BUFFER_LEN); int ret = ACBrEADInterop.INSTANCE.EAD_AssinarArquivoComEAD(getHandle(), toUTF8(nomeArquivo), remove, returnBuffer, STR_BUFFER_LEN); checkResult(ret); return fromUTF8(returnBuffer, ret); } public void calcularChavePublica() throws ACBrException { ByteBuffer returnBuffer = ByteBuffer.allocate(STR_BUFFER_LEN); int ret = ACBrEADInterop.INSTANCE.EAD_CalcularChavePublica(getHandle(), returnBuffer, STR_BUFFER_LEN); checkResult(ret); } public void calcularEADArquivo(String nomeArquivo) throws ACBrException { ByteBuffer returnBuffer = ByteBuffer.allocate(STR_BUFFER_LEN); int ret = ACBrEADInterop.INSTANCE.EAD_CalcularEADArquivo(getHandle(), toUTF8(nomeArquivo), returnBuffer, STR_BUFFER_LEN); checkResult(ret); } //int EAD_GerarChaves(int eadHandle, ByteBuffer ChavePUB, ByteBuffer ChavePRI, int bufferLen); //int EAD_GerarXMLeECFc(int eadHandle, String NomeSH, String PathArquivo); //int EAD_MD5FromFile(int eadHandle, String Arquivo, ByteBuffer MD5, int bufferLen); //int EAD_MD5FromString(int eadHandle, String AString, ByteBuffer MD5, int bufferLen); public void removeEADArquivo(String nomeArquivo) throws ACBrException { int ret = ACBrEADInterop.INSTANCE.EAD_RemoveEADArquivo(getHandle(), toUTF8(nomeArquivo)); checkResult(ret); } public void verificaEAD(String ead) throws ACBrException { int ret = ACBrEADInterop.INSTANCE.EAD_VerificarEAD(getHandle(), toUTF8(ead)); checkResult(ret); } public void verificaEADArquivo(String nomeArquivo) throws ACBrException { int ret = ACBrEADInterop.INSTANCE.EAD_VerificarEADArquivo(getHandle(), toUTF8(nomeArquivo)); checkResult(ret); } } Obrigado;
- 3 replies
-
- ACBrEAD
- ACBrEADInterop
-
(e 1 mais)
Tags: