Schnellstart: UESPA mit Rust

Wrapper: uespa-core (nativ) · Ziele: Linux, Windows, macOS, no_std (Cortex-M, RISC-V)

1. Konto, App-ID und LicenseCert

Lege im Developer-Portal eine App mit der App-ID deiner Anwendung an und stelle ein LicenseCert aus. Das Zertifikat ist 294 Byte groß, wird offline geprüft und gilt nur für genau diese App-ID. Details: Lizenzen, App-IDs & Mandanten.

2. Einbinden

Cargo.toml

toml
[dependencies]
uespa-core = { version = "0.1", features = ["std", "tokio", "quic", "opus", "mls"] }

3. Initialisieren und senden

rust
use uespa_core::{LicenseInput, UespaConfig, UespaEngine};

// LicenseCert aus dem Developer-Portal (Base64-dekodiert, 294 Byte)
let cert: Vec<u8> = load_license()?;
let mut cfg = UespaConfig::new(LicenseInput::Cert(cert), device_seed /* 32 B aus dem Keystore */);
cfg.tenants = vec![tenant_id]; // nur Pro: Mandanten aus dem Portal

let hal = uespa_core::transport_std::StdUdpTransport::bind(0, "com.example.chat")?;
let mut uespa = UespaEngine::init(cfg, hal)?;     // prüft das Zertifikat offline

uespa.chat().send_text(&peer_pk, "Hallo")?;
uespa.bus().subscribe("home/+/temp")?;
uespa.bus().publish("home/kitchen/temp", b"21.5")?;

loop {
    uespa.tick();
    while let Some(ev) = uespa.poll_event() { /* UespaEvent::… */ }
}

Hinweise

  • Die Engine ist sans-IO: eigene Transporte implementieren einmal TransportHal.
  • Mandanten (Pro) werden über UespaConfig::tenants aktiviert und müssen im Zertifikat stehen.
  • Das Gerät leitet immer auch Pakete anderer Apps verschlüsselt weiter (Zwangs-Hop) – zugestellt wird nur im eigenen Namespace.
  • Rendezvous für Internet-P2P: rendezvous.uespa.io:47401 (UDP), Authority: https://uespa.io/v1/authority.