59
59
60
60
# Sign the app
61
61
function sign_mac_version() {
62
- # This function expects that following environment varialbes are available:
62
+ # This function expects that following environment variables are available:
63
63
# - PHARO_CERT_PASSWORD
64
64
# - PHARO_SIGN_IDENTITY
65
- local key_chain=macos-build.keychain
65
+ local keychain_name=macos-ci-build.keychain
66
+ local keychain_password=ci
66
67
local app_dir=$1
67
68
local cert_pass=${PHARO_CERT_PASSWORD}
68
69
local pharo_sign_password=${PHARO_CERT_PASSWORD}
@@ -79,23 +80,30 @@ function sign_mac_version() {
79
80
80
81
echo " Signing app bundle..."
81
82
# Set up keychain
82
- security delete-keychain " ${key_chain} " || true
83
- security create-keychain -p ci " ${key_chain} "
84
- security default-keychain -s " ${key_chain} "
85
- security unlock-keychain -p ci " ${key_chain} "
86
- security set-keychain-settings -t 3600 -u " ${key_chain} "
87
- security import " ${path_cer} " -k ~ /Library/Keychains/" ${key_chain} " -T /usr/bin/codesign
88
- security import " ${path_p12} " -k ~ /Library/Keychains/" ${key_chain} " -P " ${cert_pass} " -T /usr/bin/codesign
83
+ security delete-keychain " ${keychain_name} " || true
84
+ security create-keychain -p ${keychain_password} " ${keychain_name} "
85
+ # add keychain to the search list
86
+ security list-keychains -d user -s " ${keychain_name} "
87
+ security default-keychain -s " ${keychain_name} "
88
+ security unlock-keychain -p ${keychain_password} " ${keychain_name} "
89
+ security set-keychain-settings -t 3600 -u " ${keychain_name} "
90
+ # Importing certificate
91
+ security import " ${path_cer} " -k ~ /Library/Keychains/" ${keychain_name} " -T /usr/bin/codesign
92
+ # Importing identity
93
+ security import " ${path_p12} " -k ~ /Library/Keychains/" ${keychain_name} " -P " ${cert_pass} " -T /usr/bin/codesign
94
+ # Set ACL on keychain. To avoid to get codesign to yield an errSecInternalComponent you need to get the partition list (ACLs) correct.
95
+ # See https://code-examples.net/en/q/1344e6a
96
+ security set-key-partition-list -S apple-tool:,apple: -s -k ${keychain_password} " ${keychain_name} "
89
97
# debug
90
98
echo ${sign_identity} >> " id.txt"
91
99
# Invoke codesign
92
100
if [[ -d " ${app_dir} /Contents/MacOS/Plugins" ]]; then # Pharo.app does not (yet) have its plugins in Resources dir
93
- codesign -s " ${sign_identity} " --keychain " ${key_chain } " --force --deep " ${app_dir} /Contents/MacOS/Plugins/" *
101
+ codesign -s " ${sign_identity} " --keychain " ${keychain_name } " --force --deep " ${app_dir} /Contents/MacOS/Plugins/" *
94
102
fi
95
- codesign -s " ${sign_identity} " --keychain " ${key_chain } " --force --deep " ${app_dir} "
103
+ codesign -s " ${sign_identity} " --keychain " ${keychain_name } " --force --deep " ${app_dir} "
96
104
# Remove sensitive files again
97
105
rm -rf " ${path_cer} " " ${path_p12} "
98
- security delete-keychain " ${key_chain } "
106
+ security delete-keychain " ${keychain_name } "
99
107
}
100
108
101
109
if [ " $SHOULD_SIGN " = true ] ; then
0 commit comments