Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa tarde,

Começou a aparecer um erro quando tento selecionar um certificado para pegar o numero de serie.

Falha em obter o provedor de criptografia do certificado.

Estou usando a CAPICOM, já testei usando a WinCrypt com a Demo e deu o mesmo problema.

 

Dercide.

Postado

Bom dia,

Testei novamente a Demo, e com ela consigo executar o SelecionarCertificado e pegar o numero de serie do certificado usando :

ACBrNFe1.Configuracoes.Geral.SSLLib := libWinCrypt;   

Mas pelo meu sistema, só da erro, estou desde sexta direto tentando e não funciona,,, tanto com a libWinCryt como com a Capicom.

Outra coisa que testei, e vi que não carrega todos os certificados é o LerCertificadosStore. Usando a Demo ele não carregou um certificado da SERPRORRRRFBv4 que sempre uso.

Para usar a libWinCrypt que que configurar mais alguma coisa ?

Até semana passada estava usando a Capicom e funcionava 100%. Vi que em certos casos dava a mensagem de parâmetro invalido também.

Agora nem com a Capicom e nem com a libWinCrypt consigo pegar o numero de serie do certificado.

Se alguém já passou por isso e puder dar uma luz,, agradeço.

Dercide.

 

Postado

estou a mesma situação em um cliente, depois de atualizar para versão sem a capicom começou a apresentar
Falha em obter Provedor de Cripotografia do Certificado

quando tento selecionar o certificado, obter cnpj, obter data de validade.

Daniel Carus

 

 

  • Moderadores
Postado

Poste a mensagem de erro completa, ela deveria possuir mais informações.

function MsgErroGetCryptProvider: String;
var
  WinErro: DWORD;
begin
  WinErro := GetLastError;
  if WinErro = DWORD( NTE_KEYSET_NOT_DEF ) then
    Result := 'Provedor de Cripotografia não encontrado!'
  else if WinErro = DWORD( NTE_KEYSET_ENTRY_BAD ) then
    Result := 'Estrura de Chave obtida no Provedor de Cripotografia está corrompida'
  else
    Result := 'Falha em obter Provedor de Cripotografia do Certificado. Erro: '+GetLastErrorAsHexaStr;
end; 

 

  • Curtir 1
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.xpos.com.br
Postado (editado)

segue mensagem tanto com capicom quanto com wincrypt

---------------------------
Acbrnfe_demo
---------------------------
Falha em obter Provedor de Cripotografia do Certificado. Erro: 80090014.
---------------------------
OK   
---------------------------

Capturar.JPG

Capturar.JPG

Editado por Daniel Carus
teste no wincrypt

Daniel Carus

 

 

  • Moderadores
Postado
15 horas atrás, Daniel Carus disse:

segue mensagem tanto com capicom quanto com wincrypt

---------------------------
Acbrnfe_demo
---------------------------
Falha em obter Provedor de Cripotografia do Certificado. Erro: 80090014.
---------------------------
OK   
---------------------------

Capturar.JPG

Capturar.JPG

Qual função vc tentou executar?

  • Curtir 1
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.xpos.com.br
Postado (editado)

no demo é quando clica no botão sbtnGetCert executa o código

  edtNumSerie.Text := ACBrNFe1.SSL.SelecionarCertificado;

Ai vai aparecer a tela do IE com o certificado, clica no certificado para selecionar e ocorre a mensagem, ele não chega a retornar o numero de serie do certificado.

Tenho um exe compilado com revisão anterior (12646) que funciona normalmente a seleção de certificado, ai peguei o número de série do certificado por ele, salvei nas configs e tentei fazer as outras operações sem selecionar o certificado, mas não deu certo, se informar na mão o certificado e depois solicitar por exemplo status de serviço, ocorre o mesmo erro só com inativo inoperante na frente, se verificar a validade do certificado, tambem ocorre o erro, se verificar o CNPJ tambem ocorre.

Vi que mudou muita coisa da revisão 12646 até a atual, o que vc deseja que eu analise que poderia estar gerando esse erro?
pois tenho outros clientes funcionando normalmente com o mesmo exe, e nesse cliente especifico acontece isso, por enquanto deixei o exe da revisão anterior para ele trabalhar, se eu coloco o novo ocorre o erro.

 

Editado por Daniel Carus

Daniel Carus

 

 

Postado (editado)
5 minutos atrás, Daniel Simoes disse:

Comece migrando para libWinCrypt

 

 

 

Conforme imagem do 8º post, os testes foram feitos com os novos fontes do svn e com a config em libwincrypt e em capicom
O que mais deve ser migrado alem destas configurações e os fontes da revisão 13157 ?

Capturar.JPG.a539b965ff6eb40b5624da64aa95fd10.JPG

pois com essas configs em winCrypt é apresntado o erro.

Editado por Daniel Carus

Daniel Carus

 

 

Postado

O que precisar que gera log ou algo assim, estou em acesso ao cliente, qualquer coisa me chama no skype [email protected].

