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]>
49 lines
1.9 KiB
TOML
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"] }
|