Ir para conteúdo
  • Cadastre-se

dev botao

ACBRPIXCD configuração do campo ChavePrivada/Certificado


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

Recommended Posts

Bom dia, estou com a seguinte situação, gerei os arquivos de chave privada e certificado

quando seto as propriedades:

         Inter.ArquivoChavePrivada := 'D:\Sistemas\XW\PDV\Certificados\PIX.Inter.Certificado.key';
         Inter.ArquivoCertificado := 'D:\Sistemas\XW\PDV\Certificados\PIX.Inter.Certificado.crt';

funciona certinho.

quando coloco esses arquivos em Recursos e carrego na propriedades:

       Inter.ChavePrivada := fSysWin.LoadRecurse('PIX_INTER_KEY');
       Inter.Certificado := fSysWin.LoadRecurse('PIX_INTER_CRT');

 

function TSystemWindows.LoadRecurse(Name: String): String;

 sl := TStringList.Create;
      Stream := TResourceStream.Create(hInstance, Name, RT_RCDATA);
      sl.LoadFromStream(Stream);

da erro de certificado e chaveprivada!

qual é a diferenca da ArquivoChavePrivada/ArquivoCertificado e ChavePrivada/Certificado.

vi que na ChavePrivada/Certificado converte PEM para ConvertPEMToASN1 mas não consegui entender!

Link para o comentário
Compartilhar em outros sites

  • Consultores

A diferença é que as propriedades ArquivoChavePrivada/ArquivoCertificado esperam o caminho do arquivo.
Já as propriedades ChavePrivada/Certificado esperam o conteúdo do arquivo.

No seu caso o problema provavelmente está no TStringList, pois talvez ele esteja perdendo caracteres de controle do conteúdo do arquivo.

Tente algo como:

function LoadFile(aFile: String): AnsiString;
var
  wStr: AnsiString;
  wMS: TMemoryStream;
begin
  wMS := TMemoryStream.Create;
  try
    wMS.LoadFromFile(aFile);
    wMS.Position := 0;
    SetLength(wStr, wMS.Size);
    wMS.ReadBuffer(PAnsiChar(wStr)^, wMS.Size);
  finally
    wMS.Free;
  end;

  Result := wStr;
end;

 

...  
  Inter.ChavePrivada := LoadFile('D:\Sistemas\XW\PDV\Certificados\PIX.Inter.Certificado.key');
  Inter.Certificado := LoadFile('D:\Sistemas\XW\PDV\Certificados\PIX.Inter.Certificado.crt');
...

(IMPORTANTE: Lembre-se de sempre usar AnsiString para armazenar o conteúdo de arquivos binários, justamente pra não haver perda de dados)

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

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