Skip to content

Verify signatures with macos_verify_code_signing - #64

Draft
mokagio wants to merge 3 commits into
mainfrom
mokagio/use-toolkit-verify-code-signing
Draft

mokagio wants to merge 3 commits into
mainfrom
mokagio/use-toolkit-verify-code-signing

Conversation

@mokagio

@mokagio mokagio commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Replaces the hand-rolled signature checks in verify_code_signing with the shared release-toolkit action, as @iangmaia suggested on #56.

Not mergeable yet: it depends on release-toolkit#782, which adds the bare binary support this needs. Gemfile pins that branch until it ships in a release.

Tradeoffs

  • This adds fastlane-plugin-wpmreleasetoolkit, 92 lockfile lines including nokogiri and octokit, to replace about six lines of checks. No existing gem changes version.
  • The hardened runtime check stays in the lane because the action doesn't have one.

Gotchas

#63 edits this lane and uses shellescape, while this PR removes the require 'shellwords' line, so whichever lands second may need a small rebase.

How to test

bundle exec fastlane verify_code_signing binary:<path> on variants of the notarized arm64 binary from build 17:

Binary Result
As built Passes
Developer ID, no hardened runtime Fails: not hardened
Ad-hoc signed Fails: wrong authority

The Buildkite build on this PR exercises the lane through sign_and_notarize.

Pinned to the release-toolkit branch adding bare binary support until that ships in a release.

---

Generated with the help of Claude Code (Opus 5.5), https://code.claude.com
Suggested by Ian in #56 (comment).
The action has no hardened runtime check, so that stays in the lane.
`sh` merges stderr, so the `2>&1` and the comment justifying it were unnecessary.

---

Generated with the help of Claude Code (Opus 5.5), https://code.claude.com
@mokagio mokagio self-assigned this Nov 4, 2026
mokagio added a commit to wordpress-mobile/release-toolkit that referenced this pull request Nov 6, 2026
A caller that verifies before notarizing passes `verify_notarization: false`, so nothing asserted the hardened runtime that notarization will later demand.
beeper/cli#64 kept its own check for exactly this.

The option defaults to `false` so existing callers are unaffected.
Disk images are skipped with a warning rather than failed, because a list mixing an app with its `.dmg` is a normal call.

---

Generated with the help of Claude Code (Opus 5.5), https://code.claude.com
The `macos_verify_code_signing` action gained a `verify_hardened_runtime` option in wordpress-mobile/release-toolkit#782, so the lane no longer needs its own `codesign --display` check.

---

Generated with the help of Claude Code (Opus 5.5), https://code.claude.com
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant