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

Authenticode Sign a VBScript File (.vbs)

See more Code Signing Examples

Demonstrates how to Authenticode sign a VBScript file (.vbs). Signing VBScript files requires Chilkat v11.7.0 or later. The signature is appended to the file as a comment block.

Chilkat Java Downloads

Java
import com.chilkatsoft.chilkat2.Cert;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.CodeSign;
import com.chilkatsoft.chilkat2.JsonObject;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        // Signing a VBScript file (.vbs) requires Chilkat v11.7.0 or later.

        // Load the code signing certificate.  It must have access to its private key.
        Cert cert = new Cert();
        try {
            cert.loadPfxFile("C:/someDir/myCodeSigningCert.pfx", "pfx password");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Sign with SHA256, and ask a timestamp authority for a timestamp.  A timestamp lets the
        // signature continue to validate after the code signing certificate has expired.
        //
        // {
        //   "hashAlg": "sha256",
        //   "timestampToken": {
        //     "enabled": true,
        //     "tsaUrl": "http://timestamp.digicert.com",
        //     "requestTsaCert": true,
        //     "hashAlg": "sha256"
        //   }
        // }
        JsonObject json = new JsonObject();
        json.updateString("hashAlg", "sha256");
        json.updateBool("timestampToken.enabled", true);
        json.updateString("timestampToken.tsaUrl", "http://timestamp.digicert.com");
        json.updateBool("timestampToken.requestTsaCert", true);
        json.updateString("timestampToken.hashAlg", "sha256");

        String scriptPath = "C:/someDir/Backup.vbs";

        CodeSign signer = new CodeSign();

        // The script is modified in place.  The signature is appended to the end of the file as a comment block:
        //
        //   '' SIG '' Begin signature block
        //   '' SIG '' MIIoKgYJKoZIhvcNAQcCoIIoGzCCKBcCAQExDzANBglg
        //   '' SIG '' ...
        //   '' SIG '' End signature block
        //
        // If the script is already signed, the new signature block replaces the existing one.
        try {
            signer.addSignature(scriptPath, cert, json);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("Signed the VBScript file.");

        // Verify the signature that was just added.
        JsonObject sigInfo = new JsonObject();
        try {
            signer.verifySignature(scriptPath, sigInfo);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("The signature is valid.");

        // Note: Other script types, such as JScript (.js), are not supported.
        // AddSignature returns false for an unsupported file type and does not modify the file.
    }
}