Compartilhar via


Recebendo uma mensagem de dados enveloped

[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.]

Para descriptografar uma mensagem em envelope, o destinatário corresponde a um certificado do Meu repositório que tem uma chave privada disponível com um certificado na mensagem enveloped. Se uma correspondência for encontrada, a chave criptografada associada a esse certificado será descriptografada e essa chave descriptografada será usada para descriptografar a mensagem enveloped. Um destinatário de mensagem que não tem um certificado correspondente com uma chave privada disponível não pode descriptografar a mensagem.

No exemplo a seguir, um nome de arquivo é passado para a sub-rotina, esse arquivo é aberto e uma mensagem enveloped é lida. A mensagem em envelope é descriptografada. As etapas de correspondência de um certificado de usuário com um certificado na mensagem enveloped, de descriptografar a chave de criptografia e, por fim, de descriptografar a mensagem são todas feitas nos bastidores. Um erro será gerado se uma correspondência de certificado não for encontrada ou se a descriptografia falhar.

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.

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