Visual FoxPro Requires Chilkat v11.7.0+
Visual FoxPro
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 Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL lcPath
LOCAL loCodeSign
LOCAL loSigInfo
LOCAL lnValid
LOCAL loSignerCert
lnSuccess = 0
* 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.
lcPath = "C:/someDir/Deploy.ps1"
loCodeSign = CreateObject('Chilkat.CodeSign')
loSigInfo = CreateObject('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.
lnValid = loCodeSign.VerifySignature(lcPath,loSigInfo)
IF (lnValid = 0) THEN
* The LastErrorText explains why the verification failed.
? loCodeSign.LastErrorText
RELEASE loCodeSign
RELEASE loSigInfo
CANCEL
ENDIF
? "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.
? "signing algorithm: " + loSigInfo.StringOf("pkcs7.verify.signerInfo[0].signingAlgName")
? "hash algorithm: " + loSigInfo.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.
loSignerCert = CreateObject('Chilkat.Cert')
lnSuccess = loCodeSign.GetSignerCert(loSignerCert)
IF (lnSuccess = 0) THEN
? loCodeSign.LastErrorText
RELEASE loCodeSign
RELEASE loSigInfo
RELEASE loSignerCert
CANCEL
ENDIF
? "signed by: " + loSignerCert.SubjectCN
? "certificate issued by: " + loSignerCert.IssuerCN
? "certificate serial number: " + loSignerCert.SerialNumber
? "certificate valid until: " + loSignerCert.ValidToStr
RELEASE loCodeSign
RELEASE loSigInfo
RELEASE loSignerCert