Ir para conteúdo
  • Cadastre-se

dev botao

Assinando um aplicativo .exe com capicom


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

Recommended Posts

Tendo a dll capicom.dll  registra ela com comando regsvr32 capicom.dll

No Delphi : acesse, dentro do menu Component, a opção Import Component

Na janela que aparece, selecione Import a Type Library e pressione Next

para gerar a Unit CAPICOM_TLB.pas  inclua no projeto uses CAPICOM_TLB;

 

agora em um botão coloca o seguinte código

procedure TForm1.Button1Click(Sender: TObject);
var
  Certificado: ICertificate2;
  lSigner : ISigner2;
  SignedCode : ISignedCode;
begin
    {Assina um exe Digitalmente}
    try
      Certificado := CoCertificate.Create;
      SignedCode := CoSignedCode.Create;
      lSigner := CoSigner.Create;
      Certificado.Load('Certificado.pfx', 'senhacertificado', CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, CAPICOM_STORE_OPEN_READ_ONLY);
      SignedCode.FileName := 'Aplicativo.exe';
      lSigner.Certificate := Certificado;
      SignedCode.Sign(lSigner);
      SignedCode.TimeStamp('http://timestamp.digicert.com');
    finally

    end;
end;

 

Obs: Postei aqui porque não achei isso em lugar algum na net e queria deixar registrado!

  • Curtir 3
  • Obrigado 2
Link para o comentário
Compartilhar em outros sites

procedure TForm1.Button2Click(Sender: TObject);
var
  Store: IStore3;
  CertsLista, CertsSelecionado: ICertificates2;
  CertDados: ICertificate;
  lSigner : ISigner2;
  SignedCode : ISignedCode;
begin
  Store := CoStore.Create;
  Store.Open(CAPICOM_CURRENT_USER_STORE, 'My', CAPICOM_STORE_OPEN_READ_ONLY);
  CertsLista := Store.Certificates as ICertificates2;
  CertsSelecionado := CertsLista.Select('Certificado(s) Digital(is) disponível(is)', 'Selecione o Certificado Digital para uso no aplicativo', false);
  if not (CertsSelecionado.Count = 0) then
  begin
    CertDados := IInterface(CertsSelecionado.Item[1]) as ICertificate;
    SignedCode := CoSignedCode.Create;
    lSigner := CoSigner.Create;
    SignedCode.FileName := 'Aplicativo.exe';
    lSigner.Certificate := CertDados;
    SignedCode.Sign(lSigner);
    SignedCode.TimeStamp('http://timestamp.digicert.com');
  end;
end;

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
  • Moderadores
2 minutos atrás, Idea Sistemas Sistemas disse:

Bom dia, Isso ajuda a evitar erros com o Warsal? componente de segurança de banco?

Ter a tua aplicação assinada ajuda sim.

Mas não necessariamente você precisa desenvolver a ferramenta pra assinar, que é o caso deste tópico. Tem utilitários prontos pra isso, como o signtool.exe da própria Microsoft.

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

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