From 91dadfd35e9f7116c5799b471e27a7a6e0a75cfd Mon Sep 17 00:00:00 2001 From: jwinterm Date: Mon, 1 Jun 2026 19:08:20 -0400 Subject: [PATCH] iOS TestFlight: use openssl base64 -d -A, stop fighting BSD base64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `base64 --decode` also failed on the Mac runner with the same "(null): error decoding base64 input stream" — so either this macOS version's BSD base64 doesn't honor --decode (only -D) or it chokes on the input format. Either way, swap the three secret decodes to `openssl base64 -d -A`: - openssl ships with macOS by default; no extra install - -d = decode (same on BSD and Linux, no platform skew) - -A treats the input as one continuous line (matches our `base64 -i x | tr -d '\n'` encoding flow) If openssl base64 ever bites us we'll fall back to python3's base64.b64decode, but openssl has been bulletproof for ~25 years. --- .github/workflows/build-ios-testflight.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-ios-testflight.yml b/.github/workflows/build-ios-testflight.yml index f9e514a2a..8f63cda4c 100644 --- a/.github/workflows/build-ios-testflight.yml +++ b/.github/workflows/build-ios-testflight.yml @@ -258,7 +258,7 @@ jobs: security list-keychains -d user -s "$KEYCHAIN_PATH" $(security list-keychains -d user | sed 's/"//g') # Import the .p12 P12="$RUNNER_TEMP/dist.p12" - echo "$APPLE_DIST_CERT_P12_BASE64" | base64 --decode > "$P12" + echo "$APPLE_DIST_CERT_P12_BASE64" | openssl base64 -d -A > "$P12" security import "$P12" -k "$KEYCHAIN_PATH" -P "$APPLE_DIST_CERT_P12_PASSWORD" \ -T /usr/bin/codesign -T /usr/bin/security security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$APPLE_KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" @@ -274,7 +274,7 @@ jobs: PROFILES_DIR="$HOME/Library/MobileDevice/Provisioning Profiles" mkdir -p "$PROFILES_DIR" PROFILE="$RUNNER_TEMP/Hash_Wallet.mobileprovision" - echo "$APPLE_PROVISIONING_PROFILE_BASE64" | base64 --decode > "$PROFILE" + echo "$APPLE_PROVISIONING_PROFILE_BASE64" | openssl base64 -d -A > "$PROFILE" # Parse the .mobileprovision to get its UUID + Name (CMS-decoded plist). PROFILE_UUID=$(security cms -D -i "$PROFILE" | plutil -extract UUID raw -o - -) @@ -295,7 +295,7 @@ jobs: run: | set -e mkdir -p "$HOME/.appstoreconnect/private_keys" - echo "$APPLE_API_KEY_P8_BASE64" | base64 --decode > "$HOME/.appstoreconnect/private_keys/AuthKey_${APPLE_KEY_ID}.p8" + echo "$APPLE_API_KEY_P8_BASE64" | openssl base64 -d -A > "$HOME/.appstoreconnect/private_keys/AuthKey_${APPLE_KEY_ID}.p8" ls -la "$HOME/.appstoreconnect/private_keys/" # ---- Flutter init + codegen + pod install ---------------------------