OXYGENHUB

Releases 1

oxy 0.5.1 v0.5.1 · ✔ signed by Andy McCall · andymccall ·

Trust and audit
  • oxy 0.5.0 and older can clone a repository again after a keyless agent tagged it (issue #131). Since issue #129 a release tag may be signed by a ten-minute certified key, which released clients do not know how to authorize: they refused the tag (key … may not create tags/v0.5.0 under this repository's policy), and with it the whole clone, fetch or oxy submodule update. Clients now send User-Agent: oxy/<version> and declare what they understand in Oxy-Features (certified-tags so far; docs/protocol.md, Client capabilities). Under a policy, a server leaves out of its refs answer to a client that does not declare certified-tags every tag that only a certificate authorizes, so that client clones the rest as if the tag did not exist. The rule is Repo::refs_for_client in oxy-core; oxy-server gains a Backend::adjust_refs hook, given the request headers, whose default applies it, so oxy serve and every embedding host do.
  • Keyless agents can create release tags (issue #129). oxy tag create and oxy push under a keyless home was refused "unknown key": the push did not carry the tag signer's identity and certificate, and tags were authorized only by keys the policy names, never by a certificate under a subject grant. The push now carries them, and a receiver authorizes a short-lived key's tag by a subject grant at its own clock, as it does a bookmark move, and records when it accepted it (OxygenHub signs that with its key). A fetch checks such a tag at that acceptance, or at its integrated time when the hub's log gives one, so a release tag made with a ten-minute key is still fetched months later. A fetch never checks it at the time the tag claims: without an acceptance the tag is left out with a warning (tags/NAME not updated), and the rest is fetched. A client keeps the acceptance and serves and pushes it with the tag, so a tag passed on to another remote, or cloned from a clone, keeps its time. The wire change is additive: tags in refs and push gain keys 4 to 6 (acceptance, log place, cosigned checkpoints), which older readers ignore.

Assets