Ir para conteúdo
  • Cadastre-se

Painel de líderes

Conteúdo popular

Showing content with the highest reputation on 07-02-2024 em todas as áreas

  1. Bom dia! Fiz um teste com seu XML e o programa exemplo. Recebi o mesmo resultado. Testando com o exemplo em C# não obtive problemas, logo acredito ser algo específico do demo em Java. Criada a #TK-5104 para análise do caso e parecer do consultor responsável.
    3 pontos
  2. Bom dia, houve um equívoco de nossa parte ao realizar o teste de envio do CT-e, ao realizar um pequeno ajuste e testar novamente obtivemos êxito no envio concluindo assim que a tag está sendo gerada corretamente, grato pela atenção e retorno de vocês!!
    3 pontos
  3. Olá pessoal! Foi publicado no dia 07/02/2024, na página do Instituto Nacional de Tecnologia uma notícia informando que atendendo a pedidos de múltiplos representantes dos setores envolvidos, a consulta pública foi prorrogada. Agora o formulário pode ser preenchido e enviado até o dia 26 de fevereiro. Veja a notícia na íntegra AQUI.
    2 pontos
  4. Pedi o cliente para gerar novamente o certificado, verifiquei que está dando erro de validação no mesmo.
    2 pontos
  5. ITI lança consulta pública para modernização da ICP-Brasil O Instituto Nacional de Tecnologia da Informação (ITI) lança consulta pública que estará aberta para sugestões da sociedade entre os dias 26/01/2024 e 12/02/2024. A iniciativa objetiva o alinhamento com a prática internacional e visa simplificar e deixar mais claro o perfil dos diferentes tipos de certificado da ICP-Brasil. A ação institui o certificado do tipo Selo Eletrônico, em substituição ao certificado de pessoa jurídica, com o propósito de garantir autenticidade e origem de documentos, mantendo os certificados com propósito de assinatura exclusivamente para pessoa física; institui os certificados de Aplicações Especiais em Software e em Hardware, bem como o tipo de certificado SSL/TLS Webtrust; e, ainda, extingue os certificados de Sigilo (S1 a S4) e o certificado A1. Para o presidente executivo da Associação das Autoridades de Registro do Brasil (AARB), Jorge Prates, a consulta é de extrema importância para a modernização da Infraestrutura de Chaves Públicas Brasileira e lembra que a pauta foi apresentada pelo então presidente interino do ITI em uma live para os associados da AARB. “Nossos associados tem um papel fundamental, pois são os que lidam diretamente com a tecnologia na emissão dos certificados digitais. Vamos criar um grupo de trabalho para analisarmos as propostas e nos manifestarmos como Associação”, diz Prates. Com a presente consulta pública, o ITI busca promover a ampla divulgação da proposta normativa, bem como possibilitar a manifestação de órgãos e entidades representativas, pessoas físicas e pessoas jurídicas interessadas no tema. 1. Contextualização da proposta 2. Clique aqui e encaminhe sua colaboração https://www.aarb.org.br/iti-lanca-consulta-publica-para-modernizacao-da-icp-brasil/
    1 ponto
  6. Boa tarde, estou dando continuidade ao tópico iniciado em: continuando a conversão do discord com @Diego Foliene, conforme solicitado fiz os testes com postman e deu a mesma mensagem de erro:
    1 ponto
  7. https://acbr.sourceforge.io/ACBrLib/NFE_ConfigGravarValor.html
    1 ponto
  8. Não achei o método NFE_ConfigGravarValor() no exemplo de uso do manual. Se não fosse você, eu estaria quebrando a cabeça até agora. Consegui assinar. Obrigado!
    1 ponto
  9. blzinha Juliomar vou testar mais tarde e te falo Obrigado
    1 ponto
  10. Claro. Mas eu expliquei como fiz. Apenas testei a versão v1_05_01 e deu certo. Obrigado por responder.
    1 ponto
  11. a princípio o ACBrNFSeX está a funcionar tranquilo consegue validar se tu está com ele atualizado ou se estiver usando o antigo tem que migrar para esse novo
    1 ponto
  12. agora funciono com a segunda configuração : [4311304] ; Atualizado em 08/01/2024 Nome=Lagoa Vermelha UF=RS Provedor=IPM Versao=1.01 Params=ParametroExtra:eletron=1 ProRecepcionar=https://lagoavermelha.atende.net/?pg=rest&service=WNERestServiceNFSe&cidade=padrao HomRecepcionar=https://homologacao.atende.net/?pg=rest&service=WNERestServiceNFSe&cidade=padrao -------------------------------------------------------------------------------------------------------------------------- com essas configurações consegui transmitir, arquivo em anexo já com as alterações(2 configuração) que funcionaram em anexo para analise. ACBrNFSeXServicos.rar
    1 ponto
  13. Boa tarde, Criada a TK-5105 para avaliação. Obrigado pela contribuição.
    1 ponto
  14. Utilize o método NFE_ConfigGravarValor() para gravar a senha no ini, ela deve ser criptografada e o método faz isso automaticamente. Se já estiver fazendo isso, confirme se configurou: SSLCryptLib=1 SSLHttpLib=3 SSLXmlSignLib=4 SSLType=5 Não esqueça de copiar as dlls de dependências da OpenSSL e LibXml2, respeitando a arquitetura em que você compila sua aplicação, x86 ou x64, independente do SO.
    1 ponto
  15. bom dia em relação ao conflito da porta do pinpad tive o mesmo problema ao tentar exibir qrcode de pix no pinpad mesmo fazendo assim tefapi.DesInicializar; freeandnil(tefapi); application.ProcessMessages; sleep(5000); TACBrAbecsPinPad.IsEnabled := true; // erro de acesso negado o que eu percebi foi o seguinte: na Tef, quando a dll da paygo finaliza uma transação ela envia um comando CLO para o pinpad pra fechar a conexão do pinpad, e daí o display do pinpad "apaga" mas alguns comandos do TefApi comunicam com o pinpad mas não enviam um CLO, daí o pinpad fica "aceso", como se a conexão ficasse ativa isso acontece em * tefapi.Inicializar; * tefapi.ExibirMensagemPinPad(); * se cancelar uma transação de pagamento no meio dela, a dll da paygo encerra enviando um CLO mas depois o TefApi envia uma mensagem de "operacao cancelada" e como não há CLO o pinpad fica "aceso" * em algumas operações Administrativas também acontece isso daí quando eu chamo tefapi.DesInicializar; se o pinpad estiver "aceso" a porta fica bloqueada, só fechando o EXE para o TACBrAbecsPinPad poder conectar o ideal seria que dentro da função tefapi.DesInicializar, o componente pudesse enviar através da dll da paygo um comando CLO para o pinpad. eu contornei isso com uma Gambiarra.... aqui no meu ppc930 deu certo tefapi.EfetuarAdministrativa(tefopTesteComunicacao, ''); // dar um tempo para operação administrativa terminar tefapi.DesInicializar; TACBrAbecsPinPad.IsEnabled := true; a operação de Teste de comunicação no final envia um CLO e "apaga" o pinpad, daí desbloqueia a porta na verdade eu coloquei tefapi.EfetuarAdministrativa(tefopTesteComunicacao, '') após todas as operação de Tef em que ao serem concluídas o pinpad fica "aceso" o ideal é que o pinpad sempre ficasse "apagado"(CLO) após as rotinas de Tef terminarem
    1 ponto
  16. Bom dia Felipe, Faça um teste com a unit em anexo, lembre-se que é necessário reinstalar o ACBr e depois compilar a aplicação. PRODAUB.GravarXml.pas
    1 ponto
  17. Bom dia ! Fizemos a alteração necessária e vai estar disponibilizada na próxima versão da lib, te aviso assim q estiver disponível.
    1 ponto
  18. Bom dia Willian, Tente informar "01" com série em vez de "1" Verifique também com o provedor se existe uma série especifica para o ambiente de homologação.
    1 ponto
  19. Bom dia. Essa é uma das várias dúvidas e ressalvas que muitos colegas do setor tem com está mudança. Por isso é importante que respondam a consulta pública e também o formulário da AFRAC que tem no tópico. O primeiro, para expressar essas preocupações para quem pretende realizar esta mudança e o segundo para que a AFRAC, que tem um papel forte como representante das SW Houses também possa agir expondo essas preocupações.
    1 ponto
  20. Bom dia, Revise as configurações da biblioteca. https://acbr.sourceforge.io/ACBrLib/DFe.html https://acbr.sourceforge.io/ACBrLib/ConfiguracoesdaBiblioteca16.html Configure o LogNivel=4 paranóico https://acbr.sourceforge.io/ACBrLib/Geral.html
    1 ponto
  21. Boa tarde, Todos os documentos devem ser do mesmo ambiente. Se vai fazer um cte em homologação as nfe referenciadas devem ter sido emitidas em homologação também.
    1 ponto
  22. Bom dia Kaue, Mas porque você enviou um RPS Nota Fiscal Conjugada (2) em vez de RPS (1) ?
    1 ponto
  23. Parece meio bobo, mas vai em Configurações - Sistema - Tela - Procure por Verifica se esta 100% --- Não sei porque , mas já passei por isto e o problema era esta configuração estar diferente de 100%
    1 ponto
  24. Informamos que o Instituto Nacional de Tecnologia da Informação (ITI) abriu a Consulta Pública nº 01/2024 para tratar sobre a Modernização da Infraestrutura de Chaves Públicas Brasileira (ICP-Brasil), Certificados. Foi elaborado por parte da AFRAC um formulário visando coletar comentários, observações e sugestões sobre as alterações pretendidas, afim de reunir as opiniões daqueles que compõe o ecossistema que será impactado As respostas ao formulário deverão ser realizadas até 09/02/2024. Observações O e-mail para contato no formulário deverá ser o principal da empresa, caso não associada da AFRAC. Esta é uma pesquisa elaborada pela AFRAC sendo diferente da que esta disponível no portal gov.br. Para acessar o formulário, clique no link: https://bit.ly/ConsultaPública_ITI
    1 ponto
  25. Programa Exemplo foi enviado para o SVN. At revision: 32343
    1 ponto
  26. Está faltando o path onde está a unit
    1 ponto
  27. Boa noite! Segue o arquivo com a sugestão de correção para evitar memoryLeak na leitura de alguns certificados. ACBrDFeOpenSSL.pas
    1 ponto
  28. Boa tarde! Acho que consegui algo. Consegui reproduzir o teste do inicio do post sem que ocorra vazamento de memória na leitura do certificado. Mas antes de prosseguir volto ao post anterior, onde é mencionado uma solução com o método sk_X509_pop_free, ele até existe no arquivo ssl_openssl.pas, mas é inócuo, já que o método não existe na DLL. "_SkX509PopFree := GetProcAddr(SSLUtilHandle, 'SK_X509_POP_FREE');" sempre retorna nulo. A solução que encontrei foi uma comparação dos arquivos ssl_openssl.pas e ACBrDFeOpenSSL.pas. Comparei os métodos TSSLOpenSSL.LoadPFX e TDFeOpenSSL.LerPFXInfo e peguei trechos de código de um e adicionei ao outro. Código comparados: Código da classe: ssl_openssl.TSSLOpenSSL function TSSLOpenSSL.LoadPFX(pfxdata: Ansistring): Boolean; var cert, pkey, ca: SslPtr; b: PBIO; p12: SslPtr; begin Result := False; b := BioNew(BioSMem); try BioWrite(b, pfxdata, Length(PfxData)); p12 := d2iPKCS12bio(b, nil); if not Assigned(p12) then Exit; try cert := nil; pkey := nil; ca := nil; try {pf} if PKCS12parse(p12, FKeyPassword, pkey, cert, ca) > 0 then if SSLCTXusecertificate(Fctx, cert) > 0 then if SSLCTXusePrivateKey(Fctx, pkey) > 0 then Result := True; // Set Certificate Verification chain if Result and (ca <> nil) then SslCtxCtrl(Fctx, SSL_CTRL_CHAIN, 0, ca); {pf} finally EvpPkeyFree(pkey); X509free(cert); SkX509PopFree(ca,_X509Free); // for ca=nil a new STACK was allocated... end; {/pf} finally PKCS12free(p12); end; finally BioFreeAll(b); end; end; Código da classe ACBrDFeOpenSSL.TDFeOpenSSL: function TDFeOpenSSL.LerPFXInfo(const PFXData: Ansistring): Boolean; var ca, p12: Pointer; b: PBIO; begin Result := False; DestroyKey; b := BioNew(BioSMem); try BioWrite(b, PFXData, Length(PFXData)); p12 := d2iPKCS12bio(b, nil); if not Assigned(p12) then Exit; try DestroyCert; DestroyKey; ca := nil; if PKCS12parse(p12, FpDFeSSL.Senha, FPrivKey, FCert, ca) > 0 then begin if (FCert <> nil) then begin GetCertInfo( FCert ); Result := True; end; end; finally PKCS12free(p12); end; finally BioFreeAll(b); end; end; Basicamente o que encontrei diferente foi o código, que passei para ACBrDFeOpenSSL : if SSLCTXusecertificate(Fctx, Fcert) > 0 then if SSLCTXusePrivateKey(Fctx, FPrivKey) > 0 then Result := True; // Set Certificate Verification chain if Result and (ca <> nil) then SslCtxCtrl(Fctx, SSL_CTRL_CHAIN, 0, ca); A modificação Final ficou assim: TDFeOpenSSL = class(TDFeSSLCryptClass) private .... Fctx: PSSL_CTX; // Adicionado proteced ... procedure FreeContext; // Adicionado end; constructor TDFeOpenSSL.Create(ADFeSSL: TDFeSSL); begin inherited Create(ADFeSSL); ... Fctx := nil; // Adicionado end; destructor TDFeOpenSSL.Destroy; begin ... FreeContext; // Adicionado inherited Destroy; end; procedure TDFeOpenSSL.FreeContext; // Adicionado begin if assigned (Fctx) then begin SslCtxFree(Fctx); Fctx := nil; ErrRemoveState(0); end; end; function TDFeOpenSSL.LerPFXInfo(const PFXData: Ansistring): Boolean; procedure SetContex; // Adicionado begin FreeContext; Fctx := nil; case FpDFeSSL.SSLType of LT_SSLv2: Fctx := SslCtxNew(SslMethodV2); LT_SSLv3: Fctx := SslCtxNew(SslMethodV3); LT_TLSv1: Fctx := SslCtxNew(SslMethodTLSV1); LT_TLSv1_1: Fctx := SslCtxNew(SslMethodTLSV1_1); LT_TLSv1_2: Fctx := SslCtxNew(SslMethodTLSV1_2); LT_TLSv1_3: Fctx := SslCtxNew(SslMethodTLSV1_3); LT_all: begin //try new call for OpenSSL 1.1.0 first Fctx := SslCtxNew(SslTLSMethod); if Fctx=nil then //callback to previous versions Fctx := SslCtxNew(SslMethodV23); end; else Exit; end; end; var ca, p12: Pointer; b: PBIO; begin Result := False; DestroyKey; SetContex; // Adicionado b := BioNew(BioSMem); try BioWrite(b, PFXData, Length(PFXData)); p12 := d2iPKCS12bio(b, nil); if not Assigned(p12) then Exit; try DestroyCert; DestroyKey; ca := nil; if PKCS12parse(p12, FpDFeSSL.Senha, FPrivKey, FCert, ca) > 0 then begin // Adicionado Inicio ================================================= if SSLCTXusecertificate(Fctx, Fcert) > 0 then if SSLCTXusePrivateKey(Fctx, FPrivKey) > 0 then Result := True; // Set Certificate Verification chain if Result and (ca <> nil) then SslCtxCtrl(Fctx, SSL_CTRL_CHAIN, 0, ca); // Adicionado Fim ==================================================== if (FCert <> nil) then begin GetCertInfo( FCert ); Result := True; end; end; finally PKCS12free(p12); end; finally BioFreeAll(b); end; end; Depois dessa modificação o memoryleak parou de acontecer. Não sei o que esses métodos fazem, mas me parece que ele cria um vinculação da Variável "ca" com Fctx e quando o método FreeContex finaliza Fctx ele também deve estar eliminando os objetos apontados por "ca". Li na documentação de PKCS12parse que quando é passado "ca" como null ele cria um objeto internamente. Talvez seja isso.
    1 ponto
×
×
  • 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.