VB.NET Requires Chilkat v11.7.0+
VB.NET
Verify the Authenticode Signature of an MSI, PowerShell, or VBScript File
See more Code Signing Examples
Demonstrates how to verify the Authenticode signature of a Windows Installer package (.msi), a PowerShell file (.ps1, .psm1, .psd1), or a VBScript file (.vbs), and how to get the certificate of the signer. Verifying these file types requires Chilkat v11.7.0 or later.Chilkat VB.NET Downloads
Dim success As Boolean = False
' This example requires the Chilkat API to have been previously unlocked.
' See Global Unlock Sample for sample code.
' Starting in Chilkat v11.7.0, VerifySignature can verify the Authenticode signature of
' - Windows Installer packages (.msi)
' - PowerShell scripts, modules, and data files (.ps1, .psm1, .psd1)
' - VBScript files (.vbs)
' in addition to EXE and DLL files.
' This example verifies a signed PowerShell script.
' To verify an .msi or a .vbs, pass the path of that file instead.
Dim path As String = "C:/someDir/Deploy.ps1"
Dim codeSign As New Chilkat.CodeSign
Dim sigInfo As New Chilkat.JsonObject
' VerifySignature returns true if the file has a valid Authenticode signature.
' It returns false if the file is not signed, if the file was changed after it was signed,
' or if the signing certificate is not trusted.
Dim valid As Boolean = codeSign.VerifySignature(path,sigInfo)
If (valid = False) Then
' The LastErrorText explains why the verification failed.
Debug.WriteLine(codeSign.LastErrorText)
Exit Sub
End If
Debug.WriteLine("The Authenticode signature is valid.")
' The details of the signature are returned in the JSON, in the same layout as for an EXE or DLL.
' See Verify Authenticode Signature of EXE or DLL for a sample of the JSON and code that parses it.
Debug.WriteLine("signing algorithm: " & sigInfo.StringOf("pkcs7.verify.signerInfo[0].signingAlgName"))
Debug.WriteLine("hash algorithm: " & sigInfo.StringOf("pkcs7.verify.signerInfo[0].cert.digestAlgName"))
' Get the certificate of the signer.
' The signer certificate is available only after a call to VerifySignature that returned true.
' It is the public certificate only. It does not include the signer's private key.
Dim signerCert As New Chilkat.Cert
success = codeSign.GetSignerCert(signerCert)
If (success = False) Then
Debug.WriteLine(codeSign.LastErrorText)
Exit Sub
End If
Debug.WriteLine("signed by: " & signerCert.SubjectCN)
Debug.WriteLine("certificate issued by: " & signerCert.IssuerCN)
Debug.WriteLine("certificate serial number: " & signerCert.SerialNumber)
Debug.WriteLine("certificate valid until: " & signerCert.ValidToStr)