Skip to content

An iOS and macOS compatible OpenSSL dynamic framework

License

Notifications You must be signed in to change notification settings

OuterCorner/OpenSSL

Repository files navigation

OpenSSL.framework

Platforms Carthage License

This project neatly packs OpenSSL into a dynamic framework for iOS and macOS.

Current OpenSSL version used: 1.1.1m

Installation

You have a few different options:

Manual installation

  • Include the OpenSSL.xcodeproj as a dependency in your project. This is what the projects under Examples/ are doing. Doing this means OpenSSL will be compiled alongside your project, including after every clean (building OpenSSL can take a while).
  • Use a pre-built OpenSSL.xcframework. You can find them under Releases.

SwiftPM

In your Package.swift, add OpenSSL as a dependency:

dependencies: [
  .package(url: "https://github.com/OuterCorner/OpenSSL", from: "1.1.1")
],

Associate the dependency with your target:

targets: [
  .target(name: "App", dependencies: ["OpenSSL"])
]

Usage

After importing the umbrella header:

#import <OpenSSL/OpenSSL.h>

You can simply start using OpenSSL APIs as usual.

Byte buffer[128];
    
int rc = RAND_bytes(buffer, sizeof(buffer));

See example projects under Examples/.

Issues

When including this framework in your project you'll have to set Allow Non-modular Includes In Framework Modules to YES.

CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES

This is needed because the current version of OpenSSL's public headers reference system headers.

License

This project is licensed under the MIT License - see LICENSE.

Note the underlying OpenSSL library LICENSE still applies when using this project.

Acknowledgments

The build scripts for this project were based on: