Skip to content

0.12.0

Choose a tag to compare

@Halloweedev Halloweedev released this 07 Sep 03:30
· 1 commit to main since this release

One addition, off by default, and nothing to do in your app unless you want it.

Added

  • requireSignedConfig — Ed25519 verification of server-owned product
    settings.
    The Keylight worker has signed the trial length and free-tier
    flag on every route that delivers them since 2026-09-06. Until now nothing in
    this SDK checked those signatures. It now does, over the payload format
    shared by every Keylight SDK.

    It is off by default, and should stay off unless you know your product is
    signed.
    The worker signs a product's settings only once that product has a
    trial length configured in the dashboard; every other product is served
    unsigned. Turning this on for one of those would reject legitimate responses
    and pin the install to the seed you compiled in.

    When it is on, settings that do not verify are never cached — the SDK
    keeps your seed value rather than trusting what the server claimed. The check
    lives at the single point where settings are merged, so no route can be used
    to write settings around it: /config, validate, and the keyless beacon all
    pass through it.

    Verification is rooted in the trustedPublicKeys you compile into your app.
    The SDK does not fetch a keyset at runtime, on purpose: keys fetched over the
    same connection that serves the settings would let anyone able to forge one
    forge the other. The trade-off is that if you rotate to a new key id, builds
    already in the wild keep their last known settings until you ship an update —
    they freeze, they do not break.

    What this protects is the network path, not the device. Someone editing your
    app's binary can still do as they like; this stops settings being altered in
    transit.