문서에서 서명 확인
[CAPICOM은 Windows Server 2008, Windows Vista 및 Windows XP 운영 체제에서 사용할 수 있는 32비트 전용 구성 요소입니다. 대신 .NET Framework 사용하여 보안 기능을 구현합니다. 자세한 내용은 CAPICOM 사용에 대한 대안을 참조하세요.]
서명된 문서를 받으면 서명 또는 서명의 유효성을 확인할 수 있습니다. 서명은 다음을 확인할 수 있습니다.
- 서명 해시의 유효성
- 서명자 인증서의 유효성
서명 해시는 서명자의 인증서에 있는 서명자의 공개 키를 사용하여 암호가 해독되며 서명의 일부로 포함됩니다. 암호 해독된 서명이 원래 문서의 새 해시와 일치하는 경우 해시 암호를 해독하는 데 사용되는 공개 키와 연결된 프라이빗 키의 소유자가 서명을 만들었습니다. 또한 서명을 기반으로 하는 문서는 서명을 만든 후에 변경되지 않도록 보장됩니다.
공개 키와 서명자의 ID를 제공한 인증서는 인증서가 해지되었는지 여부, 인증서가 만료되었는지 여부 또는 신뢰할 수 있는 인증서 발급자가 인증서를 발급했는지 여부와 같은 문제를 포함하여 유효성을 검사할 수도 있습니다.
다음 예제에서는 서명된 콘텐츠와 SignedData 개체가 파일에서 읽혀지고 서명을 만드는 데 사용되는 인증서의 서명 및 유효성이 검사됩니다.
참고
서명이 암호화상 유효하지 않거나 서명자의 인증서가 유효하지 않은 경우 예외가 발생하고 확인 프로그램에서 예외를 처리해야 합니다. 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