Compartilhar via


Adicionando certificados a um repositório de certificados

[CAPICOM é um componente somente de 32 bits que está disponível para uso nos seguintes sistemas operacionais: Windows Server 2008, Windows Vista, Windows XP. Em vez disso, use o .NET Framework para implementar recursos de segurança. Para obter mais informações, consulte Alternativas ao uso de CAPICOM.]

Os certificados poderão ser adicionados ou removidos dos repositórios de certificados se o repositório for aberto com permissão de leitura/gravação. A permissão de leitura/gravação não é concedida aos repositórios do Active Directory. Embora os certificados possam ser adicionados ou removidos dos repositórios de memória, as alterações nos repositórios de memória não são mantidas entre as sessões.

Os certificados podem ser adicionados a um repositório de certificados aberto com permissão de leitura/gravação usando o método Add . Um certificado pode ser removido de um repositório de certificados aberto com permissão de leitura/gravação usando o método Remove . Novos repositórios podem ser criados e salvos nos locais CAPICOM_CURRENT_USER_STORE e CAPICOM_LOCAL_MACHINE_STORE. Os repositórios recém-criados em qualquer um desses locais podem ser abertos com permissão de leitura/gravação.

No exemplo a seguir, dois repositórios de certificados são abertos. Certificados de entidades com sobrenomes começando com F são recuperados do repositório do Active Directory. O CAPICOM_CURRENT_USER_STORE, CAPICOM_CA_STORE repositório é aberto como um repositório de leitura/gravação e o primeiro certificado da coleção de certificados no repositório do Active Directory é adicionado aos certificados no CAPICOM_CA_STORE.

Para fins de demonstração, o exemplo mostra a abertura de lojas nos locais CAPICOM_MEMORY_STORE, CAPICOM_CURRENT_USER_STORE e CAPICOM_LOCAL_MACHINE_STORE. O exemplo mostra como exportar todos os certificados de um repositório aberto, gravar os certificados exportados em um arquivo, lê-los novamente e importá-los para um repositório diferente. Os certificados recém-importados são enumerados e exibidos.

Em qualquer erro CAPICOM, um valor decimal negativo de Err.Number é retornado. Para obter mais informações, consulte CAPICOM_ERROR_CODE. Para obter informações sobre valores decimais positivos de Err.Number, consulte Winerror.h.

O exemplo a seguir mostra a abertura de repositórios de certificados usando a associação antecipada na declaração dos objetos Store e na criação de uma instância desses objetos.

Sub AddCert()
On Error GoTo ErrorHandler
' The following shows two different ways to declare and
' create a store object.

Dim myADstore As New Store

Dim myCAstore As Store
Set myCAstore = New Store

' In this example, the Active Directory store will be searched for a 
' certificate with a subject name that begins with the letter F. 
' This is done by using the string "SN=F*" as the name of the store.

Dim SubjectNameSN As String
SubjectNameSN = "SN=F*"

' Active Directory stores can only be opened with read-only
' access.

myADstore.Open CAPICOM_ACTIVE_DIRECTORY_USER_STORE,
                SubjectNameSN , CAPICOM_STORE_OPEN_READ_ONLY

'  This example assumes that the store opened and that
'  at least one certificate was returned.
'  A complete application would ensure that at least one certificate
'  was in the store before proceeding and would
'  also select one or more of the certificates returned
'  to be added instead of using the first certificate
'  in the collection.

'  Open the MY store so that a certificate can be added.

myCAstore.Open CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
                    CAPICOM_STORE_OPEN_READ_WRITE

myCAstore.Add myADstore.certificates.Item(1)

' Release the two store objects.

Set myCAstore = Nothing
Set myADstore = Nothing
Exit Sub

ErrorHandler:
If Err.Number > 0 Then
    MsgBox "Visual Basic error found:" & Err.Description
Else
    MsgBox "CAPICOM error found : " & Err.Number
End If
End Sub