2022-02-14 10:19:20 +01:00
|
|
|
/**
|
|
|
|
|
* Utility to sign the desktop installers of the app for all platforms.
|
|
|
|
|
* The following environment variables are useful when developing:
|
2022-08-18 17:58:19 +02:00
|
|
|
* * DEBUG_SIGN - path to a folder containing either a self-signed certificate for signing the desktop client (test.p12) or a private key in PEM format (test.key)
|
|
|
|
|
* More Info in Wiki -> Desktop Updater Test & Development
|
2022-02-14 10:19:20 +01:00
|
|
|
*/
|
2023-04-20 17:14:30 +02:00
|
|
|
import fs from "node:fs"
|
|
|
|
|
import path from "node:path"
|
2022-12-27 15:37:40 +01:00
|
|
|
import { fileExists } from "./buildUtils.js"
|
|
|
|
|
import { sign } from "./installerSigner.js"
|
2022-02-14 10:19:20 +01:00
|
|
|
|
2022-02-18 16:07:55 +01:00
|
|
|
console.log("Sign Desktop Clients")
|
|
|
|
|
|
2022-02-14 10:19:20 +01:00
|
|
|
signDesktopClients()
|
2022-03-02 18:21:01 +01:00
|
|
|
.then(() => process.exit())
|
2024-07-23 12:28:32 +02:00
|
|
|
.catch((error) => {
|
|
|
|
|
console.error(error)
|
|
|
|
|
process.exit(1)
|
|
|
|
|
})
|
2022-02-14 10:19:20 +01:00
|
|
|
|
2022-08-18 17:58:19 +02:00
|
|
|
if (process.env.DEBUG_SIGN) {
|
|
|
|
|
const certPath = path.join(process.env.DEBUG_SIGN, "test.p12")
|
|
|
|
|
const keyPath = path.join(process.env.DEBUG_SIGN, "test.key")
|
|
|
|
|
if (!fs.existsSync(certPath) && !fs.existsSync(keyPath)) {
|
|
|
|
|
console.error("ERROR:\nPlease make sure your DEBUG_SIGN test certificate authority is set up properly!\n\n")
|
|
|
|
|
process.exit(1)
|
|
|
|
|
}
|
2022-02-14 10:19:20 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function signDesktopClients() {
|
2022-12-27 15:37:40 +01:00
|
|
|
const MAC_ZIP_SIGNATURE_FILE = "mac-sig-zip.bin"
|
|
|
|
|
const MAC_DMG_SIGNATURE_FILE = "mac-sig-dmg.bin"
|
|
|
|
|
const WIN_SIGNATURE_FILE = "win-sig.bin"
|
|
|
|
|
const LINUX_SIGNATURE_FILE = "linux-sig.bin"
|
2022-02-14 10:19:20 +01:00
|
|
|
|
2022-12-27 15:37:40 +01:00
|
|
|
const MAC_YML_FILE = "latest-mac.yml"
|
|
|
|
|
const WIN_YML_FILE = "latest.yml"
|
|
|
|
|
const LINUX_YML_FILE = "latest-linux.yml"
|
2022-02-14 10:19:20 +01:00
|
|
|
|
2022-08-18 17:58:19 +02:00
|
|
|
let filesSigned = 0
|
2022-02-18 15:46:25 +01:00
|
|
|
const signIfExists = async (fileName, sigName, ymlName) => {
|
|
|
|
|
if (await fileExists(fileName)) {
|
|
|
|
|
console.log("signing", fileName)
|
2022-08-18 17:58:19 +02:00
|
|
|
await sign(fileName, sigName, ymlName)
|
|
|
|
|
filesSigned = filesSigned + 1
|
2022-02-14 10:19:20 +01:00
|
|
|
}
|
2022-02-18 15:46:25 +01:00
|
|
|
}
|
2022-02-14 10:19:20 +01:00
|
|
|
|
2022-12-27 15:37:40 +01:00
|
|
|
await signIfExists("./build/desktop/tutanota-desktop-mac.zip", MAC_ZIP_SIGNATURE_FILE, MAC_YML_FILE)
|
|
|
|
|
await signIfExists("./build/desktop/tutanota-desktop-mac.dmg", MAC_DMG_SIGNATURE_FILE, null)
|
|
|
|
|
await signIfExists("./build/desktop/tutanota-desktop-win.exe", WIN_SIGNATURE_FILE, WIN_YML_FILE)
|
|
|
|
|
await signIfExists("./build/desktop/tutanota-desktop-linux.AppImage", LINUX_SIGNATURE_FILE, LINUX_YML_FILE)
|
2022-02-14 10:19:20 +01:00
|
|
|
|
2022-12-27 15:37:40 +01:00
|
|
|
await signIfExists("./build/desktop-test/tutanota-desktop-test-mac.zip", MAC_ZIP_SIGNATURE_FILE, MAC_YML_FILE)
|
|
|
|
|
await signIfExists("./build/desktop-test/tutanota-desktop-test-mac.dmg", MAC_DMG_SIGNATURE_FILE, null)
|
|
|
|
|
await signIfExists("./build/desktop-test/tutanota-desktop-test-win.exe", WIN_SIGNATURE_FILE, WIN_YML_FILE)
|
|
|
|
|
await signIfExists("./build/desktop-test/tutanota-desktop-test-linux.AppImage", LINUX_SIGNATURE_FILE, LINUX_YML_FILE)
|
2022-02-14 10:19:20 +01:00
|
|
|
|
2022-12-27 15:37:40 +01:00
|
|
|
await signIfExists("./build/desktop-snapshot/tutanota-desktop-snapshot-mac.zip", MAC_ZIP_SIGNATURE_FILE, MAC_YML_FILE)
|
|
|
|
|
await signIfExists("./build/desktop-snapshot/tutanota-desktop-snapshot-mac.dmg", MAC_DMG_SIGNATURE_FILE, null)
|
|
|
|
|
await signIfExists("./build/desktop-snapshot/tutanota-desktop-snapshot-win.exe", WIN_SIGNATURE_FILE, WIN_YML_FILE)
|
|
|
|
|
await signIfExists("./build/desktop-snapshot/tutanota-desktop-snapshot-linux.AppImage", LINUX_SIGNATURE_FILE, LINUX_YML_FILE)
|
2022-08-18 17:58:19 +02:00
|
|
|
|
|
|
|
|
if (filesSigned === 0) {
|
|
|
|
|
console.log("Error: no files were signed!")
|
|
|
|
|
process.exit(1)
|
|
|
|
|
} else {
|
|
|
|
|
console.log(`Signed ${filesSigned} files!`)
|
|
|
|
|
}
|
2022-02-14 10:19:20 +01:00
|
|
|
}
|