tls-tester 0.1.0

A TLS 1.3 server for testing client implementations
Documentation
# TLS tester

A rust crate for testing [TLS 1.3] client implementations.

> [!WARNING]  
> This is in a pre-alpha state, the crate is missing:
>
> - Documentation
> - Unit tests

## Goals

- Hackability
- Debugability
- Testing TLS client implementation compliance

## Non-goals

- Performance
- Security
- Versions of TLS older than [TLS 1.3]
- Strict TLS compliance
  - TLS tester needs to create non-compliant behaviour to test compliance, for all other purposes TLS tester should be compliant unless otherwise noted

## Limitations

- [Compliance]https://datatracker.ietf.org/doc/html/rfc8446#section-9 limitations
  - Does not implement all required digital signature algorithms, missing:
    - `rsa_pkcs1_sha256`
    - `rsa_pss_rsae_sha256`
  - Does not implement all recommended cipher suites, missing:
    - `TLS_AES_256_GCM_SHA384`
    - `TLS_CHACHA20_POLY1305_SHA256`
  - Does not implement all recommended key exchange algorithms, missing:
    - `X25519`
- PSK does not support `psk_ke`, only `psk_dhe_ke` is supported

## Available tests

- Server record fragmentation

### Planned tests

- Forced HelloRetry
- Invalid GCM tag
- Missing handshake messages, such as CertificateVerify
- Non-zero padding extension
- Record fragmentation across key changes
- Record overflow
- Sending application data before handshake is done
- Sending duplicate handshake message types
- Sending handshake messages out of order
- Zero length alert/handshake/applicationdata

## License

Licensed under either of

- Apache License, Version 2.0 ([LICENSE-APACHE]LICENSE-APACHE or
  <http://www.apache.org/licenses/LICENSE-2.0>)
- MIT license ([LICENSE-MIT]LICENSE-MIT or <http://opensource.org/licenses/MIT>)

at your option.

[TLS 1.3]: https://datatracker.ietf.org/doc/html/rfc8446