open-standards/joule-code/joule-code-rs/crates/joule-contrib/Cargo.toml
Transaction Science aec7d15147 joule-contrib: SRT and RIST contribution over UDP with retransmission
SRT (draft-sharabayko-srt-01): a listener that serves many callers on one
UDP port by socket ID and a caller; the HSv5 caller-listener handshake with
its SYN cookie, HSREQ/HSRSP, the stream ID, key material; live mode with
TSBPD over the negotiated latency, too-late packet drop, ACK/ACKACK and the
RTT estimate, immediate and periodic NAKs, retransmission, and AES-CTR with
the SEK wrapped (RFC 3394) under a PBKDF2-HMAC-SHA1 key.

RIST (VSF TR-06-1:2020, TR-06-2:2024), feature rist: the Simple Profile's RTP
on P and RTCP on P+1, SR/RR/SDES CNAME, range and bitmask requests, SSRC
low-bit retransmissions, the RTT echo; the Main Profile's GRE-over-UDP tunnel
in reduced overhead mode with the VSF EtherType and the legacy one,
keep-alives, and PSK (PBKDF2-HMAC-SHA256 over the nonce, AES-CTR on the GRE
sequence number).

An MPEG-TS demultiplexer and multiplexer, a PCR pacer, an account of every
sequence number's delivery, recovery or drop, an impairing UDP proxy, and
send, receive and bench tools.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 22:31:09 -04:00

49 lines
1.9 KiB
TOML

[package]
name = "joule-contrib"
version = "0.1.0"
description = "Contribution over UDP with retransmission: SRT (draft-sharabayko-srt-01) listener and caller with its latency window, ARQ and AES-CTR, and RIST (VSF TR-06-1 Simple and TR-06-2 Main profiles: RTP, RTCP retransmission requests, GRE-over-UDP tunnelling, PSK), with an MPEG-TS demultiplexer and an account of every sequence number's loss, recovery and latency."
edition = "2024"
rust-version = "1.97"
license = "Apache-2.0"
repository = "https://github.com/transaction-science/open-standards"
[lib]
path = "src/lib.rs"
[features]
default = []
# RIST (VSF TR-06-1, TR-06-2). Off by default: both texts carry an IPR notice on their
# protocol sections with a licensing assurance to implementers, and whether a default build
# carries the code is the owner's decision (README, "Patents").
rist = []
[[bin]]
name = "joule-contrib-send"
path = "src/bin/send.rs"
[[bin]]
name = "joule-contrib-recv"
path = "src/bin/recv.rs"
[[bin]]
name = "joule-contrib-bench"
path = "src/bin/bench.rs"
[dependencies]
# AES (FIPS 197) on the CPU's AES instructions where it has them, CTR mode (SP 800-38A),
# HMAC (RFC 2104) with SHA-1 and SHA-256: RustCrypto, MIT OR Apache-2.0. PBKDF2 (RFC 8018)
# and AES key wrap (RFC 3394) are written here over them.
aes = "0.8"
ctr = "0.9"
hmac = "0.12"
sha1 = "0.10"
sha2 = "0.10"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time", "net", "io-util"] }
rand_core_06 = { package = "rand_core", version = "0.6", features = ["getrandom"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
hex = "0.4"
tracing = "0.1"
[dev-dependencies]
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }