Diva Martínez 4f8afee29f refactor(proto): Introduce CryptoState (#420)
* add CryptoState and burte force its usage

* add CryptoState::has_keys

* add CryptoState::local_crypto and CryptoState::remote_crypto

* use local_crypto and remote_crypto

* local_crypto uses SpaceId instead to select zero rtt when needed

* move update_keys to CryptoState

* add more util fns and rename EncryptionLevel

* rename to `EncryptionLevel` again

* add some util fns

* add space kind

* use SpaceKind were it fits

* use SpaceKind in connection too

* packet header declares encryption level, not packet number space

* move module functions to CryptoState methods

* random improvements

* fmt

* fix for merge

* key phase is also part of the connections crypto state

* revert making the highest space a SpaceKind. Leave for later PR

* revert taking SpaceKindn in Connection methods, leave for other PR

* packet.space.header is SpaceId again

* fmt

* fixes after self review

* address review
2026-02-12 15:57:44 +00:00
2026-02-06 10:04:56 +00:00
2026-01-28 11:10:17 -05:00
2025-03-24 15:57:34 +00:00
2020-01-27 10:21:10 -08:00
2025-12-02 13:24:18 +01:00
2025-12-02 12:39:06 +00:00
2025-02-23 11:52:46 +00:00

Iroh Quinn

This is a fork based on quinn, maintained by n0. Currently published to crates.io under iroh-quinn.

Main differences to upstream quinn

  • Small API improvements
  • Implements additional QUIC extensions
    • Multipath
    • QAD
    • QNT
  • Expanded support for QLOG

Quinn is a pure-rust, async-compatible implementation of the IETF [QUIC][quic] transport protocol.

  • Simultaneous client/server operation
  • Ordered and unordered stream reads for improved performance
  • Works on stable Rust, tested on Linux, macOS and Windows
  • Pluggable cryptography, with a standard implementation backed by [rustls][rustls] and [ring][ring]
  • Application-layer datagrams for small, unreliable messages
  • Future-based async API
  • Minimum supported Rust version of 1.83.0

License

Copyright 2025 The quinn developers Copyright 2025 N0, INC.

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

S
Description
noq, a QUIC implementation in Rust
Readme 106 MiB
Languages
Rust 99.3%
Python 0.5%
Shell 0.2%