atproto
atproto's primitives in Rust, kept small and free of I/O: DRISL (DAG-CBOR) and CIDs, TIDs and identifier syntax, secp256k1 and P-256 keys, the Merkle search tree, CAR files, signed commits, PLC operations, service auth, JWKs and JWTs for OAuth's DPoP proofs and client assertions, lexicon validation, and the spaces alpha's set hash, commits and tokens.
Each part is checked against atproto's interop test vectors
(tests/interop) and against what the reference implementations make of
fixed inputs (tests/reference, whose README says how each was made).
Using it
It is published to this repository's Cargo registry. Name the registry in
.cargo/config.toml:
[registries.atproto]
index = "sparse+https://knotless.dev/cargo/did:plc:bcgltzqazw5tb6k2g3ttenbj/3mzr5vldibtui/"
and depend on it:
atproto = { version = "0.1", registry = "atproto" }
Reading the registry needs no login.
Working on it
cargo test runs every test. The test check holds every line and
function of src/ under test (cargo llvm-cov --fail-under-lines 100 --fail-under-functions 100). A version is published with cargo publish --registry atproto, by the repository's owner.
License
MIT or Apache-2.0, at your option. The interop vectors are CC0
(tests/interop/LICENSE-CC0).
