Browse Source

Subject Name support for EV code signing

Josh Engebretson 9 years ago
parent
commit
7c27fd2e48
2 changed files with 29 additions and 6 deletions
  1. 1 0
      Build/Scripts/BuildConfig.js
  2. 28 6
      Build/Scripts/PackageEditor.js

+ 1 - 0
Build/Scripts/BuildConfig.js

@@ -51,6 +51,7 @@ function processOptions(config) {
 
     config.pfxFile = process.env.ATOMIC_PFX_FILE ? process.env.ATOMIC_PFX_FILE : "";
     config.pfxPW = process.env.ATOMIC_PFX_PW ? process.env.ATOMIC_PFX_PW : "";
+    config.certSubjectName = process.env.ATOMIC_CERT_SUBJECTNAME ? process.env.ATOMIC_CERT_SUBJECTNAME : "";
 
     return config;
 }

+ 28 - 6
Build/Scripts/PackageEditor.js

@@ -37,24 +37,46 @@ namespace('package', function() {
 
         var pfxFile = process.env.ATOMIC_PFX_FILE;
         var pfxPW = process.env.ATOMIC_PFX_PW;
+        var certSubjectName = process.env.ATOMIC_CERT_SUBJECTNAME;
+        var codesign = false;
 
-        var signBaseCmd = "signtool.exe sign /f " + pfxFile;
-        signBaseCmd += " /p " + pfxPW;
-        signBaseCmd += " /t http://timestamp.verisign.com/scripts/timestamp.dll";
-        signBaseCmd += " /v ";
+        if (certSubjectName || (pfxFile && pfxPW)) {
+          codesign = true;
+        }
+
+        var signBaseCmd = "signtool.exe sign";
+
+        if (certSubjectName.indexOf(" ") != -1) {
+          var original = certSubjectName;
+          certSubjectName = certSubjectName.split(" ")[0];
+          console.log("CodeSign: ATOMIC_CERT_SUBJECTNAME: \"" + original + "\" contains a space, changed to " +
+                       certSubjectName + " to avoid jake.exec quote issue on Windows");
+        }
+
+        if (certSubjectName) {
+          signBaseCmd += " /tr http://timestamp.digicert.com /td sha256 /fd sha256";
+          signBaseCmd += " /n " + certSubjectName + " ";
+        } else {
+
+          signBaseCmd += " /f " + pfxFile;
+          signBaseCmd += " /p " + pfxPW;
+          signBaseCmd += " /t http://timestamp.verisign.com/scripts/timestamp.dll";
+          signBaseCmd += " /v ";
+
+        }
 
         var signEditorCmd = signBaseCmd + config.artifactsRoot + "AtomicEditor/AtomicEditor.exe";
         var signInstallerCmd = signBaseCmd + installerPath;
 
         var cmds = [];
 
-        if (pfxFile && pfxPW) {
+        if (codesign) {
             cmds.push(signEditorCmd);
         }
 
         cmds.push(makeNSISCmd);
 
-        if (pfxFile && pfxPW) {
+        if (codesign) {
             cmds.push(signInstallerCmd);
         }