Kaydet (Commit) c98b1f1c authored tarafından Christian Lohmaier's avatar Christian Lohmaier

macOS: enable hardened runtime when signing

hardened runtime is prerequisite for notarizing apps, which in turn is
required for new developer IDs with 10.14.5 already and will be required
for all software to run in future versions of macOS

https://developer.apple.com/documentation/security/notarizing_your_app_before_distribution

Change-Id: Ifdf73fb5901be5dd0b62e1a51dee6e57c9816e5f
Reviewed-on: https://gerrit.libreoffice.org/73246
Tested-by: Jenkins
Reviewed-by: 's avatarChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>
üst 1ee64eb3
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- AppleScript support -->
<key>com.apple.security.automation.apple-events</key>
<true/>
<!-- for extension manager, "exception in synchronize" -->
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<!-- allow use of third-party plugins/frameworks (aka Java) -->
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
...@@ -36,7 +36,7 @@ if test -n "$ENABLE_MACOSX_SANDBOX"; then ...@@ -36,7 +36,7 @@ if test -n "$ENABLE_MACOSX_SANDBOX"; then
other_files='' other_files=''
else else
# We then want to sign data files, too, hmm. # We then want to sign data files, too, hmm.
entitlements='' entitlements="--entitlements $SRCDIR/hardened_runtime.xcent"
other_files="\ other_files="\
-or -name '*.fodt' -or -name 'schema.strings' -or -name 'schema.xml' \ -or -name '*.fodt' -or -name 'schema.strings' -or -name 'schema.xml' \
-or -name '*.jar' -or -name 'LICENSE' -or -name 'LICENSE.html' \ -or -name '*.jar' -or -name 'LICENSE' -or -name 'LICENSE.html' \
...@@ -83,7 +83,7 @@ while read app; do ...@@ -83,7 +83,7 @@ while read app; do
fn=${fn%.*} fn=${fn%.*}
# Assume the app has a XML (and not binary) Info.plist # Assume the app has a XML (and not binary) Info.plist
id=`grep -A 1 '<key>CFBundleIdentifier</key>' $app/Contents/Info.plist | tail -1 | sed -e 's,.*<string>,,' -e 's,</string>.*,,'` id=`grep -A 1 '<key>CFBundleIdentifier</key>' $app/Contents/Info.plist | tail -1 | sed -e 's,.*<string>,,' -e 's,</string>.*,,'`
codesign --verbose --force --identifier=$id --sign "$MACOSX_CODESIGNING_IDENTITY" $entitlements "$app" > "/tmp/codesign_${fn}.log" 2>&1 codesign --verbose --options=runtime --force --identifier=$id --sign "$MACOSX_CODESIGNING_IDENTITY" $entitlements "$app" > "/tmp/codesign_${fn}.log" 2>&1
if [ "$?" != "0" ] ; then if [ "$?" != "0" ] ; then
exit 1 exit 1
fi fi
...@@ -100,7 +100,11 @@ while read framework; do ...@@ -100,7 +100,11 @@ while read framework; do
if test ! -L "$version" -a -d "$version"; then if test ! -L "$version" -a -d "$version"; then
# Assume the framework has a XML (and not binary) Info.plist # Assume the framework has a XML (and not binary) Info.plist
id=`grep -A 1 '<key>CFBundleIdentifier</key>' $version/Resources/Info.plist | tail -1 | sed -e 's,.*<string>,,' -e 's,</string>.*,,'` id=`grep -A 1 '<key>CFBundleIdentifier</key>' $version/Resources/Info.plist | tail -1 | sed -e 's,.*<string>,,' -e 's,</string>.*,,'`
codesign --verbose --force --identifier=$id --sign "$MACOSX_CODESIGNING_IDENTITY" "$version" > "/tmp/codesign_${fn}.log" 2>&1 # files in bin are not covered by signing the framework...
for scriptorexecutable in $(find $version/bin/ -type f); do
codesign --verbose --options=runtime --force --identifier=$id --sign "$MACOSX_CODESIGNING_IDENTITY" "$scriptorexecutable" >> "/tmp/codesign_${fn}.log" 2>&1
done
codesign --verbose --force --identifier=$id --sign "$MACOSX_CODESIGNING_IDENTITY" "$version" >> "/tmp/codesign_${fn}.log" 2>&1
if [ "$?" != "0" ] ; then if [ "$?" != "0" ] ; then
exit 1 exit 1
fi fi
...@@ -129,7 +133,7 @@ while read file; do ...@@ -129,7 +133,7 @@ while read file; do
;; ;;
*) *)
id=`echo ${file#${APP_BUNDLE}/Contents/} | sed -e 's,/,.,g'` id=`echo ${file#${APP_BUNDLE}/Contents/} | sed -e 's,/,.,g'`
codesign --force --verbose --identifier=$MACOSX_BUNDLE_IDENTIFIER.$id --sign "$MACOSX_CODESIGNING_IDENTITY" $entitlements "$file" > "/tmp/codesign_${MACOSX_BUNDLE_IDENTIFIER}.${id}.log" 2>&1 codesign --force --verbose --options=runtime --identifier=$MACOSX_BUNDLE_IDENTIFIER.$id --sign "$MACOSX_CODESIGNING_IDENTITY" $entitlements "$file" > "/tmp/codesign_${MACOSX_BUNDLE_IDENTIFIER}.${id}.log" 2>&1
if [ "$?" != "0" ] ; then if [ "$?" != "0" ] ; then
exit 1 exit 1
fi fi
...@@ -152,7 +156,7 @@ done ...@@ -152,7 +156,7 @@ done
id=`echo ${PRODUCTNAME} | tr ' ' '-'` id=`echo ${PRODUCTNAME} | tr ' ' '-'`
codesign --force --verbose --identifier="${MACOSX_BUNDLE_IDENTIFIER}" --sign "$MACOSX_CODESIGNING_IDENTITY" $entitlements "$APP_BUNDLE" > "/tmp/codesign_${MACOSX_BUNDLE_IDENTIFIER}.log" 2>&1 codesign --force --verbose --options=runtime --identifier="${MACOSX_BUNDLE_IDENTIFIER}" --sign "$MACOSX_CODESIGNING_IDENTITY" $entitlements "$APP_BUNDLE" > "/tmp/codesign_${MACOSX_BUNDLE_IDENTIFIER}.log" 2>&1
if [ "$?" != "0" ] ; then if [ "$?" != "0" ] ; then
exit 1 exit 1
fi fi
......
...@@ -132,7 +132,7 @@ $(call gb_Helper_abbreviate_dirs,\ ...@@ -132,7 +132,7 @@ $(call gb_Helper_abbreviate_dirs,\
$(if $(MACOSX_CODESIGNING_IDENTITY), \ $(if $(MACOSX_CODESIGNING_IDENTITY), \
$(if $(filter Executable,$(TARGETTYPE)), \ $(if $(filter Executable,$(TARGETTYPE)), \
$(if $(filter-out $(call gb_Executable_get_target,soffice_bin),$(1)), \ $(if $(filter-out $(call gb_Executable_get_target,soffice_bin),$(1)), \
codesign --identifier=$(MACOSX_BUNDLE_IDENTIFIER).$(notdir $(1)) --sign $(MACOSX_CODESIGNING_IDENTITY) --force $(1) &&))) \ codesign --identifier=$(MACOSX_BUNDLE_IDENTIFIER).$(notdir $(1)) --sign $(MACOSX_CODESIGNING_IDENTITY) --options=runtime --force $(1) &&))) \
$(if $(filter Library,$(TARGETTYPE)),\ $(if $(filter Library,$(TARGETTYPE)),\
otool -l $(1) | grep -A 5 LC_ID_DYLIB \ otool -l $(1) | grep -A 5 LC_ID_DYLIB \
> $(WORKDIR)/LinkTarget/$(2).exports.tmp && \ > $(WORKDIR)/LinkTarget/$(2).exports.tmp && \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment