chadtmiller.com/atproto
atproto's primitives in Rust, small and free of I/O
atproto 0.1.1 Latest 1 package
0
0
# Reference vectors
What atproto's reference implementations make of fixed keys, for the parts
the interop vectors leave out. `identity.json` is from `identity.mjs`, run
against @did-plc/lib 0.0.4 and the space alpha's @atproto/crypto and
@atproto/xrpc-server (0.0.0-spaces-alpha-20261022141228): PLC operations
and the DIDs they make, the DID document the directory serves, and a
service-auth JWT. `knotless.json` is a service-auth JWT knotless's own
client signs (`knotless::crypto::P256Key::sign_jwt`).
`space-vectors.json` is pds.js's (`test/fixtures/space-vectors.json`),
made by running `@atproto/space` (its `generatedFrom` names the build): the
LtHash set hash, a space repo's commit, its MAC and MAC header and its STAR
archive, a record's MAC, a KEM decapsulation and its want-MAC header, and
an HTTP signature, which the credentials' pull reads.
`space-meta.json` is from `space-meta.mjs`, run against `@atproto/space`
0.0.0-spaces-alpha-20261029171913, the first alpha with a space meta
archive (exportSpaceMeta's): two archives it writes and what it reads
back, and archives it refuses (its own tests' cases, built as they build
them), each with its refusal. That build's published dependency ranges
resolve `@atproto/lex-cbor` and `@atproto/lex-data` to a stray `0.0.0`
whose own dependencies are `workspace:*`, so install it with each of
`@atproto/{car,crypto,syntax,lex-cbor,lex-data}` pinned to the same
version in `overrides`.
`jose.json` is from `jose.mjs`, run against jose 5.10.0 (panva's, which
@atproto/oauth-provider checks DPoP proofs and client assertions with):
fixed P-256 and secp256k1 keys' public JWKs and RFC 7638 thumbprints, a
DPoP proof each signs, and RFC 9449's own example key and thumbprint.
`lexicon.json` is from `lexicon.mjs`, run against @atproto/lexicon 0.7.18
(installed on its own, in a directory of its own) over a checkout of
lexicon.js (github.com/bigmoves/lexicon.js), whose data, format and
end-to-end cases it reads: each case's lexicons, the def it is checked
against, the value, and the reference's verdict, with a few cases of this
crate's own. `tests/lexicon.rs` holds where `atproto::lexicon` departs
from it, and its module says why.