Sample code for 30+ languages & platforms
VB.NET Requires Chilkat v11.7.0+

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

VB.NET
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)