~ knotless Search/
↑↓ move↵ open⇧↵ all results

chadtmiller.com/atproto

atproto's primitives in Rust, small and free of I/O

0
0
README.md

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.