libmacaroon 0.1.0

Macaroons (bearer credentials with contextual caveats) in pure Rust, with first-party and third-party caveats, WASM support, and cross-language interop.
Documentation
[package]
name = "libmacaroon"
version = "0.1.0"
edition = "2021"
rust-version = "1.71"
authors = [
    "Connor Hindley <conn.hindley@gmail.com>",
    "Jack Lund <jackl@geekheads.net>",
    "macaroon-rs Contributors",
]
description = "Macaroons (bearer credentials with contextual caveats) in pure Rust, with first-party and third-party caveats, WASM support, and cross-language interop."
documentation = "https://docs.rs/libmacaroon"
repository = "https://github.com/connyay/libmacaroon"
homepage = "https://github.com/connyay/libmacaroon"
readme = "README.md"
keywords = ["macaroon", "authorization", "credentials", "bearer-token"]
categories = ["authentication", "cryptography"]
license = "MIT"

[features]
default = []
wasm = ["getrandom/js"]

[dependencies]
log = "0.4"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
base64 = "0.22"

# Crypto (RustCrypto ecosystem — pure Rust, WASM-compatible)
hmac = "0.12"
sha2 = "0.10"
crypto_secretbox = { version = "0.1", default-features = false, features = ["alloc", "salsa20"] }
getrandom = "0.2"
subtle = "2.6"
zeroize = { version = "1.8", features = ["derive"] }

# proptest pulls in rand 0.9 -> getrandom 0.3, which needs a different
# wasm32 configuration than the getrandom 0.2 we use directly. Cargo
# includes dev-dependencies when building examples, so the WASM example
# build would fail on that mismatch. The property tests don't run on
# wasm32 targets anyway — scope them to everything else.
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
proptest = "1"