Uma observação, tem aquela nova tela de seleção de certificado, o TfrSelecionarCertificado ali aparece todos os dados do certificado, se selecionar por ali carrega o nro de serie, mas dai depois quando tenta usar qualquer outra função exemplo "Status de Serviço" aparece o erro, ou se usar o ACBrNFe1.SSL.CertCNPJ, o erro aparece.

Daniel Carus

 

 

  • Fundadores
Postado

Por favor debug a procedure

function TDFeWinCrypt.SelecionarCertificado: String;

Observe que todo o trabalho da exibição da Tela, é feita por uma chamada a API do Windows... na linha:

  ACertContext := CryptUIDlgSelectCertificateFromStore(
      FpStore,
      0,
      'Selecione um Certificado',
      'Selecione o Certificado que deseja utilizar:',
      CRYPTUI_SELECT_LOCATION_COLUMN or CRYPTUI_SELECT_ISSUEDBY_COLUMN or CRYPTUI_SELECT_INTENDEDUSE_COLUMN,
      0,
      Nil); 

Tente identificar, em qual linha, exatamente ocorre o problema...

 

Se você mudar para libCapicom usará o código de:

function TDFeCapicom.SelecionarCertificado: String; 

que é basicamente, o mesmo código, de antes do Refactoring...

(lembre-se de clicar em "Salvar Configurações", para que as modificações surtam efeito)

1 hora atrás, Daniel Carus disse:

mas dai depois quando tenta usar qualquer outra função exemplo "Status de Serviço" aparece o erro, ou se usar o ACBrNFe1.SSL.CertCNPJ, o erro aparece.

Qual erro exatamente ??

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado (editado)

@Daniel Simoes Em resposta
-> Qual erro exatamente ??
ocorre o mesmo erro do print

 

-> Por favor debug a procedure, Usando configurado como libWinCrypt

Não consigo debugar no delphi pq o cliente é em SP e eu to em SC, mas fazendo pelo bom e velho showmessage, consegui identificar que erro ocorre na unit AcbrDFeWinCrypt.pas, na função GetCertIsHardware, no seguinte trecho de código.

// Obtendo o Contexto do Provedor de Criptografia do Certificado //
  if not CryptAcquireCertificatePrivateKey( ACertContext, 0, Nil,
                                            mCryptProviderCert, dwKeySpec,
                                            pfCallerFreeProv) then
    raise EACBrDFeException.Create( MsgErroGetCryptProvider );

quando ele vai verificar esse CryptAcquireCertificatePrivateKey é que ocorre o raise, cheguei até aqui porque o esse procedimento vem da crypt32.dll, dai não consigo debugar.


 

Editado por Daniel Carus

Daniel Carus

 

 

  • Fundadores
Postado

Pelo que pesquisei, o problema " NTE_BAD_PROV_TYPE - 0x80090014L", pode estar relacionado ao tipo de certificado CNG - "Cryptography API: Next Generation".

O código escrito na ACBrDFeWinCrypt.pas previa apenas certificados CSP - "Cryptographic Service Providers"

Fiz algumas modificações na Unit... por favor teste com a Unit em anexo

ACBrDFeWinCrypt.pas

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Fundadores
Postado

Waldir,

Obrigado pelo retorno... esse seu Certificado apresentava problemas, com o código anterior ?

(Tratava-se de um Certificado compatível apenas com CNG ?)

Já integrei seus ajustes nos meus fontes... mas vou aguardar mais testes, antes de subir para o SVN...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Moderadores
Postado

@Daniel Simoes

Eu não estava conseguindo fazer o certificado A3 funcionar corretamente.

Com essa implementação agora está funcionando perfeitamente.

Citar

(Tratava-se de um Certificado compatível apenas com CNG ?)

Sim, um certificado A3 armazenado no cartão.

Citar

Já integrei seus ajustes nos meus fontes... mas vou aguardar mais testes, antes de subir para o SVN...

Ok.

  • Fundadores
Postado

OK, enviei as modificações para o SVN

Citar

-- ACBrDFeWinCrypt --
[-] Ajustes para possível correção de Certificados compatível apenas com "CNG"
    que causavam o erro "NTE_BAD_PROV_TYPE - 0x80090014", durante a carga do
    Certificado.
    http://www.projetoacbr.com.br/forum/topic/36017-provedor-de-criptografia/?do=findComment&comment=236710
    (por: DSA)

 

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado (editado)

Opa, demorei a responder devido a dificuldade de contato com o cliente.

Testado e funcionando o certificado com a revisão 13169,
a única coisa que aconteceu é um caracter especial que no inicio do CPF, mas dai usei uma função para deixar somente números e resolveu.

Obrigado @Daniel Simoes

revision 13169
Editado por Daniel Carus
caracter especial que no inicio do CPF

Daniel Carus

 

 

  • Este tópico foi criado há 2709 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.