23 de abril de 2009

Trabalhando com o Certificate Store em Win32

Há alguns dias, postei um texto mostrando como acessar o Certificate Store do Windows através framework .NET e C#. Como nem todo mundo trabalha com .NET - a ABC71 mesmo usa o C++ Builder, que é Win32 - me perguntaram se é possível trabalhar no Win32 com aquelas classes do exemplo. A reposta curta é sim !
A resposta mais comprida é que isso envolve o uso de um ActiveX distribuído pela Microsoft chamado CAPICOM - Cryptographic Application Programming Interface através de COM.

Portanto, é necessário primeiro importar esse ActiveX, isto é, fazer com que o Delphi ou o C++ Builder gerem um arquivo fonte que nos permita utilizar as classes do CAPICOM. No passo a passo :
  1. Faça o download do CAPICOM e instale-o, caso ainda não o tenha feito.
  2. Localize a biblioteca capicom.dll e execute na linha de comando a seguinte instrução :

    regsvr32 capicom.dll

    Isto registra no Windows a Type Library associada a esse ActiveX.
  3. No Delphi : acesse, dentro do menu Component, a opção Import Component. Obs: Tenho a versão 2007 do Delphi mas não deve ser muito diferente nas outras. No C++ Builder 5, a opção de menu é Import Type Library, dentro do menu Project.
  4. Na janela que aparece, selecione Import a Type Library e pressione Next.
  5. Encontre o CAPICOM Type Libray na lista exibida e pressione Next.
  6. Nessa última tela, apenas marque a opção Generate Component Wrappers pois ele gera um código mais fácil de ser usado no C++ Builder.
  7. Pressione Finish e você tem um fonte com o mapeamento das classes do CAPICOM - inclusive aquelas que mostrei usando C#. Adicione esse fonte aos seus projetos que farão uso do CAPICOM.
Essas classes podem então ser usadas para acessar o Certificate Store e também para assinar documentos, criptografar e descriptografar informações, etc.

A Microsoft, no entanto, considera esse ActiveX obsoleto e recomenda que se use as classes conforme publicado no framework .NET. Além disso, a biblioteca ActiveX tem que ser distribuída e instalada junto com sua aplicação pois pode não estar presente em algumas máquinas.
Em todo caso, inclui alguns posts mostrando como usar as classes do CAPICOM no Delphi.


4 comentários :

Paulo disse...

Amei! Segui suas instruções e criei meu próprio par de pacotes (runtime e design-time) contendo o CAPICOM e já estou usando no meu sistema.

Meu muitíssimo obrigado pelo valioso artigo!

Paulo França Lacerda.

Danilo Alves Faria disse...

Quando eu coloco para executar não aceita e aparece a mensagem abaixo,tem solução?

[Window Title]
RegSvr32

[Content]
Talvez o módulo "capicom.dll" não seja compatível com a versão do Windows que você está executando. Verifique se ele é compatível com uma versão x86 (32 bits) ou x64 (64 bits) do arquivo regsvr32.exe.

[OK]

Luís Gustavo Fabbro disse...

Danilo

Que versão do Windows vc está usando? De acordo com os requisitos do CAPICOM, a biblioteca teoricamente não tem suporte para versões do Windows pós XP (Vista, 7 e 8).

[]s

Lucas Ramiro Nogueira disse...

Instalamos no Windows 8.1 e funcionou normalmente.

Postar um comentário

OBS: Os comentários enviados a este Blog são submetidos a moderação. Por isso, eles serão publicados somente após aprovação.

Observação: somente um membro deste blog pode postar um comentário.