Describe the signature scheme in docs/FORMAT.md as the code builds it (closes #187)
check / check (push) Failing after 6s

The Signature Scheme section now states what signatureString builds: the
magic, the outer uuid as lower-case hex with no hyphens, and the outer
sha256 as the lower-case hex of its multihash, which starts 1220, with an
example string taken from a run of the code. It says signer is the
upper-case hex fingerprint of the signing primary key and that a signature
is stored only in the manifest. The mf.proto comments on fields 201 to 203
say the same, and mf.pb.go is regenerated. A new test pins the example
string. Nothing about what is signed or how changes.

Model: opus-5-5
This commit was merged in pull request #188.
This commit is contained in:
2026-10-13 15:55:47 +02:00
parent 8f7170b77f
commit c36f27068f
5 changed files with 82 additions and 30 deletions
+8 -6
View File
@@ -32,15 +32,17 @@ message MFFileOuter {
bytes uuid = 105;
bytes innerMessage = 199;
// 2xx for optional manifest root attributes
// think we might use gosignify instead of gpg:
// github.com/frankbraun/gosignify
//detached signature, ascii or binary
// 2xx for optional manifest root attributes
// one OpenPGP signature, armored or binary, over the canonical string
// ZNAVSRFG-<uuid>-<sha256 as a multihash>, with the uuid as 32
// lower-case hex digits and no hyphens, and the multihash in lower-case
// hex (see docs/FORMAT.md). A signature is never stored anywhere else.
optional bytes signature = 201;
//full GPG key id
// fingerprint of the signing primary key, in upper-case hex
optional bytes signer = 202;
//full GPG signing public key, ascii or binary
// OpenPGP public key of the signer, one primary key, armored or binary
optional bytes signingPubKey = 203;
}