Vérification de la signature sur un document
[CAPICOM est un composant 32 bits uniquement disponible pour une utilisation dans les systèmes d’exploitation suivants : Windows Server 2008, Windows Vista et Windows XP. Utilisez plutôt .NET Framework pour implémenter des fonctionnalités de sécurité. Pour plus d’informations, consultez Alternatives à l’utilisation de CAPICOM.]
Lorsqu’un document signé est reçu, la validité de la ou des signatures peut être vérifiée. Une signature peut être vérifiée pour :
- Validité du hachage de signature
- Validité du certificat du signataire
Le hachage de signature est déchiffré à l’aide de la clé publique du signataire qui se trouve sur le certificat du signataire, incluse dans la signature. Si la signature déchiffrée correspond à un nouveau hachage du document d’origine, la signature a été créée par le propriétaire de la clé privée associée à la clé publique utilisée pour déchiffrer le hachage. En outre, il est garanti que le document sur lequel la signature est basée n’a pas été modifié après la création de la signature.
La validité du certificat qui a fourni la clé publique et l’identité du signataire peut également être vérifiée, notamment si le certificat a été révoqué, si le certificat est obsolète ou si le certificat a été émis par un émetteur de certificat approuvé.
Dans l’exemple suivant, le contenu signé et l’objet SignedData sont lus à partir d’un fichier et la signature et la validité du certificat utilisé pour créer la signature sont vérifiées.
Notes
Si la signature n’est pas valide par chiffrement ou si le certificat du signataire n’est pas valide, une exception est levée et le programme de vérification doit gérer l’exception. En cas d’erreur CAPICOM, une valeur décimale négative de Err.Number est retournée. Pour plus d’informations, consultez CAPICOM_ERROR_CODE. Pour plus d’informations sur les valeurs décimales positives de Err.Number, consultez 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