From bb213762ee82539a279e432d1be349103c862801 Mon Sep 17 00:00:00 2001 From: zyxkad Date: Mon, 11 Mar 2024 11:37:04 -0600 Subject: [PATCH] v0.1.0 --- .github/workflows/publish.yml | 55 +++++ .gitignore | 7 + LiterMC-CodeSign.cer | 28 +++ LiterMC-RootCA.cer | 34 +++ go.mod | 3 + go.sum | 0 images/MsiBanner.bmp | Bin 0 -> 85978 bytes images/MsiDialog.bmp | Bin 0 -> 461898 bytes images/README.rtf | 23 +++ images/app.ico | Bin 0 -> 138278 bytes installer/windows/Product.Loc-en.wxl | 6 + installer/windows/Product.wxs | 62 ++++++ private/.gitignore | 3 + scripts/build-windows.go | 296 +++++++++++++++++++++++++++ 14 files changed, 517 insertions(+) create mode 100644 .github/workflows/publish.yml create mode 100644 .gitignore create mode 100644 LiterMC-CodeSign.cer create mode 100644 LiterMC-RootCA.cer create mode 100644 go.mod create mode 100644 go.sum create mode 100644 images/MsiBanner.bmp create mode 100644 images/MsiDialog.bmp create mode 100644 images/README.rtf create mode 100644 images/app.ico create mode 100644 installer/windows/Product.Loc-en.wxl create mode 100644 installer/windows/Product.wxs create mode 100644 private/.gitignore create mode 100644 scripts/build-windows.go diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..649aeb1 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,55 @@ + +name: Publish Certificates + +on: + push: + tags: + - 'v*' + +jobs: + test: + runs-on: windows-2022 + steps: + - + name: Action Checkout + uses: actions/checkout@v3 + - + name: Setup Golang + uses: actions/setup-go@v4 + with: + go-version-file: ./go.mod + cache-dependency-path: ./go.sum + - + name: Output TAG + id: tag + shell: bash + run: | + RELEASE_VERSION="${GITHUB_REF#refs/*/}" + echo "tag=${RELEASE_VERSION}" + echo "tag=${RELEASE_VERSION}" >> "$GITHUB_OUTPUT" + - + name: Run build-windows.exe + env: + TAG: ${{ steps.tag.outputs.tag }} + CODE_SIGN_PFX: ${{ secrets.CODE_SIGN_PFX }} + CODE_SIGN_PFX_PASSWORD: ${{ secrets.CODE_SIGN_PFX_PASSWORD }} + run: go run ./scripts/build-windows.go + - + name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + draft: false + prerelease: false + - + name: Upload Release Assets + uses: zyxkad/upload-release-asset-dir@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_dir: ./output diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b10be27 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ + +# Mac OS +.DS_Store + +# Builds +/build +/output diff --git a/LiterMC-CodeSign.cer b/LiterMC-CodeSign.cer new file mode 100644 index 0000000..73bbb9c --- /dev/null +++ b/LiterMC-CodeSign.cer @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIExTCCAq2gAwIBAgIBATANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJDQTEQ +MA4GA1UECAwHQWxiZXJ0YTEQMA4GA1UEBwwHQ2FsZ2FyeTEQMA4GA1UECgwHTGl0 +ZXJNQzEYMBYGA1UEAwwPTGl0ZXJNQyBSb290IENBMR8wHQYJKoZIhvcNAQkBFhB6 +eXhrYWRAZ21haWwuY29tMB4XDTI0MDMwOTAzMTYwOVoXDTM0MDMwNzAzMTYwOVow +LTEQMA4GA1UECgwHTGl0ZXJNQzEZMBcGA1UEAwwQTGl0ZXJNQy1Db2RlU2lnbjCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK4t/VVosA9qFg9gj1gFpY5k +VRGun5dulQ20VE6eVmlDt6HnF9PadpYvdD5kIfROEzChb+H6K564dQG8lMI4dcwJ +jNvRk8sma1tMXMc6geh5TZ3Y1w0hqa2Stmv0msf7nNQ5oMTZXYmhWhZMBsiPtELf +WHTNC4G3SAaID9Rj+RKfd4blB9RK+2JdexVmEnDTzYUbZess+RK0CaOW1/hM+cBE +s8TMQ8dRer/38oUiBzpZmuZQ0X1IJnHqWV2Ybu49MTcxfCMEjggM9/dMxqGKA2NH +pGC/poHNDE63VNcvU0Oz1LA0PYeYN6SzQ1LbmD0M0bsWqj39CuOCUsxcO0bk9/kC +AwEAAaOBnjCBmzAdBgNVHQ4EFgQUUiwjy3V0g76N4+fjrhCn+SeSBcMwHwYDVR0j +BBgwFoAUvfVU+FJ5Ku+/vnEYigsbUEGOeZIwCQYDVR0TBAIwADALBgNVHQ8EBAMC +BaAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wg +R2VuZXJhdGVkIENlcnRpZmljYXRlMA0GCSqGSIb3DQEBCwUAA4ICAQAM5LM297Dq +IVSYE/HDhKHVCyxdNFxW0wSFK0o5rynKSejy8Umm0SOWX36BPcb3fPTKbYl8m5RK +E6MpNH1xqtGo64jQ3l2YyAqy6urtBL6MaV4xiPfFiwZb4JGNJx/2rc7HsTjnRcvu +/+YqWY/78/lubnGFYIZYb4i+QQNfr0qUPMCpJ/EEe9r8QJoh/sAH/VtMqLWirdZj ++tR0o24r1QzNgH87RoTyJO0EE+qOYwYWuvbtvfYCXsQlG0h+XzF54dTXiofmRLcg +o+tSfwomPJ1DngUCMwGgZpKbBnc/17xMjGuS/AC/Wmc4LqbGNMUclDKmunnQHPJV +8Q8eNBP7OTdiEliEy5lhy2pjIg/7Gq8hzYTKfJ3bzh72WTut5JD0JSfaMC4jN6n1 +0vtMHHJ9LShck2hM9ZDFKIF8vbBdpFrlQCWA3Y+uCNmXEsQXNj/7KA7PcOVOUD7O +yeT1PMDgGTl+H+szH3o4CeEMiT7kR+rQJ2yHrqHEMN8KCx8pLa4nae4TTPf9R2+U +VMbEn3uk6ZEUT//L2ajPL1wzTtiobAhbVAxAu2Loomq1UhbUt3EiCD7nyNayIX5t +zinpNEeNWka9SxERD63j8dEUekRnKDSqFyaz2+/+cO24uY/kS/ANeHJ4/E2UKHi0 +hiMMmkXhSD62TA4JLN3jrW/Lkzw632IO1A== +-----END CERTIFICATE----- diff --git a/LiterMC-RootCA.cer b/LiterMC-RootCA.cer new file mode 100644 index 0000000..6430711 --- /dev/null +++ b/LiterMC-RootCA.cer @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..795d904 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/LiterMC/certificate + +go 1.22.0 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..e69de29 diff --git a/images/MsiBanner.bmp b/images/MsiBanner.bmp new file mode 100644 index 0000000000000000000000000000000000000000..837b166460bb39b26b644cbf534f0b49e75206e4 GIT binary patch literal 85978 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 M0)oJI0D&3*2WE3pjsO4v literal 0 HcmV?d00001 diff --git a/images/MsiDialog.bmp b/images/MsiDialog.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4bac09d163b49e4fd19eb788d729d3fb6c55c10c GIT binary patch literal 461898 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 literal 0 HcmV?d00001 diff --git a/images/README.rtf b/images/README.rtf new file mode 100644 index 0000000..e3e9c97 --- /dev/null +++ b/images/README.rtf @@ -0,0 +1,23 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2758 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\froman\fcharset0 Times-Bold;\f1\froman\fcharset0 Times-Roman;} +{\colortbl;\red255\green255\blue255;\red38\green38\blue38;\red255\green255\blue255;} +{\*\expandedcolortbl;;\cssrgb\c20000\c20000\c20000;\cssrgb\c100000\c100000\c100000;} +{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}} +{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} +\vieww11520\viewh8400\viewkind0 +\deftab720 +\pard\pardeftab720\sa288\qc\partightenfactor0 + +\f0\b\fs30 \cf2 \cb3 \expnd0\expndtw0\kerning0 +You are going to install LiterMC certificates\ +\pard\pardeftab720\sa288\partightenfactor0 + +\f1\b0 \cf2 LiterMC certificates include:\ +\pard\tx220\tx720\pardeftab720\li720\fi-720\sa288\partightenfactor0 +\ls1\ilvl0\cf2 \kerning1\expnd0\expndtw0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0 +a self-signed Root CA\ +\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext \uc0\u8226 }\expnd0\expndtw0\kerning0 +a code sign certificates\ +\pard\pardeftab720\sa288\partightenfactor0 + +\f0\b \cf2 Before you install the certificates, ensure the fingerprint of the Root CA match the fingerprint in the {\field{\*\fldinst{HYPERLINK "https://github.com/LiterMC/certificate/blob/main/README.md#fingerprints"}}{\fldrslt README}}.} \ No newline at end of file diff --git a/images/app.ico b/images/app.ico new file mode 100644 index 0000000000000000000000000000000000000000..d341b2f9aabc02c857426b0d8a6eb8c5f0b3b182 GIT binary patch literal 138278 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 + + 1033 + + A newer version of [ProductName] is already installed. + \ No newline at end of file diff --git a/installer/windows/Product.wxs b/installer/windows/Product.wxs new file mode 100644 index 0000000..6fc6259 --- /dev/null +++ b/installer/windows/Product.wxs @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/private/.gitignore b/private/.gitignore new file mode 100644 index 0000000..563d852 --- /dev/null +++ b/private/.gitignore @@ -0,0 +1,3 @@ + +* +!/.gitignore diff --git a/scripts/build-windows.go b/scripts/build-windows.go new file mode 100644 index 0000000..f15a1d3 --- /dev/null +++ b/scripts/build-windows.go @@ -0,0 +1,296 @@ +///go:build windows + +package main + +import ( + "archive/zip" + "bytes" + "crypto" + "encoding/base64" + "encoding/hex" + "fmt" + "io" + "net/http" + "os" + "os/exec" + "path/filepath" + "regexp" + "strings" + "time" +) + +var archs = []string{ + "amd64", + "arm64", +} + +var buildTagRe = regexp.MustCompile(`^v(\d+).(\d+).(\d+)-(\d+)$`) + +var signtool string + +var now = time.Now().UTC() + +func main() { + { + CODE_SIGN_PFX, CODE_SIGN_PFX_PASSWORD := os.Getenv("CODE_SIGN_PFX"), os.Getenv("CODE_SIGN_PFX_PASSWORD") + if CODE_SIGN_PFX == "" || CODE_SIGN_PFX_PASSWORD == "" { + fmt.Println("Either CODE_SIGN_PFX or CODE_SIGN_PFX_PASSWORD was empty") + os.Exit(1) + } + data, err := base64.StdEncoding.DecodeString(CODE_SIGN_PFX) + if err != nil { + fmt.Println("Cannot parse CODE_SIGN_PFX:", err) + os.Exit(1) + } + pfxName := filepath.Join("private", "LiterMC-CodeSign.pfx") + if err := os.WriteFile(pfxName, data, 0666); err != nil { + fmt.Println("Cannot save CODE_SIGN_PFX:", err) + os.Exit(1) + } + cmd := exec.Command("certutil", "-f", "-p", CODE_SIGN_PFX_PASSWORD, "-importpfx", pfxName) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + fmt.Println("Error when loading cert:", err) + os.Exit(1) + } + } + + wixVersion := fmt.Sprintf("1.%d.%d.%d", now.Year(), now.YearDay(), now.Hour()*60+now.Minute()) + fmt.Println("wixVersion:", wixVersion) + + signtool = searchSignTool() + if signtool == "" { + fmt.Println("No signtool was found") + os.Exit(1) + } + fmt.Println("signtool path:", signtool) + + for _, arch := range archs { + progName := fmt.Sprintf("litermc-certificate-installer-%s", arch) + wixDir, err := installWix(arch) + if err != nil { + fmt.Println("Error when installing wix", err) + os.Exit(1) + } + + tmpDir := filepath.Join("build", "tmp") + os.RemoveAll(tmpDir) + if err := os.MkdirAll(tmpDir, 0755); err != nil { + fmt.Println("Error when preparing app files", err) + os.Exit(1) + } + + wsxPath := filepath.Join("installer", "windows") + + msArch := archToMsArch(arch) + if err := run(filepath.Join(wixDir, "candle.exe"), + "-nologo", + "-arch", msArch, + "-dBuildVersion="+wixVersion, + "-dArch="+arch, + "-dSourceDir=.", + "-ext", "WixIIsExtension", + "-out", tmpDir+`\`, + filepath.Join(wsxPath, "Product.wxs"), + ); err != nil { + fmt.Println("wix candle exited:", err) + os.Exit(1) + } + + msiName := filepath.Join(tmpDir, progName+".unsigned.msi") + if err := run(filepath.Join(wixDir, "light.exe"), + "-b", ".", + "-nologo", + "-dcl:high", + "-ext", "WixUIExtension", + "-ext", "WixUtilExtension", + "-ext", "WixIIsExtension", + "-loc", filepath.Join(wsxPath, "Product.Loc-en.wxl"), + filepath.Join(tmpDir, "Product.wixobj"), + "-o", msiName, + ); err != nil { + fmt.Println("wix light exited:", err) + os.Exit(1) + } + if err := signProgram(msiName, filepath.Join("output", progName+".msi")); err != nil { + fmt.Println("Error when signing:", err) + os.Exit(1) + } + } +} + +func searchSignTool() string { + var ( + signtool string + version string + ) + const baseDir = `C:\Program Files (x86)\Windows Kits\10\bin` + entries, err := os.ReadDir(baseDir) + if err != nil { + panic(err) + } + for _, e := range entries { + if !e.IsDir() { + continue + } + name := e.Name() + if !strings.HasPrefix(name, "10.") || !strings.HasSuffix(name, ".0") { + continue + } + if name > version { + st := filepath.Join(baseDir, name, "x64", "signtool.exe") + if stat, e := os.Stat(st); e == nil && !stat.IsDir() { + signtool = st + version = name + } + } + } + return signtool +} + +func signProgram(in, out string) error { + if out == "" { + out = in + } + fmt.Printf("Signing %s ...\n", out) + if in != out { + if err := osCopy(in, out, 0755); err != nil { + return err + } + } + if err := run(signtool, "sign", "/sm", + "/n", "LiterMC-CodeSign", + // "/tr", "http://timestamp.apple.com/ts01", "/td", "SHA256", + "/fd", "SHA256", out); err != nil { + return err + } + return nil +} + +// See +type wixRelease struct { + BinaryURL string + SHA256 string +} + +var ( + wixRelease311 = wixRelease{ + BinaryURL: "https://storage.googleapis.com/go-builder-data/wix311-binaries.zip", + SHA256: "da034c489bd1dd6d8e1623675bf5e899f32d74d6d8312f8dd125a084543193de", + } + wixRelease314 = wixRelease{ + BinaryURL: "https://storage.googleapis.com/go-builder-data/wix314-binaries.zip", + SHA256: "34dcbba9952902bfb710161bd45ee2e721ffa878db99f738285a21c9b09c6edb", // WiX v3.14.0.4118 release, SHA 256 of wix314-binaries.zip from https://wixtoolset.org/releases/v3-14-0-4118/. + } +) + +// installWix fetches and installs the wix toolkit +func installWix(arch string) (string, error) { + var ( + wix wixRelease + path string + ) + switch arch { + default: + path = filepath.Join("build", "wix311") + wix = wixRelease311 + // case "arm", "arm64": + // path = filepath.Join("build", "wix314") + // wix = wixRelease314 + } + if _, err := os.Stat(filepath.Join(path, "__build_wix_installed")); err == nil { + fmt.Printf("Cached %s at %s\n", wix.BinaryURL, path) + return path, nil + } + + fmt.Printf("Downloading %s to %s\n", wix.BinaryURL, path) + resp, err := http.Get(wix.BinaryURL) + if err != nil { + return "", err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("Unexpected http status %d", resp.StatusCode) + } + hs := crypto.SHA256.New() + body, err := io.ReadAll(io.TeeReader(resp.Body, hs)) + if err != nil { + return "", err + } + if s := hex.EncodeToString(hs.Sum(nil)); s != wix.SHA256 { + return "", fmt.Errorf("Hash mismatch, expect %s, got %s", wix.SHA256, s) + } + zr, err := zip.NewReader(bytes.NewReader(body), (int64)(len(body))) + if err != nil { + return "", err + } + for _, f := range zr.File { + name := filepath.FromSlash(f.Name) + err := os.MkdirAll(filepath.Join(path, filepath.Dir(name)), 0755) + if err != nil { + return "", err + } + rc, err := f.Open() + if err != nil { + return "", err + } + b, err := io.ReadAll(rc) + rc.Close() + if err != nil { + return "", err + } + err = os.WriteFile(filepath.Join(path, name), b, 0644) + if err != nil { + return "", err + } + } + os.WriteFile(filepath.Join(path, "__build_wix_installed"), nil, 0644) + return path, nil +} + +func archToMsArch(arch string) string { + switch arch { + case "386": + return "x86" + case "amd64": + return "x64" + case "arm": + // Historically the installer for the windows/arm port + // used the same value as for the windows/arm64 port. + fallthrough + case "arm64": + // return "arm64" + return "x64" + default: + panic("unknown arch for windows " + arch) + } +} + +func run(name string, args ...string) error { + fmt.Printf("$ %s %s\n", name, strings.Join(args, " ")) + cmd := exec.Command(name, args...) + cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr + return cmd.Run() +} + +func osCopy(src, dst string, mode os.FileMode) (err error) { + srcFd, err := os.Open(src) + if err != nil { + return + } + defer srcFd.Close() + dstFd, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, mode) + if err != nil { + return + } + _, err = io.Copy(dstFd, srcFd) + if er := dstFd.Close(); err == nil && er != nil { + err = er + } + if err != nil { + os.Remove(dst) + return + } + return +}