mtcs 0.3.1

Offline verification of Merkle Tree Certificates (draft-ietf-plants-merkle-tree-certs)
Documentation
[package]
name = "mtcs"
version = "0.3.1"
edition = "2024"
rust-version = "1.88"
license = "Apache-2.0"
description = "Offline verification of Merkle Tree Certificates (draft-ietf-plants-merkle-tree-certs)"
homepage = "https://github.com/canokeys/mtcs"
repository = "https://github.com/canokeys/mtcs"
documentation = "https://docs.rs/mtcs"
keywords = ["mtc", "merkle-tree", "certificates", "transparency", "post-quantum"]
categories = ["cryptography", "parser-implementations"]

[features]
default = ["verify"]
# Wire formats, IDs, tree math and entry hashing only; no cryptographic backends.
# `verify` adds cosignature verification and the relying-party pipeline.
verify = [
    "dep:p256",
    "dep:p384",
    "dep:ed25519-dalek",
    "dep:ml-dsa",
    "dep:signature",
]

# The verify stack uses the current RustCrypto generation, which transitively
# requires rustc 1.88 (sha2 0.11, ctutils 0.4.3): this sets the crate's MSRV.
# Do not upgrade these without checking MSRV CI.
[dependencies]
sha2 = { version = "0.11.1", default-features = false }
thiserror = "2.0.21"
p256 = { version = "0.14.0", default-features = false, features = ["ecdsa", "alloc"], optional = true }
p384 = { version = "0.14.0", default-features = false, features = ["ecdsa", "alloc"], optional = true }
ed25519-dalek = { version = "3.0.0", default-features = false, features = ["alloc"], optional = true }
ml-dsa = { version = "0.1.1", default-features = false, features = ["alloc"], optional = true }
signature = { version = "3", default-features = false, optional = true }

[dev-dependencies]
base64 = "0.23.1"
hex = "0.4.3"
serde = { version = "1.0.229", features = ["derive"] }
serde_json = "1.0.154"

[[test]]
name = "verification"
required-features = ["verify"]

[[example]]
name = "verify"
required-features = ["verify"]

[package.metadata.docs.rs]
all-features = true