Jump to content

Delphi chamada_delphi.png acbr.png

C6 chamada_c6.png botao.png

Ler certificado digital salvo no banco de dados


Go to solution Solved by Juliomar Marchetti,
  • Este tópico foi criado há 150 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

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;

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.