morgan pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
-
1ae99c2b
by Nicolas Vigier at 2024-07-30T17:49:28+00:00
-
79c986b6
by Nicolas Vigier at 2024-07-30T17:49:28+00:00
-
95ee823b
by Nicolas Vigier at 2024-07-30T17:49:28+00:00
-
45c352b1
by Nicolas Vigier at 2024-07-30T17:49:28+00:00
12 changed files:
- projects/rcodesign/build
- projects/rcodesign/config
- tools/signing/linux-signer-rcodesign-sign
- tools/signing/machines-setup/setup-signing-machine
- + tools/signing/machines-setup/sudoers.d/sign-rcodesign-128
- + tools/signing/macos-entitlements/firefox.browser.xml
- + tools/signing/macos-entitlements/media-plugin-helper.xml
- + tools/signing/macos-entitlements/plugin-container.xml
- tools/signing/rcodesign-notary-submit
- tools/signing/set-config.rcodesign
- tools/signing/setup-rcodesign
- + tools/signing/wrappers/sign-rcodesign-128
Changes:
... | ... | @@ -12,7 +12,7 @@ tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.[% c('compress_ta |
12 | 12 | tar -C $builddir -xf $rootdir/[% c('input_files_by_name/cargo_vendor') %]
|
13 | 13 | |
14 | 14 | cd $builddir
|
15 | -mkdir .cargo
|
|
15 | +mkdir -p .cargo
|
|
16 | 16 | cat >> .cargo/config << 'EOF'
|
17 | 17 | |
18 | 18 | [source.crates-io]
|
1 | 1 | # vim: filetype=yaml sw=2
|
2 | -version: 0.22.0
|
|
3 | -git_hash: cb406b5feb1439131f36ec60375f607a7f82439d
|
|
2 | +version: 0.27.0
|
|
3 | +git_hash: 703362f818272d43b3844105863739bcb6f1a11a
|
|
4 | 4 | git_url: https://github.com/indygreg/apple-platform-rs.git
|
5 | 5 | container:
|
6 | 6 | use_container: 1
|
... | ... | @@ -16,4 +16,4 @@ steps: |
16 | 16 | project: rcodesign
|
17 | 17 | pkg_type: cargo_vendor
|
18 | 18 | norec:
|
19 | - sha256sum: 04c21203d2948ebfa59f1039d4481e419e656ec636293b4846fdb7868cfd98f0 |
|
19 | + sha256sum: c778deb784f68b48a51c6c54095c6cd45e37847d65e9db36ce39b4326874ae9c |
... | ... | @@ -19,5 +19,5 @@ destdir=~/"$SIGNING_PROJECTNAME-$tbb_version-macos-signed" |
19 | 19 | mkdir -p $destdir
|
20 | 20 | rm -f "$destdir/$output_file"
|
21 | 21 | |
22 | -sudo -u signing-macos -- /signing/tor-browser-build/tools/signing/wrappers/sign-rcodesign ~/"$SIGNING_PROJECTNAME-$tbb_version"/$(project-name)-macos-${tbb_version}.dmg "$display_name"
|
|
22 | +sudo -u signing-macos -- /signing/tor-browser-build/tools/signing/wrappers/sign-rcodesign-128 ~/"$SIGNING_PROJECTNAME-$tbb_version"/$(project-name)-macos-${tbb_version}.dmg "$display_name"
|
|
23 | 23 | cp "/home/signing-macos/last-signed-$display_name.tar.zst" "$destdir/$output_file" |
... | ... | @@ -91,6 +91,7 @@ sudoers_file sign-mar |
91 | 91 | sudoers_file sign-exe
|
92 | 92 | sudoers_file sign-apk
|
93 | 93 | sudoers_file sign-rcodesign
|
94 | +sudoers_file sign-rcodesign-128
|
|
94 | 95 | sudoers_file set-date
|
95 | 96 | |
96 | 97 | authorized_keys boklm boklm-tb-release.pub boklm-yk1.pub
|
1 | +Defaults>signing-macos env_keep += "SIGNING_PROJECTNAME tbb_version_type RCODESIGN_PW"
|
|
2 | +%signing ALL = (signing-macos) NOPASSWD: /signing/tor-browser-build/tools/signing/wrappers/sign-rcodesign-128 |
1 | +<?xml version="1.0" encoding="UTF-8"?>
|
|
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3 | +<!--
|
|
4 | + Entitlements to apply to the main browser process executable during
|
|
5 | + codesigning of production channel builds.
|
|
6 | +-->
|
|
7 | +<plist version="1.0">
|
|
8 | + <dict>
|
|
9 | + <!-- Allow loading third party libraries to support pkcs11 modules -->
|
|
10 | + <key>com.apple.security.cs.disable-library-validation</key><true/>
|
|
11 | + |
|
12 | + <!-- Firefox needs to create executable pages with MAP_JIT on aarch64 -->
|
|
13 | + <key>com.apple.security.cs.allow-jit</key><true/>
|
|
14 | + |
|
15 | + <!-- Firefox needs to access the microphone on sites the user allows -->
|
|
16 | + <key>com.apple.security.device.audio-input</key><true/>
|
|
17 | + |
|
18 | + <!-- Firefox needs to access the camera on sites the user allows -->
|
|
19 | + <key>com.apple.security.device.camera</key><true/>
|
|
20 | + |
|
21 | + <!-- Firefox needs to access the location on sites the user allows -->
|
|
22 | + <key>com.apple.security.personal-information.location</key><true/>
|
|
23 | + |
|
24 | + <!-- For SmartCardServices(7) -->
|
|
25 | + <key>com.apple.security.smartcard</key><true/>
|
|
26 | + |
|
27 | + <!-- Required for com.apple.developer.web-browser.public-key-credential -->
|
|
28 | + <key>com.apple.application-identifier</key>
|
|
29 | + <string>43AQ936H96.org.mozilla.firefox</string>
|
|
30 | + |
|
31 | + <!-- For platform passkey (webauthn) support -->
|
|
32 | + <key>com.apple.developer.web-browser.public-key-credential</key><true/>
|
|
33 | + </dict>
|
|
34 | +</plist> |
1 | +<?xml version="1.0" encoding="UTF-8"?>
|
|
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3 | +<!--
|
|
4 | + Entitlements to apply to the media-plugin-helper.app bundle during
|
|
5 | + codesigning of production channel builds.
|
|
6 | +-->
|
|
7 | +<plist version="1.0">
|
|
8 | + <dict>
|
|
9 | + <!-- Allow loading third party CDM libraries -->
|
|
10 | + <key>com.apple.security.cs.disable-library-validation</key><true/>
|
|
11 | + </dict>
|
|
12 | +</plist> |
1 | +<?xml version="1.0" encoding="UTF-8"?>
|
|
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3 | +<!--
|
|
4 | + Entitlements to apply to the plugin-container.app bundle during
|
|
5 | + codesigning of production channel builds.
|
|
6 | +-->
|
|
7 | +<plist version="1.0">
|
|
8 | + <dict>
|
|
9 | + <!-- Firefox needs to create executable pages with MAP_JIT -->
|
|
10 | + <key>com.apple.security.cs.allow-jit</key><true/>
|
|
11 | + </dict>
|
|
12 | +</plist> |
... | ... | @@ -21,7 +21,7 @@ display_name=$(display_name) |
21 | 21 | |
22 | 22 | tar -C "$tmpdir" -xf "$macos_rcodesign_signed_tar_dir/$(project-name)-macos-${tbb_version}-rcodesign-signed.tar.zst"
|
23 | 23 | |
24 | -"$script_dir/../local/rcodesign/rcodesign" notary-submit --api-key-path "$appstoreconnect_api_key_path" --staple "$tmpdir/$display_name.app"
|
|
24 | +"$script_dir/../local/rcodesign-128/rcodesign" notary-submit --api-key-path "$appstoreconnect_api_key_path" --staple "$tmpdir/$display_name.app"
|
|
25 | 25 | |
26 | 26 | output_file="$(project-name)-${tbb_version}-notarized+stapled.tar.zst"
|
27 | 27 | tar -C "$tmpdir" -caf "$tmpdir/$output_file" "$display_name.app"
|
1 | -rcodesign_version=0.22.0-bc8cc7
|
|
1 | +rcodesign_version=0.27.0-e252fa
|
|
2 | 2 | rcodesign_filename=rcodesign-${rcodesign_version}.tar.gz
|
3 | -rcodesign_sha256sum=2a9eda016fff116c59f52b358e7a740f6fb5c039974f0acc8266c3605d24092a
|
|
3 | +rcodesign_sha256sum=c228c5fb06a088bc6c50a212d8d5a15425c2bcdf448bfa7f94ea5cc41321c533
|
|
4 | 4 | rcodesign_url="https://build-sources.tbb.torproject.org/${rcodesign_filename}" |
... | ... | @@ -35,8 +35,8 @@ function setup_rcodesign { |
35 | 35 | tar -C "$tmpdir" -xf "$rcodesign_path"
|
36 | 36 | mv "$tmpdir/rcodesign" "$rcodesign_dir"
|
37 | 37 | chmod -R go+rX "$rcodesign_dir"
|
38 | - rm -f "$localdir/rcodesign"
|
|
39 | - ln -s "rcodesign-$rcodesign_version" "$localdir/rcodesign"
|
|
38 | + rm -f "$localdir/rcodesign-128"
|
|
39 | + ln -s "rcodesign-$rcodesign_version" "$localdir/rcodesign-128"
|
|
40 | 40 | }
|
41 | 41 | |
42 | 42 | download_rcodesign
|
1 | +#!/bin/bash
|
|
2 | +set -e
|
|
3 | + |
|
4 | +function exit_error {
|
|
5 | + for msg in "$@"
|
|
6 | + do
|
|
7 | + echo "$msg" >&2
|
|
8 | + done
|
|
9 | + exit 1
|
|
10 | +}
|
|
11 | + |
|
12 | +test $# -eq 2 || exit_error "Wrong number of arguments"
|
|
13 | +dmg_file="$1"
|
|
14 | +display_name="$2"
|
|
15 | + |
|
16 | +output_file="/home/signing-macos/last-signed-$display_name.tar.zst"
|
|
17 | +rm -f "$output_file"
|
|
18 | + |
|
19 | +rcodesign=/signing/rcodesign-128/rcodesign
|
|
20 | +rcodesign_signing_p12_file=/home/signing-macos/keys/key-1.p12
|
|
21 | +test -f "$rcodesign_signing_p12_file" || exit_error "$rcodesign_signing_p12_file is missing"
|
|
22 | + |
|
23 | +tmpdir=$(mktemp -d)
|
|
24 | +trap "rm -Rf $tmpdir" EXIT
|
|
25 | +cd "$tmpdir"
|
|
26 | +7z x "$dmg_file"
|
|
27 | + |
|
28 | +# Fix permission on files:
|
|
29 | +# https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/issues/29815#note_2957050
|
|
30 | +# FIXME: Maybe we should extract the .mar file instead of the .dmg to
|
|
31 | +# preserve permissions
|
|
32 | +chmod ugo+x "$display_name/$display_name.app/Contents/MacOS"/* \
|
|
33 | + "$display_name/$display_name.app/Contents/MacOS/updater.app/Contents/MacOS"/* \
|
|
34 | + "$display_name/$display_name.app/Contents/MacOS/plugin-container.app/Contents/MacOS"/* \
|
|
35 | + "$display_name/$display_name.app/Contents/MacOS/media-plugin-helper.app/Contents/MacOS"/* \
|
|
36 | + "$display_name/$display_name.app/Contents/Frameworks/ChannelPrefs.framework/ChannelPrefs" \
|
|
37 | + "$display_name/$display_name.app/Contents/MacOS/updater.app/Contents/Frameworks/UpdateSettings.framework/UpdateSettings"
|
|
38 | +test -d "$display_name/$display_name.app/Contents/MacOS/Tor" && \
|
|
39 | + chmod -R ugo+x "$display_name/$display_name.app/Contents/MacOS/Tor"
|
|
40 | + |
|
41 | +pwdir=/run/lock/rcodesign-pw
|
|
42 | +trap "rm -Rf $pwdir" EXIT
|
|
43 | +rm -Rf "$pwdir"
|
|
44 | +mkdir "$pwdir"
|
|
45 | +chmod 700 "$pwdir"
|
|
46 | +cat > "$pwdir/rcodesign-pw-2" << EOF
|
|
47 | +$RCODESIGN_PW
|
|
48 | +EOF
|
|
49 | +tr -d '\n' < "$pwdir/rcodesign-pw-2" > "$pwdir/rcodesign-pw"
|
|
50 | +rm "$pwdir/rcodesign-pw-2"
|
|
51 | + |
|
52 | +# unset RCODESIGN_PW since it conflicts with rcodesign config
|
|
53 | +unset RCODESIGN_PW
|
|
54 | +rcodesign_opts="
|
|
55 | + --code-signature-flags runtime
|
|
56 | + --timestamp-url http://timestamp.apple.com:8080/ts01
|
|
57 | + --p12-file $rcodesign_signing_p12_file
|
|
58 | + --p12-password-file $pwdir/rcodesign-pw
|
|
59 | + "
|
|
60 | + |
|
61 | +flags=()
|
|
62 | +for dir in Contents/MacOS Contents/MacOS/Tor Contents/MacOS/Tor/PluggableTransports
|
|
63 | +do
|
|
64 | + d="$display_name/$display_name.app/$dir"
|
|
65 | + test -d "$d" || continue
|
|
66 | + pushd "$d"
|
|
67 | + for file in *
|
|
68 | + do
|
|
69 | + test -f "$file" || continue
|
|
70 | + flags+=('--code-signature-flags' "$dir/$file:runtime")
|
|
71 | + done
|
|
72 | + popd
|
|
73 | +done
|
|
74 | +echo "code-signature-flags: ${flags[@]}"
|
|
75 | + |
|
76 | +echo "**** Signing main bundle ($display_name.app) ****"
|
|
77 | +$rcodesign sign \
|
|
78 | + $rcodesign_opts \
|
|
79 | + "${flags[@]}" \
|
|
80 | + --code-signature-flags Contents/MacOS/updater.app/Contents/Frameworks/UpdateSettings.framework:runtime \
|
|
81 | + --code-signature-flags Contents/MacOS/updater.app:runtime \
|
|
82 | + --code-signature-flags Contents/Frameworks/ChannelPrefs.framework:runtime \
|
|
83 | + --code-signature-flags Contents/MacOS/plugin-container.app:runtime \
|
|
84 | + --code-signature-flags Contents/MacOS/media-plugin-helper.app:runtime \
|
|
85 | + --entitlements-xml-path Contents/MacOS/plugin-container.app:/signing/tor-browser-build/tools/signing/macos-entitlements/plugin-container.xml \
|
|
86 | + --entitlements-xml-path Contents/MacOS/media-plugin-helper.app:/signing/tor-browser-build/tools/signing/macos-entitlements/media-plugin-helper.xml \
|
|
87 | + --entitlements-xml-path /signing/tor-browser-build/tools/signing/macos-entitlements/firefox.browser.xml \
|
|
88 | + -- \
|
|
89 | + "$display_name/$display_name.app"
|
|
90 | + |
|
91 | +rm -f "$pwdir/rcodesign-pw"
|
|
92 | +rmdir "$pwdir"
|
|
93 | +tar -C "$display_name" -caf "$output_file" "$display_name.app"
|
|
94 | +cd -
|
|
95 | +rm -Rf "$tmpdir" |