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:
|
|
|
|
|
* DEBUG_SIGN - path to a folder containing a self-signed certificate for signing the desktop client. More Info in Wiki -> Desktop Updater Test & Development
|
|
|
|
|
*/
|
|
|
|
|
import fs from "fs-extra"
|
|
|
|
|
import path from "path"
|
2022-03-02 18:21:01 +01:00
|
|
|
import {fileExists} from "./buildUtils.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())
|
2022-02-18 16:07:55 +01:00
|
|
|
.catch(() => process.exit(1))
|
2022-02-14 10:19:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
if (process.env.DEBUG_SIGN && !fs.existsSync(path.join(process.env.DEBUG_SIGN, "test.p12"))) {
|
2022-04-28 14:36:24 +02:00
|
|
|
console.error("ERROR:\nPlease make sure your DEBUG_SIGN test certificate authority is set up properly!\n\n")
|
2022-02-14 10:19:20 +01:00
|
|
|
process.exit(1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function signDesktopClients() {
|
|
|
|
|
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'
|
|
|
|
|
|
|
|
|
|
const MAC_YML_FILE = 'latest-mac.yml'
|
|
|
|
|
const WIN_YML_FILE = 'latest.yml'
|
|
|
|
|
const LINUX_YML_FILE = 'latest-linux.yml'
|
|
|
|
|
|
2022-02-18 15:46:25 +01:00
|
|
|
// We import `sign` asynchronously because it uses node-forge, which is unavailable during the f-droid build and causes it to fail
|
|
|
|
|
// For some reason we call signDesktopClients always in the build process.
|
|
|
|
|
const {sign} = await import("./installerSigner.js")
|
|
|
|
|
const signIfExists = async (fileName, sigName, ymlName) => {
|
|
|
|
|
if (await fileExists(fileName)) {
|
|
|
|
|
console.log("signing", fileName)
|
|
|
|
|
sign(fileName, sigName, ymlName)
|
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-02-18 15:46:25 +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-02-18 15:46:25 +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-02-18 15:46:25 +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-02-14 10:19:20 +01:00
|
|
|
}
|
|
|
|
|
|