Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenSSL Engine causes compilation issues on iOS #795

Closed
johnhe4 opened this issue Oct 23, 2023 · 0 comments · Fixed by #805
Closed

OpenSSL Engine causes compilation issues on iOS #795

johnhe4 opened this issue Oct 23, 2023 · 0 comments · Fixed by #805

Comments

@johnhe4
Copy link

johnhe4 commented Oct 23, 2023

This seems related to #713 and is not addressed by #753. Realized on tag v0.13.0

Applications targeting iOS, visionOS, and other mobile platforms may include a compiled version of OpenSSL libraries in order to support other TLS-enabled libraries, including rabbitmq-c. When compiling OpenSSL for such platforms, the 1.1.1x OpenSSL configuration explicitly disables the ENGINE interface, as seen in this base config snippet from the 15-ios.conf file:

"ios-common" => {
        template         => 1,
        inherit_from     => [ "darwin-common" ],
        sys_id           => "iOS",
        disable          => [ "engine", "async" ],
    },

This make sense considering such devices have a distribution system that strongly discourages (and even disallows altogether) dynamic linking.

The rabbitmq-c library has a dependency on the ENGINE interface and will not compile without it, but in terms of functionality it seems that rabbitmq-c as a library shouldn't require the ENGINE interface.

Would it make sense to have a cached CMake flag to disable the Engine dependency? What other ways can we work around this for mobile platforms?

alanxz added a commit that referenced this issue Dec 23, 2023
Conditionally enable ssl_socket methods that use the deprecated OpenSSL
ENGINE APIs. The APIs are enabled when the OpenSSL being compiled
against has the ENGINE APIs enabled. In addition these APIs can be
disabled by passing -DENABLE_SSL_ENGINE_API=OFF to CMake at build-time.

Fixed: #795
Fixed: #713

Signed-off-by: GitHub <noreply@github.com>
alanxz added a commit that referenced this issue Dec 24, 2023
Conditionally enable ssl_socket methods that use the deprecated OpenSSL
ENGINE APIs. The APIs are enabled when the OpenSSL being compiled
against has the ENGINE APIs enabled. In addition these APIs can be
disabled by passing -DENABLE_SSL_ENGINE_API=OFF to CMake at build-time.

Fixed: #795
Fixed: #713

Signed-off-by: GitHub <noreply@github.com>
alanxz added a commit that referenced this issue Dec 24, 2023
Conditionally enable ssl_socket methods that use the deprecated OpenSSL
ENGINE APIs. The APIs are enabled when the OpenSSL being compiled
against has the ENGINE APIs enabled. In addition these APIs can be
disabled by passing -DENABLE_SSL_ENGINE_API=OFF to CMake at build-time.

Fixed: #795
Fixed: #713

Signed-off-by: GitHub <noreply@github.com>
alanxz added a commit that referenced this issue Dec 24, 2023
Conditionally enable ssl_socket methods that use the deprecated OpenSSL
ENGINE APIs. The APIs are enabled when the OpenSSL being compiled
against has the ENGINE APIs enabled. In addition these APIs can be
disabled by passing -DENABLE_SSL_ENGINE_API=OFF to CMake at build-time.

Fixed: #795
Fixed: #713

Signed-off-by: GitHub <noreply@github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant