Channel layout¶
The estate's channel is a GitLab generic package registry. This page documents what the package expects, so a mirror can reproduce it.
Base URL¶
Available as artifacts.DefaultChannel. It is a full API base rather than a
host, because the registry path is part of the contract — a caller pointing at a
mirror needs to reproduce the shape below it rather than guess it.
Override with artifacts.WithChannel(base). A trailing slash is trimmed.
Asset path¶
Each component is percent-escaped. <version> is the artefact's own upstream
version — 1.28.0 for ONNX Runtime 1.28.0 — never a version of the channel,
which does not have one.
Example:
The channel is public: these paths resolve without a token.
Files in every artefact-version¶
| File | Constant | Purpose |
|---|---|---|
checksums.txt |
artifacts.ManifestFile |
digests of every asset in this version |
checksums.txt.sig |
artifacts.SignatureFile |
detached OpenPGP signature over checksums.txt |
The channel also publishes the signing key as release.asc. This package never
fetches it — trust comes from the key embedded in the calling binary and the
key served over WKD. A key downloaded from the same place as the signature it
validates proves nothing, which is why there is no constant for it.
Manifest format¶
The format sha256sum writes and reads:
e15ff8b5d85afe6c144d97c6fd432254bf76a219daaf17658087d6ecb3e8f0bb onnxruntime-linux-aarch64-1.28.0.tgz
a3e1b79d7bb1bf09696ce675f49e4064e6c81f6202b8225624fff0e93f8d6407 onnxruntime-linux-x64-1.28.0.tgz
Parsing is strict about the digest and relaxed about whitespace: exactly 64 lowercase hex characters, but any amount of space before the filename. A malformed digest is a corrupted or hostile manifest; an odd number of spaces is a text file having been through something.
Blank lines are skipped. Any other malformed line rejects the whole manifest
with ErrMalformedManifest — a parser that skipped bad lines would silently
accept a manifest with entries removed. A manifest listing no files is likewise
rejected.
The manifest is authoritative for what a version contains. A file absent from it
is ErrNotFound regardless of how the URL responds.
Signature format¶
A detached, ASCII-armored OpenPGP signature over the exact bytes of
checksums.txt. This is what gtb's signing backend emits.
The signing key for the estate channel:
| Identity | artifacts-release@phpboyscout.uk (trust.ReleaseEmail) |
| Fingerprint | 544E64F3B87561D56739333634A711C4B9EAA99A |
| WKD | openpgpkey.phpboyscout.uk |
go/signing enforces a minimum key strength: Ed25519, or RSA at 3072 bits or
above. It also requires the key returned by WKD to carry a UID matching the
address requested — a key published under a different identity is a different
key.
Verification order¶
checksums.txtandchecksums.txt.sigare fetched.- The signature is verified against the trust anchors — before the manifest is parsed, because the parser is the first thing an attacker reaches.
- The manifest is parsed.
- The requested asset is fetched.
- Its SHA-256 is compared against the manifest entry.
- The verified bytes are written to the cache and the path returned.
A cache hit short-circuits at step 1.