Every file is under https://github.com/doze-dev/doze-modules/releases/download/postgres/. Intel Macs and Windows have no build; WSL2 uses the Linux x86_64 file.
Signing
The index is signed as a whole, and each archive is signed. doze checks both before anything runs, and refuses a module whose checksum or signature doesn't match.
Key
Nu5y8mbj…Wjw=
Where the key lives
Compiled into doze. doze never fetches or trusts a key on first use.
Namespace
doze
Publisher
doze-dev Official
Index signature
8aqfwb3Y…Cw==
What is signed
Each archive: its lowercase-hex SHA-256. The index: module, namespace, releases and channels as canonical JSON.
Not yet signed
The doze (oldest doze) field sits beside the signed part today. new The design moves it inside.
[planned: doze modules verify] Today doze runs these checks itself on every download. The same checks by hand, for macOS arm64. Needs OpenSSL 3: the openssl that ships with macOS has no ed25519 (brew install openssl@3).
Checksum, then signature
# 1. download and hash; compare with the table above$ curl -LO https://github.com/doze-dev/doze-modules/releases/download/postgres/postgres-plugin-0.2.1-aarch64-apple-darwin.tar.gz
$ shasum -a 256 postgres-plugin-0.2.1-aarch64-apple-darwin.tar.gz
58e2a5bf4cf90e9b919581cb254f5445c698e7adff3ad0c1c85a007fc37df305 postgres-plugin-0.2.1-aarch64-apple-darwin.tar.gz
# 2. the signature is over that hex string, with doze's public key$ printf %s 58e2a5bf4cf90e9b919581cb254f5445c698e7adff3ad0c1c85a007fc37df305 > digest.txt
$ echo 'CUay+yn0/9HHmYNEpYs+y4RcO6hupRo/0eBiuYs/yQXkx8huBZHUa3z+Od9Gnk8PhurIX14wqpOAVNd17E1ADQ==' | base64 -d > sig.bin
$ (printf '\x30\x2a\x30\x05\x06\x03\x2b\x65\x70\x03\x21\x00'; echo 'Nu5y8mbjYv7XEtNFBXwPVl+C8SBteVApIROefBwGWjw=' | base64 -d) > doze-key.der
$ openssl pkeyutl -verify -pubin -keyform DER -inkey doze-key.der -rawin -in digest.txt -sigfile sig.bin
Signature Verified Successfully
What doze.lock records for 0.2.1
A project pinned to 0.2.1 carries this entry. doze modules upgrade replaces it whole: release, engines and checksums move together in one reviewable diff. Every platform's checksum goes in, so a teammate on Linux verifies against the same pin you made on a Mac. Pinned and cached means no network at all.
The engine itself is pinned separately, under engines:. Engine versions