次の方法で共有


ドキュメントの署名の確認

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

署名されたドキュメントを受信すると、署名または署名の有効性を確認できます。 署名は、次の場合に確認できます。

  • 署名ハッシュの有効性
  • 署名者の証明書の有効性

署名ハッシュは、署名者の証明書で見つかった署名者の公開キー (署名の一部として含まれる) を使用して暗号化解除されます。 復号化された署名が元のドキュメントの新しいハッシュと一致する場合、署名はハッシュの暗号化解除に使用される公開キーに関連付けられている秘密キーの所有者によって作成されました。 さらに、署名の基になっているドキュメントは、署名の作成後に変更されていないことが保証されます。

公開キーと署名者の ID を指定した証明書は、証明書が失効しているかどうか、証明書が古いかどうか、または証明書が信頼された証明書発行者によって発行されたかどうかなどの問題を含め、有効性を確認することもできます。

次の例では、署名されたコンテンツと SignedData オブジェクトがファイルから読み取られ、署名の作成に使用される証明書の署名と有効性がチェックされます。

Note

署名が暗号的に有効でない場合、または署名者の証明書が無効な場合は、例外が発生し、検証プログラムが例外を処理する必要があります。 CAPICOM エラーでは、 Err.Number の負の 10 進値が返されます。 詳細については、「 CAPICOM_ERROR_CODE」を参照してください。 Err.Number の正の 10 進数の値については、「Winerror.h」を参照してください。

 

Sub VerifySig(ByVal FileToVerify As String, ByVal FileBase As String)
On Error GoTo ErrorHandler

Dim sdContent As String
Dim sdCheck As String
Dim mySD As SignedData
Set mySD = New SignedData

' Open a file and read the signature.
Open FileToVerify For Input As #1
Input #1, sdCheck
Close #1

' Open a file and input the plaintext content that was signed.
Open FileBase For Input As #2
Input #2, sdContent
Close #1

' Set the detached content upon which the signature is based.
mySD.Content = sdContent

' Verify the detached signature.
On Error Resume Next
    mySD.Verify sdCheck, True
If Err.Number <> 0 Then
    MsgBox "Signature verification failed. " & Err.Description
Else
    MsgBox "Verification complete."
End If

' Release the SignedData object.
Set mySD = Nothing

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