Coletando e verificando certificados
[CAPICOM é um componente somente de 32 bits que está disponível para uso nos seguintes sistemas operacionais: Windows Server 2008, Windows Vista e 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.]
Geralmente, um grupo de certificados precisa ser coletado e verificado. Isso geralmente seria feito para preparar um grupo de destinatários para uma mensagem em envelope. No exemplo a seguir, os certificados em um repositório local são enumerados e verificados quanto à validade. Em seguida, um repositório do Active Directory é aberto para recuperar e adicionar ao repositório local novos certificados. Os certificados recuperados do repositório do active directory são verificados quanto à validade e, se válidos, são adicionados ao repositório local. Ambas as lojas são fechadas.
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.
Neste exemplo, o nome do repositório local é passado como um parâmetro de cadeia de caracteres. Uma cadeia de caracteres que indica os critérios de pesquisa para certificados no repositório do Active Directory também é passada como um parâmetro.
Sub CollectValidCerts(ByVal storename As String, ByVal _
certname As String)
On Error GoTo errorhandler
' Prepare a local certificate store to contain valid
' certificates for the recipients of an enveloped
' message.
' Open the local store and go to the certificates in the store
' 1. Display the certificate
' 2. Check the validity of the certificate
' 3. Remove certificates that are not valid from the store
Dim LocalStore As New Store
Dim ADStore As New Store
Dim i As Long
LocalStore.Open(CAPICOM_CURRENT_USER_STORE, storename, _
CAPICOM_STORE_OPEN_READ_WRITE)
MsgBox("There are " & LocalStore.Certificates.Count & _
" certificates in this store ")
For i = 1 To LocalStore.Certificates.Count
If LocalStore.Certificates.Item(i).IsValid Then
LocalStore.Certificates.Item(i).Display()
Else
MsgBox("A certificate that is not valid was found.")
End If
Next i
' Open the AD store and retrieve a certificate based
' on a string passed into the function. Add any valid
' certificates found to the local store.
ADStore.Open(CAPICOM_ACTIVE_DIRECTORY_USER_STORE, certname, _
CAPICOM_STORE_OPEN_READ_ONLY)
MsgBox("There are " & ADStore.Certificates.Count & _
" certificates in the AD store.")
For i = 1 To ADStore.Certificates.Count
If ADStore.Certificates.Item(i).IsValid Then
ADStore.Certificates.Item(i).Display()
LocalStore.Add(ADStore.Certificates.Item(i))
Else
MsgBox("the certificate from the AD store is not valid.")
End If
Next i
LocalStore = Nothing
ADStore = Nothing
MsgBox("Sub finished without error ")
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