エンベロープ データ メッセージの受信
[CAPICOM は、次のオペレーティング システムで使用できる 32 ビットのみのコンポーネントです: Windows Server 2008、Windows Vista、および Windows XP。 代わりに、.NET Frameworkを使用してセキュリティ機能を実装します。 詳細については、「 CAPICOM を使用する代替手段」を参照してください。
エンベロープ メッセージを復号化するために、受信者は、使用可能な秘密キーを持つ My ストアの 証明書 と、エンベロープ されたメッセージ内の証明書を照合します。 一致が見つかった場合は、その証明書に関連付けられている暗号化されたキーが暗号化解除され、暗号化解除されたキーを使用してエンベロープ メッセージの暗号化が解除されます。 使用可能な秘密キーを持つ一致する証明書がないメッセージ受信者は、メッセージの暗号化を解除できません。
次の例では、ファイル名がサブルーチンに渡され、そのファイルが開き、エンベロープされたメッセージが読み込まれます。 その後、エンベロープされたメッセージが復号化されます。 エンベロープ メッセージ内の証明書とユーザー証明書を照合する手順、暗号化キーの暗号化解除、最後にメッセージの暗号化解除の手順はすべてバックグラウンドで行われます。 証明書の一致が見つからない場合、または暗号化解除に失敗した場合は、エラーが発生します。
CAPICOM エラーでは、 Err.Number の負の 10 進値が返されます。 詳細については、「 CAPICOM_ERROR_CODE」を参照してください。 Err.Number の正の 10 進値については、「Winerror.h」を参照してください。
Sub ReceiveMessage(ByVal InFile As String)
On Error GoTo ErrorHandler
'Declare an EnvelopedData object
Dim Envmessage As New EnvelopedData
'Declare a string variable to hold the encrypted message.
Dim Encrypted As String
' Open an input file and read in the encrypted message
Open InFile For Input As #1
Input #1, Encrypted
Close #1
' If the length of the input string is greater than 0,
' an encrypted message string is available. Decrypt the message.
' Note: to decrypt the message, a certificate with access to
' a user's private key must be available, and that certificate must
' match one of the certificates in the Recipients collection of
' certificates.
If Len(Encrypted) > 0 Then
' Receive and decrypt the message
Envmessage.Decrypt encrypted
' Display the decrypted message.
MsgBox Envmessage.Content
Else
MsgBox "No enveloped message was read in."
End If
' Release the EncryptedData object.
Set Envmessage = 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