rTCPLS is a Rust implementation of the protocol TCPLS atop the TLS library Rustls. It follows the TCPLS IETF draft.
rTCPLS is an ongoing implementation of the protocol TCPLS. This implementation reflects the initial design of TCPLS that follows the draft TCPLS IETF draft.
To build the code, simply execute the following commands:
git clone https://forge.infosec.unamur.be/phd-elkoulak/r-tcpls-v-0-1-no-header.git
cd r-tcpls-v-0-1-no-header
git checkout master
$ cargo build --release
Our [examples] directory contains demos that show different client-server scenarios as a proof of concept. To run them use the following commands for the following examples:
$ cargo run --bin server_tcpls -- --verbose --certs test-ca/rsa/end.fullchain --key test-ca/rsa/end.rsa -p 8443
$ cargo run --bin client_tcpls -- --cafile test-ca/rsa/ca.cert -p 8443 localhost --verbose
$ cargo run --bin server_tcpls_mp -- --verbose --certs test-ca/rsa/end.fullchain --key test-ca/rsa/end.rsa -p 8443
$ cargo run --bin client_tcpls_mp -- --cafile test-ca/rsa/ca.cert -p 8443 localhost --verbose
To run the tests, execute the following command
$ cargo test
There are several benchmark tests to measure the CPU time taken to accomplish several tasks. Execute the following commands to run the following tests:
Measuring the average CPU time spent on decrypting into the application buffer one stream, of 600 TCPLS full records, sent over two connections.
$ cargo bench --bench srv_clnt_single_stream_two_connection
Measuring the average CPU time spent on decrypting into the application buffers one stream, of 600 TCPLS full records, sent over a single connection.
$ cargo bench --bench srv_clnt_single_stream_single_connection
As rTCPLS is built atop Rustls, it is distributed under the following three licenses:
- Apache License version 2.0.
- MIT license.
- ISC license.
These are included as LICENSE-APACHE, LICENSE-MIT and LICENSE-ISC respectively. You may use this software under the terms of any of these licenses, at your option.
