Skip to content

App Store rejection due to private API usage on iOS #3405

@StasDzundzaGL

Description

@StasDzundzaGL

Describe the bug

iOS app, which uses the latest version of the AWS SDK (1.11.561 static), is being rejected by Apple during the validation process when uploading to App Store Connect. See the current behaviuor and steps to reproduce for more details.

Regression Issue

  • Select this option if this issue appears to be a regression.

Expected Behavior

App Store app bundle validation passes without any issues when app uses the AWS SDK.

Current Behavior

App Store validation fails with the following error message:

The app references non-public symbols in Payload/App.app:
_CCCryptorGCMAddAAD, _CCCryptorGCMFinalize, _CCCryptorGCMSetIV

Reproduction Steps

  1. Build OpenSsl and cURL for iOS.
  2. Configure AWS SDK as follows:
cmake . -B ./build -G Xcode -Wno-dev -DCMAKE_BUILD_TYPE=Release -DCPP_STANDARD=17
-DBUILD_SHARED_LIBS=OFF -DTARGET_ARCH=APPLE -DBUILD_ONLY="core;cognito-idp"
-DBUILD_DEPS=ON -DENABLE_TESTING=OFF -DAWS_SDK_WARNINGS_ARE_ERRORS=OFF
-DCMAKE_INSTALL_PREFIX=../install/awssdk
-DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
-DCMAKE_OSX_ARCHITECTURES=arm64
-DCMAKE_SYSTEM_NAME=Darwin
-DCMAKE_OSX_DEPLOYMENT_TARGET="13.0"
-DENABLE_CURL_CLIENT=ON
-DCURL_INCLUDE_DIR=/path/to/curl/include
-DCURL_LIBRARY=/path/to/curl/lib/libcurl.a
-DENABLE_OPENSSL_ENCRYPTION=ON
-DUSE_OPENSSL=ON
-DOPENSSL_CRYPTO_LIBRARY=/path/to/openssl/lib/libcrypto.a
-DOPENSSL_SSL_LIBRARY=/path/to/openssl/lib/libssl.a
-DOPENSSL_INCLUDE_DIR=/path/to/openssl/include
  1. Build it
cmake --build ./build --config=Release --target install --parallel
  1. Link it to your app and try upload it to the App Store

Possible Solution

Maybe allowing of custom openssl and libcrypto usage would resolve the problem.

Additional Information/Context

There was the same issue a long time ago: #1619. Building the SDK with the following arguments -DENABLE_OPENSSL_ENCRYPTION=ON -DOPENSSL_CRYPTO_LIBRARY=/path/to/lib/openssl-1.1.1k/ios/lib/libcrypto.a -DOPENSSL_SSL_LIBRARY=/path/to/lib/openssl-1.1.1k/ios/lib/libssl.a -DOPENSSL_INCLUDE_DIR=/path/to/lib/openssl-1.1.1k/ios/include resolves this issue for old SDK versions (like 1.9.220), but new SDK versions don't use given OPENSSL_SSL_LIBRARY option:

CMake Warning:
  Manually-specified variables were not used by the project:

    OPENSSL_SSL_LIBRARY

AWS CPP SDK version used

1.11.561

Compiler and Version used

Apple clang version 17.0.0 (clang-1700.0.13.3) Target: arm64-apple-darwin24.4.0

Operating System and version

macOS 15.4.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugThis issue is a bug.needs-triageThis issue or PR still needs to be triaged.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions