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;