Condividi tramite


Ricezione di un messaggio di dati in busta

[CAPICOM è un componente solo a 32 bit disponibile per l'uso nei sistemi operativi seguenti: Windows Server 2008, Windows Vista e Windows XP. Usare invece .NET Framework per implementare le funzionalità di sicurezza. Per altre informazioni, vedere Alternative all'uso di CAPICOM.

Per decrittografare un messaggio busto, il destinatario corrisponde a un certificato dell'archivio personale con una chiave privata disponibile con un certificato nel messaggio busto. Se viene trovata una corrispondenza, la chiave crittografata associata a tale certificato viene decrittografata e la chiave decrittografata viene usata per decrittografare il messaggio in busto. Un destinatario del messaggio che non dispone di un certificato corrispondente con una chiave privata disponibile non può decrittografare il messaggio.

Nell'esempio seguente viene passato un nome file alla subroutine, il file viene aperto e viene letto un messaggio in busto. Il messaggio busto viene quindi decrittografato. I passaggi della corrispondenza di un certificato utente con un certificato nel messaggio busto, della decrittografia della chiave di crittografia e infine della decrittografia del messaggio vengono eseguiti dietro le quinte. Viene generato un errore se non viene trovata una corrispondenza del certificato o se la decrittografia ha esito negativo.

In qualsiasi errore CAPICOM viene restituito un valore decimale negativo di Err.Number . Per altre informazioni, vedere CAPICOM_ERROR_CODE. Per informazioni sui valori decimali positivi di Err.Number, vedere 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