次の方法で共有


証明書の収集と検証

[CAPICOM は、次のオペレーティング システムで使用できる 32 ビットのみのコンポーネントです: Windows Server 2008、Windows Vista、および Windows XP。 代わりに、.NET Frameworkを使用してセキュリティ機能を実装します。 詳細については、「 CAPICOM を使用する代替手段」を参照してください。

多くの場合、 証明書 のグループを収集して検証する必要があります。 これは、多くの場合、封筒メッセージの受信者のグループを準備するために行われます。 次の例では、ローカル ストア内の証明書が列挙され、有効性が確認されます。 次に、Active Directory ストアを開いて、新しい証明書を取得してローカル ストアに追加します。 Active Directory ストアから取得した証明書の有効性がチェックされ、有効な場合はローカル ストアに追加されます。 その後、両方の店舗が閉じられます。

CAPICOM エラーでは、 Err.Number の負の 10 進値が返されます。 詳細については、「 CAPICOM_ERROR_CODE」を参照してください。 Err.Number の正の 10 進値については、「Winerror.h」を参照してください。

この例では、ローカル ストアの名前が文字列パラメーターとして渡されます。 Active Directory ストア内の証明書の検索条件を示す文字列もパラメーターとして渡されます。

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