Skip to content

Commit

Permalink
feat(cli): add macos hardened runtime signing config option (#9318) (#…
Browse files Browse the repository at this point in the history
…10199)

* feat(cli): add macos signing config option

* rename option to hardened_runtime

* chore(cli): use default true in hardened runtime config

---------

Co-authored-by: Lucas Nogueira <[email protected]>
  • Loading branch information
FabianLars and lucasfernog authored Jul 8, 2024
1 parent 033a25c commit 0aa0378
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 1 deletion.
8 changes: 8 additions & 0 deletions .changes/hardened-runtime-option.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"tauri-bundler": patch:feat
"@tauri-apps/cli": patch:feat
"tauri-cli": patch:feat
"tauri-utils": patch:feat
---

Added a configuration option to disable hardened runtime on macOS codesign.
8 changes: 8 additions & 0 deletions core/tauri-config-schema/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@
"icon": [],
"identifier": "",
"macOS": {
"hardenedRuntime": true,
"minimumSystemVersion": "10.13"
},
"rpm": {
Expand Down Expand Up @@ -316,6 +317,7 @@
"icon": [],
"identifier": "",
"macOS": {
"hardenedRuntime": true,
"minimumSystemVersion": "10.13"
},
"rpm": {
Expand Down Expand Up @@ -1219,6 +1221,7 @@
"macOS": {
"description": "Configuration for the macOS bundles.",
"default": {
"hardenedRuntime": true,
"minimumSystemVersion": "10.13"
},
"allOf": [
Expand Down Expand Up @@ -1695,6 +1698,11 @@
"null"
]
},
"hardenedRuntime": {
"description": "Whether the codesign should enable [hardened runtime] (for executables) or not.\n\n[hardened runtime]: <https://developer.apple.com/documentation/security/hardened_runtime>",
"default": true,
"type": "boolean"
},
"providerShortName": {
"description": "Provider short name for notarization.",
"type": [
Expand Down
6 changes: 6 additions & 0 deletions core/tauri-utils/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,11 @@ pub struct MacConfig {
/// Identity to use for code signing.
#[serde(alias = "signing-identity")]
pub signing_identity: Option<String>,
/// Whether the codesign should enable [hardened runtime] (for executables) or not.
///
/// [hardened runtime]: <https://developer.apple.com/documentation/security/hardened_runtime>
#[serde(alias = "hardened-runtime", default = "default_true")]
pub hardened_runtime: bool,
/// Provider short name for notarization.
#[serde(alias = "provider-short-name")]
pub provider_short_name: Option<String>,
Expand All @@ -482,6 +487,7 @@ impl Default for MacConfig {
exception_domain: None,
license: None,
signing_identity: None,
hardened_runtime: true,
provider_short_name: None,
entitlements: None,
}
Expand Down
4 changes: 3 additions & 1 deletion tooling/bundler/src/bundle/macos/sign.rs
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,9 @@ fn try_sign(
args.push(entitlements_path);
}

if is_an_executable {
// add runtime flag by default

if is_an_executable && settings.macos().hardened_runtime {
args.push("--options");
args.push("runtime");
}
Expand Down
4 changes: 4 additions & 0 deletions tooling/bundler/src/bundle/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,10 @@ pub struct MacOsSettings {
pub exception_domain: Option<String>,
/// Code signing identity.
pub signing_identity: Option<String>,
/// Preserve the hardened runtime version flag, see <https://developer.apple.com/documentation/security/hardened_runtime>
///
/// Settings this to `false` is useful when using an ad-hoc signature, making it less strict.
pub hardened_runtime: bool,
/// Provider short name for notarization.
pub provider_short_name: Option<String>,
/// Path to the entitlements.plist file.
Expand Down
8 changes: 8 additions & 0 deletions tooling/cli/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@
"icon": [],
"identifier": "",
"macOS": {
"hardenedRuntime": true,
"minimumSystemVersion": "10.13"
},
"rpm": {
Expand Down Expand Up @@ -316,6 +317,7 @@
"icon": [],
"identifier": "",
"macOS": {
"hardenedRuntime": true,
"minimumSystemVersion": "10.13"
},
"rpm": {
Expand Down Expand Up @@ -1219,6 +1221,7 @@
"macOS": {
"description": "Configuration for the macOS bundles.",
"default": {
"hardenedRuntime": true,
"minimumSystemVersion": "10.13"
},
"allOf": [
Expand Down Expand Up @@ -1695,6 +1698,11 @@
"null"
]
},
"hardenedRuntime": {
"description": "Whether the codesign should enable [hardened runtime] (for executables) or not.\n\n[hardened runtime]: <https://developer.apple.com/documentation/security/hardened_runtime>",
"default": true,
"type": "boolean"
},
"providerShortName": {
"description": "Provider short name for notarization.",
"type": [
Expand Down
1 change: 1 addition & 0 deletions tooling/cli/src/interface/rust.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1210,6 +1210,7 @@ fn tauri_config_to_bundle_settings(
license: config.macos.license,
exception_domain: config.macos.exception_domain,
signing_identity,
hardened_runtime: config.macos.hardened_runtime,
provider_short_name,
entitlements: config.macos.entitlements,
info_plist_path: {
Expand Down

0 comments on commit 0aa0378

Please sign in to comment.