Condividi tramite


Verifica della firma in un documento

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

Quando viene ricevuto un documento firmato, è possibile controllare la validità della firma o delle firme. È possibile verificare la presenza di una firma:

  • Validità dell'hash della firma
  • Validità del certificato del firmatario

L'hash della firma viene decrittografato usando la chiave pubblica del firmatario trovato nel certificato del firmatario, incluso come parte della firma. Se la firma decrittografata corrisponde a un nuovo hash del documento originale, la firma è stata creata dal proprietario della chiave privata associata alla chiave pubblica usata per decrittografare l'hash. Inoltre, il documento basato sulla firma non deve essere stato modificato dopo la creazione della firma.

Il certificato che ha fornito la chiave pubblica e l'identità del firmatario può anche essere verificata la validità, inclusi i problemi, ad esempio se il certificato è stato revocato, se il certificato non è aggiornato o se il certificato è stato rilasciato da un'autorità di certificazione attendibile.

Nell'esempio seguente, il contenuto firmato e l'oggetto SignedData vengono letti da un file e la firma e la validità del certificato usato per creare la firma vengono controllati.

Nota

Se la firma non è crittograficamente valida o il certificato del firmatario non è valido, viene generata un'eccezione e il programma di verifica deve gestire l'eccezione. 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 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