enigma-signaling

Crates.ioenigma-signaling
lib.rsenigma-signaling
version0.0.1
created_at2025-12-15 17:28:06.805204+00
updated_at2025-12-15 17:28:06.805204+00
descriptionCanonical signaling messages (SDP/ICE) for Enigma. No network layer.
homepagehttps://github.com/Gladius33/enigma-signaling
repositoryhttps://github.com/Gladius33/enigma-signaling
max_upload_size
id1986435
size22,274
Sébastien TLX (Gladius33)

documentation

https://docs.rs/enigma-signaling

README

enigma-signaling

Canonical JSON encoding for Enigma signaling envelopes (SDP/ICE) with strict validation.

Features

  • Typed signaling envelope with UUID identifiers
  • Strict serde JSON codec (unknown fields rejected)
  • Validation helpers for sender/receiver ids, timestamps, and media payloads

Quick start

use enigma_signaling::{decode, encode, validate, SignalingEnvelope, SignalingKind};
use uuid::Uuid;

let envelope = SignalingEnvelope {
    id: Uuid::new_v4(),
    from: "caller".to_string(),
    to: "callee".to_string(),
    ts_ms: 1,
    kind: SignalingKind::Offer {
        sdp: "v=0...".to_string(),
    },
};

validate(&envelope)?;
let json = encode(&envelope)?;
let roundtrip = decode(&json)?;
assert_eq!(roundtrip.kind, envelope.kind);

Validation rules

  • from and to are non-empty and at most 64 chars
  • ts_ms is strictly positive
  • Offers/answers require non-empty SDP
  • ICE candidates require non-empty candidate
  • Unknown JSON fields are rejected

License MIT 2025 Sébastien TOUILLEUX (Gladius33)

Commit count: 0

cargo fmt