# tlsuv **Repository Path**: ak17/tlsuv ## Basic Information - **Project Name**: tlsuv - **Description**: https://github.com/openziti/tlsuv.git - **Primary Language**: C - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-02-20 - **Last Updated**: 2025-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README TLSUV = TLS + libUV ---- ## Overview TLSUV is a cross-platform library allowing asynchronous TLS communication. This is done by combinining [libuv](https://github.com/libuv/libuv) with [mbedTLS](https://github.com/ARMmbed/mbedtls.git) or [OpenSSL](https://www.openssl.org/) (see below for using other TLS implementations) ## Features * async TLS over TCP * flexible TLS engine support * HTTP and websocket clients * [pkcs#11](https://en.wikipedia.org/wiki/PKCS_11) support with default(OpenSSL) engine ## API API is attempted to be consistent with [libuv API](http://docs.libuv.org/en/v1.x/api.html) ## Supported Platforms * Linux * Darwin/MacOS * Windows ## Using in your project The simplest way to integrate `tlsuv` in your project is to include it in your CMake build with [`FetchContent`](https://cmake.org/cmake/help/latest/module/FetchContent.html) ```cmake FetchContent_Declare(tlsuv GIT_REPOSITORY https://github.com/openziti/tlsuv.git GIT_TAG v0.29.5 # use latest release version ) FetchContent_MakeAvailable(tlsuv) target_link_libraries(your_app PRIVATE tlsuv) ``` ## Selectable Features HTTP support is a selectable feature (ON by default) and can be disabled by adding `-DTLSUV_HTTP=OFF` during CMake configuration step. This will also reduce dependencies list. ## Dependencies TLSUV depends on the following libraries: | Library | Notes | |--------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [libuv](https://github.com/libuv/libuv) | | | TLS | [OpenSSL](https://github.com/openssl/openssl)(default) or
[mbedTLS](https://github.com/mbedtls/mbedtls)(`TLSUV_TLSLIB=mbedtls`).
Some features are only available with OpenSSL | | [llhttp](https://github.com/nodejs/llhttp) | only with HTTP enabled | | [zlib](https://github.com/madler/zlib) | only with HTTP enabled | CMake configuration process will attempt to resolve the above dependencies via `find_package()` it is up to consuming project to provide them. ## TLS engine support (BYFE - Bring Your Favorite Engine) If either of two TLS library options are not working for, there is a mechanism to dynamically provide TLS implementation. For example, you're already using another TLS library for your project, there is a way to use it inside _tlsuv_. Two API [interfaces are defined](include/tlsuv/tls_engine.h) for that purpose: - `tls_context` is roughly equivalent to `mbedtls_ssl_config` or `SSL_CTX`in OpenSSL and is used to create instances of `tls_engine` for individual connections - `tls_engine` is an object for handling handshake and encryption for a single connection. Similar in purpose to `mbedtls_ssl_ctx` or `SSL` in OpenSSL ## Building standalone See [development](HACKING.md) instruction for building this project standalone for checking out samples, or contributing. ## Getting Help ------------ Please use these community resources for getting help. We use GitHub [issues](https://github.com/openziti/tlsuv/issues) for tracking bugs and feature requests and have limited bandwidth to address them. - Read [the docs](https://docs.openziti.io/) - Ask a question on [Discourse](https://openziti.discourse.group/) Copyright© 2018-2024. NetFoundry, Inc.