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

Download history 64/week @ 2024-12-09 10/week @ 2024-12-16 131/week @ 2024-12-23 33/week @ 2024-12-30 67/week @ 2025-01-06 28/week @ 2025-01-13 25/week @ 2025-01-20 741/week @ 2025-01-27 860/week @ 2025-02-03 1042/week @ 2025-02-10 1519/week @ 2025-02-17 1699/week @ 2025-02-24 1624/week @ 2025-03-03 1225/week @ 2025-03-10 599/week @ 2025-03-17 237/week @ 2025-03-24

3,757 downloads per month
Used in 10 crates

MIT/Apache

255KB
3.5K SLoC

codec_sv2

crates.io docs.rs rustc+ license codecov

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 rust std 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:

  1. Unencrypted Example: Encode and decode standard Sv2 frames, detailing the message serialization and transmission process for unencrypted communications.

  2. 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