Files
kopia/app/sign.js
Jarek Kowalski c9225dc429 Makefile: replace single slash with double slash when signing
on Windows bash is messing up flags starting with / for some reason
2021-03-23 09:52:13 -07:00

55 lines
1.4 KiB
JavaScript

const { spawnSync } = require("child_process");
exports.default = async function (configuration) {
if (process.platform !== "win32") {
return;
}
const sha1 = process.env.WINDOWS_CERT_SHA1;
if (!sha1) {
console.log('Not signing', configuration.path, ' because WINDOWS_CERT_SHA1 is not set');
return;
}
const signTool = process.env.WINDOWS_SIGN_TOOL || "signtool.exe";
console.log('signTool', signTool);
const signToolArgs = [
"sign",
"/sha1", sha1,
"/fd", configuration.hash,
"/tr", "http://timestamp.digicert.com",
];
if (configuration.isNest) {
signToolArgs.push("/as")
}
signToolArgs.push("/v");
signToolArgs.push(configuration.path);
let nextSleepTime = 1000;
for (let attempt = 0; attempt < 10; attempt++) {
console.log('Signing ', configuration.path, 'attempt', attempt);
if (attempt > 0) {
console.log('Sleping for ', nextSleepTime);
await new Promise(r => setTimeout(r, nextSleepTime));
}
nextSleepTime *= 2;
const result = spawnSync(signTool, signToolArgs, {
stdio: "inherit",
});
if (!result.error && 0 === result.status) {
console.log('Signing of', configuration.path, ' succeeded');
return;
} else {
console.log('Signing of' + configuration.path + ' failed with ' + JSON.stringify(result));
}
}
throw Exception("Failed to sign " + configuration.path);
};