Skip to content

Commit f0692d6

Browse files
nan-liclaude
andcommitted
ci: verify XCFramework signatures after Code Sign
Add a Verify Code Signing step that runs codesign --verify on every inner slice and wrapper, plus a requirement check asserting the OneSignal team (J3J28YJX9L), so a missed slice or wrong signer fails the release. Reuses the shared XCFRAMEWORKS job env var. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 38ce90e commit f0692d6

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

.github/workflows/create-release-prs.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,27 @@ jobs:
134134
done
135135
shell: bash
136136

137+
- name: Verify Code Signing
138+
run: |
139+
cd iOS_SDK/OneSignalSDK
140+
set -e
141+
# Fail the release if any slice or wrapper is tampered/unsigned or not
142+
# signed by the OneSignal team. --deep is unreliable across xcframework
143+
# slices, so each inner .framework is verified explicitly.
144+
REQUIREMENT="anchor apple generic and certificate leaf[subject.OU] = J3J28YJX9L"
145+
for XCF in $XCFRAMEWORKS; do
146+
while IFS= read -r FW; do
147+
echo "Verifying inner framework: $FW"
148+
codesign --verify --strict --verbose=2 "$FW"
149+
codesign --verify -R="$REQUIREMENT" "$FW"
150+
done < <(find "$XCF" -type d -name "*.framework")
151+
echo "Verifying wrapper: $XCF"
152+
codesign --verify --strict --verbose=2 "$XCF"
153+
codesign --verify -R="$REQUIREMENT" "$XCF"
154+
done
155+
echo "All XCFrameworks verified: intact and signed by OneSignal (J3J28YJX9L)."
156+
shell: bash
157+
137158
- name: Commit Build and Push Changes
138159
run: |
139160
git commit -am "chore: build binaries"

0 commit comments

Comments
 (0)