SwiftTLS provides a minimal, Swift-native implementation of the TLS 1.3 handshake to support the QUIC transport protocol. This package is intended to support the implementation of QUIC in SwiftNetwork.
SwiftTLS supports a minimal set of features and intentionally does not allow negotiation of older versions of TLS.
Note
At this time, all types exposed in this package are marked as SPI and subject to change at any time.
- Swift 6.3 and up
- macOS 26.0 and up or Linux (Ubuntu 22.04+)
- Xcode 26.0 and up (Apple platforms only)
To build via the command line (for all platforms), run at the root of the package:
swift build
To run all unit tests, run
swift test
Unit tests can also be run by filtering a specific class or function:
% swift test --filter HandshakeStateMachineTests
% swift test --filter HandshakeStateMachineTests.testStartHandshake
GitHub runs the unit tests automatically when you open or update a pull request. See CONTRIBUTING for details.
The SwiftTLS Contributing Guide includes detailed information about participating in the project.
We welcome the following contributions:
- Reporting bugs with clear, reproducible steps via GitHub Issues
- Improving documentation to make the project more accessible
- Adding or enhancing tests to improve reliability and coverage
- Adding ports to new platforms
- Triaging issues by providing feedback, testing, and validation
- Participating in the Networking category on the Swift Forums
SwiftTLS has a limited scope and is focused on supporting specific projects, such as supporting QUIC in SwiftNetwork. Pull requests that add new functionality or expand the surface will not be accepted at this time.