ROOSTby Axowl

Docs

Ticket format

ticket  = base64url(payload) "." base64url(signature)      ; no padding
payload = UTF-8 JSON {"v":1,"typ":"roost-rearm","box","nonce","org","by","iat","exp"}
signature = ECDSA P-256 over the payload bytes with SHA-256, as r‖s (64 bytes, IEEE P1363)
  • by is the Owner's user ID. iat and exp are Unix seconds; exp is 10 minutes after iat.
  • Verify the signature over the payload bytes as received; do not re-serialize the JSON.
  • The box accepts a ticket only when the signature verifies with its pinned key, typ is roost-rearm, box is its own ID and nonce is the number it issued for this attempt. A nonce works once.

The same envelope (base64url payload, P-256 r‖s signature) is used by Roost for signed boot images.