← askd protocol specification

askd protocol test vectors

Download

cred-v3.json frames.json resume-proof.json sealed-audit.json spa-v1.json spa-v3.json

Known-answer vectors that pin the wire formats in ../PROTOCOL.md. They are generated by driving the real code paths (common.buildSpa, cred.buildCred/signCred/buildSpaV3, seal.sealRecord, the keyed-Blake2b resume MAC) from fixed synthetic seeds, so they cannot drift from the implementation and an independent implementation can validate its parsers/signers byte-for-byte.

How these are produced

The vectors are generated by driving the reference implementation from the fixed seeds below (zig build test-vectors), so they cannot drift from the code. They are deterministic, Ed25519 signs per RFC 8032, with one exception (the sealed-audit ciphertext, noted below). The reference implementation is being released under EUPL-1.2; until then, these vectors + ../PROTOCOL.md are the normative reference and are sufficient to validate an independent implementation byte-for-byte.

Fixed inputs

inputvalue
machine seed0x11 * 32
CA seed0x22 * 32
auditor seed (X25519)0x33 * 32
noncea1b2c3d4e5f60718293a4b5c6d7e8f90
ts_ms1750000000000
resume secret0x44 * 32, tunnel_id 0x55 * 16
sid (mux)0x66 * 16

Files

filepins
spa-v1.jsonthe 89-byte v1 knock; machine pubkey; signed prefix (25)
cred-v3.jsonthe 416-byte capability credential; CA pubkey; ca_sig; SHA-256 fingerprint
spa-v3.jsonthe 505-byte v3 knock (credential + machine signature; signed prefix 441)
resume-proof.jsonthe 32-byte keyed-Blake2b resume proof
frames.jsonC_DATA/C_ACK and MUX_DATA/MUX_ACK framings (seq/len LE, data="hello")
sealed-audit.jsonthe 112-byte AuditEvent plaintext + auditor pubkey. The 192-byte record's ciphertext is NON-deterministic (X25519 SealedBox uses a random ephemeral key); the generator round-trip-verifies seal->open and pins the plaintext + layout, not the ciphertext.

The generator lives in the reference implementation (src/gen_vectors.zig, build step test-vectors), released with the rest of the code under EUPL-1.2.