봉투형 데이터 메시지 수신
[CAPICOM은 Windows Server 2008, Windows Vista 및 Windows XP 운영 체제에서 사용할 수 있는 32비트 전용 구성 요소입니다. 대신 .NET Framework 사용하여 보안 기능을 구현합니다. 자세한 내용은 CAPICOM 사용에 대한 대안을 참조하세요.]
봉투 메시지의 암호를 해독하기 위해 받는 사람은 내 저장소의 인증서 와 봉투형 메시지의 인증서를 사용하여 사용 가능한 프라이빗 키가 있는 인증서와 일치합니다. 일치하는 항목이 발견되면 해당 인증서와 연결된 암호화된 키가 암호 해독되고 암호 해독된 키를 사용하여 봉투 메시지의 암호를 해독합니다. 사용 가능한 프라이빗 키와 일치하는 인증서가 없는 메시지 수신자는 메시지의 암호를 해독할 수 없습니다.
다음 예제에서는 파일 이름이 서브루틴에 전달되고, 해당 파일이 열리고, 봉투에 넣은 메시지가 읽혀집니다. 그런 다음 봉투에 담은 메시지의 암호가 해독됩니다. 사용자 인증서를 봉투 메시지의 인증서와 일치시키고, 암호화 키를 해독하고, 마지막으로 메시지 암호를 해독하는 단계는 모두 백그라운드에서 수행됩니다. 인증서 일치를 찾을 수 없거나 암호 해독이 실패하면 오류가 발생합니다.
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