Node.js Requires Chilkat v11.7.0+
Node.js
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 Node.js Downloads
NODEJS_PRELUDE
function chilkatExample() {
var success = 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.
var path = "C:/someDir/Deploy.ps1";
var codeSign = new chilkat.CodeSign();
var sigInfo = 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.
var valid = codeSign.VerifySignature(path,sigInfo);
if (valid == false) {
// The LastErrorText explains why the verification failed.
console.log(codeSign.LastErrorText);
return;
}
console.log("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.
console.log("signing algorithm: " + sigInfo.StringOf("pkcs7.verify.signerInfo[0].signingAlgName"));
console.log("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.
var signerCert = new chilkat.Cert();
success = codeSign.GetSignerCert(signerCert);
if (success == false) {
console.log(codeSign.LastErrorText);
return;
}
console.log("signed by: " + signerCert.SubjectCN);
console.log("certificate issued by: " + signerCert.IssuerCN);
console.log("certificate serial number: " + signerCert.SerialNumber);
console.log("certificate valid until: " + signerCert.ValidToStr);
}
chilkatExample();