13 releases (8 stable)
new 2.0.0 | Mar 28, 2025 |
---|---|
1.3.1 | Dec 27, 2024 |
1.3.0 | Oct 17, 2024 |
1.2.0 | Jun 3, 2024 |
0.1.3 | Jul 1, 2021 |
#285 in Magic Beans
3,757 downloads per month
Used in 10 crates
255KB
3.5K
SLoC
codec_sv2
codec_sv2
provides the message encoding and decoding functionality for the Stratum V2 (Sv2)
protocol, handling secure communication between Sv2 roles. This crate abstracts the complexity of
message encoding/decoding with optional Noise protocol support, ensuring both regular and encrypted
messages can be serialized, transmitted, and decoded consistently and reliably.
Main Components
- Encoder: Encodes Sv2 messages with or without Noise protocol support.
- Decoder: Decodes Sv2 messages with or without Noise protocol support.
- Handshake State: Manages the current Noise protocol handshake state of the codec.
Usage
To include this crate in your project, run:
cargo add codec_sv2
This crate can be built with the following feature flags:
std
: Enable usage of ruststd
library, enabled by default.noise_sv2
: Enables support for Noise protocol encryption and decryption.with_buffer_pool
: Enables buffer pooling for more efficient memory management.
In order to use this crate in a #![no_std]
environment, use the --no-default-features
to remove the std
feature.
Examples
This crate provides two examples demonstrating how to encode and decode Sv2 frames:
-
Unencrypted Example: Encode and decode standard Sv2 frames, detailing the message serialization and transmission process for unencrypted communications.
-
Encrypted Example: Encode and decode Sv2 frames with Noise protocol encryption, detailing the entire encryption handshake and transport phase and serialization and transmission process for encrypted communications.
Dependencies
~1.4–2.9MB
~48K SLoC