# 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.