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.