All Projects → nsc → Swifttls

nsc / Swifttls

Licence: mit
A TLS implementation in Swift

Programming Languages

swift
15916 projects

Labels

Projects that are alternatives of or similar to Swifttls

dheater
D(HE)ater is a proof of concept implementation of the D(HE)at attack (CVE-2002-20001) through which denial-of-service can be performed by enforcing the Diffie-Hellman key exchange.
Stars: ✭ 142 (-1.39%)
Mutual labels:  tls13
Wolfmqtt
wolfMQTT is a small, fast, portable MQTT client implementation, including support for TLS 1.3.
Stars: ✭ 316 (+119.44%)
Mutual labels:  tls13
Katwebx
An extremely fast static web server and reverse proxy for the modern web.
Stars: ✭ 39 (-72.92%)
Mutual labels:  tls13
tls13-sm-spec
IETF Internet-Draft (I-D) of Chinese cipher suites in TLSv1.3 and related documentation.
Stars: ✭ 25 (-82.64%)
Mutual labels:  tls13
ssldump
ssldump - (de-facto repository gathering patches around the cyberspace)
Stars: ✭ 160 (+11.11%)
Mutual labels:  tls13
Illustrated Tls13
The Illustrated TLS 1.3 Connection: Every byte explained
Stars: ✭ 372 (+158.33%)
Mutual labels:  tls13
Haproxy
HAProxy Load Balancer's development branch (mirror of git.haproxy.org)
Stars: ✭ 2,463 (+1610.42%)
Mutual labels:  tls13
Nginx Ee
Automated Nginx compilation from sources with additional modules support. Compatible with WordOps, EasyEngine & Plesk
Stars: ✭ 132 (-8.33%)
Mutual labels:  tls13
xquic
XQUIC Library released by Alibaba is a cross-platform implementation of QUIC and HTTP/3 protocol.
Stars: ✭ 943 (+554.86%)
Mutual labels:  tls13
Tincan Tls
A cleanroom implementation of TLS 1.3
Stars: ✭ 18 (-87.5%)
Mutual labels:  tls13
mos-tls-tunnel
Archived. Check this out https://github.com/IrineSistiana/simple-tls
Stars: ✭ 21 (-85.42%)
Mutual labels:  tls13
wolfssl-py
Python wrapper for wolfSSL embedded SSL/TLS library.
Stars: ✭ 30 (-79.17%)
Mutual labels:  tls13
Lsquic
LiteSpeed QUIC and HTTP/3 Library
Stars: ✭ 727 (+404.86%)
Mutual labels:  tls13
idris2-tls
A portable idris2 implementation of TLS
Stars: ✭ 25 (-82.64%)
Mutual labels:  tls13
Wolfssl
wolfSSL (formerly CyaSSL) is a small, fast, portable implementation of TLS/SSL for embedded devices to the cloud. wolfSSL supports up to TLS 1.3!
Stars: ✭ 1,098 (+662.5%)
Mutual labels:  tls13
Sslyze
Fast and powerful SSL/TLS scanning library.
Stars: ✭ 2,623 (+1721.53%)
Mutual labels:  tls13
Tlsfuzzer
SSL and TLS protocol test suite and fuzzer
Stars: ✭ 335 (+132.64%)
Mutual labels:  tls13
Atls
A light TLS implementation used for learning: TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3 GMSSL 1.1(国密SSL) based on libcrypto.so.
Stars: ✭ 134 (-6.94%)
Mutual labels:  tls13
Tlslite Ng
TLS implementation in pure python, focused on interoperability testing
Stars: ✭ 119 (-17.36%)
Mutual labels:  tls13
Docker Nginx Http3
Alpine Linux image with Nginx 1.19.4 (mainline) with HTTP/3 (QUIC), TLSv1.3, 0-RTT, brotli, NJS support, and 10 MB size. All built on the bleeding edge for max performance. Built on the edge, for the edge.
Stars: ✭ 820 (+469.44%)
Mutual labels:  tls13

SwiftTLS

SwiftTLS is a Swift-only implementation of TLS 1.3 and 1.2 that hopes to avoid common classes of vulnerabilities that have traditionally plagued C-based implementations like buffer overflows or generally arbitrary memory accesses. It is written entirely in Swift and has no external dependencies, i.e. all public key crypto, symmetric crypto and hash functions are included.

SwiftTLS is licensed under the MIT License.

Status

Features

Crypto

  • RSA-PKCS1 & RSA-PSS, DHE, ECDHE, ECDSA
  • CBC and GCM cipher modes
  • secp256r1, secp384r1, secp521r1
  • AES
  • SHA-1, SHA-2

TLS 1.2

  • session resumption

TLS 1.3

  • 0-RTT
  • HelloRetryRequest

Things to try

swift run -c release tls client --connect swifttls.org

swift run -c release tls server --port 4433 --certificate /path/to/mycert.pem --dhParameters /path/to/mydhparams.pem

BigInt performance highly depends on the build configuration, i.e. debug builds are an order of magnitude slower than release builds. So if you want to run the tests it is best to also use the release configuration like this:

swift test -c release -Xswiftc -enable-testing

A test server is running at swifttls.org.

A good starting point to see how you set up a TLS connection in code is server.swift and client.swift.

For a rough overview of the overall architecture see SwiftTLS Design

Disclaimer

Up until now this project has mainly been an effort for me to learn how TLS works, but I'd love to get your feedback and contributions to improve it.

Don't use this library in a production environment. It is not ready, has certainly a lot of bugs and received virtually no real world testing yet.

Performance has not been a primary goal until now, so don't expect too much.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].