Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[CAPICOM — это 32-разрядный компонент, доступный для использования в следующих операционных системах: Windows Server 2008, Windows Vista и Windows XP. Вместо этого используйте .NET Framework для реализации функций безопасности. Дополнительные сведения см. в разделе Альтернативы использованию CAPICOM.]
После получения подписанного документа можно проверить допустимость подписи или подписей. Сигнатуру можно проверить:
- Допустимость хэша подписи
- Допустимость сертификата подписи
Хэш-подписирасшифровывается с помощью открытого ключа подписыватель, найденного в сертификата подписи, включенного в подпись. Если расшифрованная подпись соответствует новому хэшу исходного документа, подпись была создана владельцем закрытого ключа, связанного с открытым ключом, используемым для расшифровки хэша. Кроме того, документ, на основе сигнатуры, гарантированно не был изменен после создания подписи.
Сертификат, содержащий открытый ключ и удостоверяющий личность подписавшего пользователя, также может быть проверен на действительность, включая такие проблемы, как аннулирование сертификата, устарел ли сертификат, или был ли он выдан доверенным центром сертификации.
В следующем примере содержимое, подписанное и объект SignedData считываются из файла, а подпись и срок действия сертификата, используемого для создания подписи, проверяются.
Заметка
Если подпись криптографически недействительна или сертификат подписавшего недействителен, создается исключение, и программа проверки должна его обработать. При любой ошибке CAPICOM возвращается отрицательное десятичное значение Err.Number. Дополнительные сведения см. в CAPICOM_ERROR_CODE. Сведения о положительных десятичных значениях Err.Numberсм. в разделе 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