OgmaProtect v0.5.5
Signed for OpenBSD 7.9. Five steps, about ten minutes. Every command below is ready to copy
and paste — run them on the router itself, as a user who can doas.
Before you start
- OpenBSD 7.9 installed on the router, with a shell and
doas(or root). - Network access from the router to this site and to your package mirror — the install pulls two dependencies,
sqlite3andp5-CGI, from the mirror you already use. - A browser on your laptop, for the login at the end. That is the whole client.
The whole sequence is:
- Install our signing key — once per box, and nothing else works without it.
- Download the five release files.
- Verify them against the key.
- Install the package.
- Bring it up and log in.
Before you run it
OgmaProtect is source-available under the PolyForm Small Business License 1.0.0, not open source. It is free to use for a company with fewer than 100 people and under USD 1M (2019, inflation-adjusted) revenue in the prior tax year — both conditions must hold. Beyond that it needs a commercial licence from Wireless Connect Ltd.. Downloading is unrestricted; using it is what the terms govern. See pricing & licensing.
1 · Install our signing key
Once per box, before anything else. pkg_add will refuse our package until this key is on disk.
Run all four in the same shell session — each step uses the record read in 1.1. Nothing is copied by hand except the check in 1.2.
1.1 — Read the anchor record into a variable.
rec=$(dig +short TXT security.ogmaconnect.com | tr -d '"' | grep signer=ogmaprotect-05-pkg)
echo "$rec" You should see one line, the record for your release series:
v=ogmaprotect-anchor1; signer=ogmaprotect-05-pkg; keynum=d1ea448c55bce1d6; key=<base64>; sha256=<hash> Nothing printed? The lookup failed, or that host is not resolving — fix that before going on, rather than continuing with an empty variable.
1.2 — Compare the keynum against the one published here. This is the one value you check by eye, against this page rather than against the record itself:
d1ea448c55bce1d6
keynum=$(echo "$rec" | sed -n 's/.*keynum=\([^;]*\).*/\1/p')
[ "$keynum" = "d1ea448c55bce1d6" ] && echo "keynum OK" || echo "STOP - keynum does not match the page" Anything but keynum OK: stop, and tell us.
1.3 — Write the key to disk under exactly that filename, taken straight from the record. This one runs as root: keep the doas if your box has doas(1) configured; on a fresh install with no /etc/doas.conf, run it from a root shell (su) and drop the doas.
key=$(echo "$rec" | sed -n 's/.*key=\([^;]*\).*/\1/p')
printf 'untrusted comment: OgmaProtect 0.5 series package signing key public key\n%s\n' "$key" | doas tee /etc/signify/ogmaprotect-05-pkg.pub > /dev/null 1.4 — Confirm the file matches the record's own hash. This covers the exact bytes of the key file, so a truncated or mangled key is caught here rather than as a puzzling pkg_add refusal later:
hash=$(echo "$rec" | sed -n 's/.*sha256=\([^;]*\).*/\1/p')
[ "$(sha256 -q /etc/signify/ogmaprotect-05-pkg.pub)" = "$hash" ] && echo "key OK" || echo "STOP - key does not match the record" You want key OK. Then you are done with the key, on this box, for good.
Why the key comes from somewhere else
Nothing can install this key for you — not the package (verification happens before it is unpacked), not OpenBSD's installer, and no OgmaProtect code. It comes from a DNS record on a different domain, at a different DNS provider from the one serving this download, so that no single compromised account can hand you both a forged package and the key that vouches for it.
That zone is not DNSSEC-signed, so the lookup is trust-on-first-use — the same position you are in the first time you install any operating system's signing key. What it gives you is separation, not authentication, which is why step 1.2 exists: an attacker would have to compromise this site and that DNS zone consistently to defeat it.
The filename matters because it is what pkg_add looks up — a renamed key is
a refused package. And you only do this once: every later release carries the next
series' key inside a package this one has already verified.
Doing it by hand instead
No dig on the box, or you would rather read the record yourself? Look it up
from anywhere, take the record whose signer= is ogmaprotect-05-pkg, check
its keynum= against the value above, and write the key out with the
key= value on the second line:
doas sh -c 'cat > /etc/signify/ogmaprotect-05-pkg.pub <<EOF
untrusted comment: OgmaProtect 0.5 series package signing key public key
<the base64 value of key= from the TXT record>
EOF'
Then sha256 /etc/signify/ogmaprotect-05-pkg.pub must print the record's sha256=
value. Same file, same checks — only the typing is manual.
2 · Download the files
All five. The package alone cannot be verified.
On the router:
mkdir -p ~/ogmaprotect && cd ~/ogmaprotect
ftp https://ogmaprotect.com/download/ogmaprotect-0.5.5.tgz
ftp https://ogmaprotect.com/download/ogmaprotect-0.5.5.tar.gz
ftp https://ogmaprotect.com/download/SHA256
ftp https://ogmaprotect.com/download/SHA256.sig
ftp https://ogmaprotect.com/download/RELEASE-INFO Or click each file and copy them across yourself:
| File | What it is | Size |
|---|---|---|
ogmaprotect-0.5.5.tgz | The package. This is what you install. | 6.8 MB |
ogmaprotect-0.5.5.tar.gz | Source tarball, for audit or a ports build. | 5.2 MB |
SHA256 | Signed manifest covering the package, the source tarball and the release info — and the appliance image. | < 1 KB |
SHA256.sig | Detached signature over that manifest. | < 1 KB |
RELEASE-INFO | Which OpenBSD release this package was built for — check it against uname -r before installing (step 3a); covered by the manifest. | < 1 KB |
Keep all five in the same directory — step 3 reads the manifest and the signature from alongside the files they cover.
3 · Verify what you downloaded
In the directory you downloaded into.
signify -C -p /etc/signify/ogmaprotect-05-pkg.pub -x SHA256.sig ogmaprotect-0.5.5.tgz ogmaprotect-0.5.5.tar.gz RELEASE-INFO You want this — OK on every file line:
Signature Verified
ogmaprotect-0.5.5.tgz: OK
ogmaprotect-0.5.5.tar.gz: OK
RELEASE-INFO: OK Read the per-file line, not the banner
signify prints Signature Verified when the manifest's
signature is genuine — which it can be even when the file you downloaded has been
tampered with, because the manifest is ours and your file simply is not the one it
describes. Against a bad download you would see:
Signature Verified
ogmaprotect-0.5.5.tgz: FAIL Anything other than OK on every line: stop. Download
again, and if it fails a second time tell us — do not install it.
3a — Check it was built for the OpenBSD release this box runs. A package is built against one release; a cross-release install verifies perfectly and then fails on a library mismatch.
grep '^built_for_openbsd:' RELEASE-INFO; uname -r The two lines must name the same release. If they do not, stop — this package is not for this box.
4 · Install the package
doas pkg_add ./ogmaprotect-0.5.5.tgz
No flags. pkg_add pulls its two dependencies from your mirror, lays down the
binaries, rc.d scripts and config templates — and deliberately enables and starts nothing.
That is step 5.
If it refuses
Do not reach for -D unsigned. Either the key from step 1 is missing or
misnamed — check /etc/signify/ogmaprotect-05-pkg.pub — or the package is not one of ours.
pkg_add refusing is the system working.
5 · Bring it up and log in
doas ogmaprotect-setup bootstrap One command from installed package to working HTTPS login: it starts the 16 daemons in order and provisions the box — TLS certificate, first administrator, firewall, web front end last.
It prints a one-time admin password to the machine console, and nowhere
else. Sign in as admin at
https://<this-host>/ogmaprotect/ and change it when prompted.
Get started covers what bootstrap does,
first login, and doing it by hand instead.
Steps 2 to 4, in one paste
Once the signing key from step 1 is on the box. Chained with
&&, so it stops at the first failure rather than installing
something that did not verify or was built for another OpenBSD release. It ends at an
installed package — run step 5 yourself when
you are ready to bring the box up.
mkdir -p ~/ogmaprotect && cd ~/ogmaprotect &&
ftp https://ogmaprotect.com/download/ogmaprotect-0.5.5.tgz &&
ftp https://ogmaprotect.com/download/ogmaprotect-0.5.5.tar.gz &&
ftp https://ogmaprotect.com/download/SHA256 &&
ftp https://ogmaprotect.com/download/SHA256.sig &&
ftp https://ogmaprotect.com/download/RELEASE-INFO &&
signify -C -p /etc/signify/ogmaprotect-05-pkg.pub -x SHA256.sig ogmaprotect-0.5.5.tgz ogmaprotect-0.5.5.tar.gz RELEASE-INFO &&
[ "$(sed -n 's/^built_for_openbsd: *//p' RELEASE-INFO)" = "$(uname -r)" ] &&
doas pkg_add ./ogmaprotect-0.5.5.tgz Upgrading
Same steps 1 to 3 — verify the new release exactly as above, since an upgrade is where a substituted artifact would do the most damage. Snapshot your state first, then replace in place:
doas pkg_add -r ./ogmaprotect-0.5.5.tgz
Or by name, from the hosted package repository — pkg_add verifies the
signature inside the package itself, and the second path entry is where the
dependencies come from:
doas env PKG_PATH="https://ogmaprotect.com/pkg/%c/packages/%a/:installpath" pkg_add -u ogmaprotect
Upgrades are forward-only, so the snapshot of
/var/db/ogmaprotect is your only way back — the product's own
two-step update takes it for you.
That is the artifact half. The full sequence — stopping the daemons, taking the snapshot correctly, and starting back up — is on the Get started page.
What the signature does and does not prove
It proves the package you hold is byte-for-byte the one we built and signed — tampering
in transit, a compromised host, a corrupted mirror: pkg_add checks the
signature as it unpacks and refuses at the first bad chunk, so nothing unverified is
ever written to disk.
It does not prove the key you hold is ours; that rests on the cross-check in step 1.2. And a genuine older release still verifies — our signatures do not expire and nothing on the box enforces a version floor — so check the version you received against what the advisory told you to install. Our full position is in Security & supply chain.