Ir para conteúdo
  • Cadastre-se

dev botao

Ler certificado digital salvo no banco de dados


Ver Solução Respondido por Juliomar Marchetti,
  • Este tópico foi criado há 1068 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Pessoal

 

Se alguem puder me ajudar. Até procurei no forum e encontrei falando do meu problema, mas não consegui encaixar pra resolver o meu caso. Tenho salvo no banco de dados o arquivo do certificado. *.pfx. Atualmente faço o download numa pasta temporária e utilizo, mas queria ler o certificado direto do banco de dados sem ter baixá-lo...

Utilizo o firebird.

O campo no banco está como  BLOB SUB_TYPE 0 SEGMENT SIZE 2048;

 

function VerificarValidadeCertificado(caminho, senha : string) : TDate;
var
  nfe : TACBrNFe;
begin
  if (senha = '') or not(FileExists(caminho)) then begin
    Result := 0;
    Exit;
  end;

  try
    nfe := CriarACBrNFe;
    nfe.Configuracoes.Certificados.ArquivoPFX := caminho;
    nfe.Configuracoes.Certificados.Senha := senha;
    nfe.Configuracoes.Geral.SSLCryptLib := cryWinCrypt;
    nfe.Configuracoes.Geral.SSLHttpLib := httpWinHttp;
    nfe.Configuracoes.Geral.SSLLib := libWinCrypt;
    nfe.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2;
    Result := nfe.SSL.CertDataVenc;
  finally
    FreeAndNil(nfe);
  end;
end;

 

Criei essa função para pegar no banco de dados

function Certificado : string;
var
  cds : TBDClientDataSet;
begin
  try
    cds := CriaCds;
    cds.Close;
    cds.SQL.Add('SELECT * FROM EMPRESA ' +
                ' WHERE EMPCOD = ' + IntToStr(GetSessao.Empresa.Codigo)
                );
    cds.Open;
    Result := cds.FieldByName('EMPCERT').AsString;
  finally
    FreeAndNil(cds);
  end;
end;

 

Porém dá erro!

 

 

Alguem que sofreu com isso, pode me ajudar?

 

 

 

 

 

 

 

Eu salvo assim no BD

 

procedure TfrmCadastroEmpresa.TelaParaCds;
begin
  inherited;
  cdsCadastro.Editar;
  cdsCadastro.FieldByName('EMPCERTSENHA').AsString := Criptografar(txtSenhaCertificado.Value);

  if (arquivoSelecionado <> '') then
    TBlobField(cdsCadastro.FieldByName('EMPCERTARQ')).LoadFromFile(arquivoSelecionado);

  cdsCadastro.Post;

end;

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