[package]
name = "tor-llcrypto"
version = "0.27.0"
authors = ["The Tor Project, Inc.", "Nick Mathewson <nickm@torproject.org>"]
edition = "2021"
rust-version = "1.77"
license = "MIT OR Apache-2.0"
homepage = "https://gitlab.torproject.org/tpo/core/arti/-/wikis/home"
description = "Low level cryptography wrappers used by Tor"
keywords = ["tor", "arti", "cryptography"]
categories = ["cryptography"]
repository = "https://gitlab.torproject.org/tpo/core/arti.git/"

[features]
default = []
memquota-memcost = ["tor-memquota", "derive-deftly"]
full = ["memquota-memcost", "safelog/full", "tor-memquota?/full"]

with-openssl = ["openssl", "typenum", "cipher", "__is_nonadditive"]
with-sha1-asm = ["sha1/asm", "__is_nonadditive"]

experimental = ["relay", "hsv3-client", "hsv3-service", "keymgr"]

# Enable support for cryptography needed to be a Tor relay.
relay = ["cvt-x25519", "__is_experimental"]
# Enable support for cryptography needed to be an onion service v3 client.
hsv3-client = ["__is_experimental"]
# Enable support for cryptography needed to be an onion service v3 service.
hsv3-service = ["__is_experimental"]
# Enable support for cryptography needed for key management.
keymgr = ["cvt-x25519", "__is_experimental"]
# Enable extra support for converting keys to and from x25519
cvt-x25519 = []

__is_nonadditive = []
__is_experimental = []

[dependencies]
aes = { version = "0.8", features = ["zeroize"] }
base64ct = "1.5.1"
cipher = { version = "0.4.3", optional = true, features = ["zeroize"] }
ctr = { version = "0.9", features = ["zeroize"] }
curve25519-dalek = "4.1"
der-parser = { version = "9", features = ["serialize"] }
derive-deftly = { version = "0.14.2", optional = true }
derive_more = { version = "1.0.0", features = ["full"] }
digest = "0.10.0"
ed25519-dalek = { version = "2.1", features = ["batch", "hazmat"] }
educe = "0.4.6"
hex = "0.4"
openssl = { version = "0.10.48", optional = true }
rand_core = "0.6.2"
rsa = "0.9.0"
safelog = { version = "0.4.2", path = "../safelog" }
serde = "1.0.103"
sha1 = "0.10.0"
sha2 = "0.10.0"
sha3 = "0.10.6"
signature = "2"
subtle = "2"
thiserror = "2"
tor-memquota = { version = "0.27.0", path = "../tor-memquota", default-features = false, optional = true }
typenum = { version = "1.15.0", optional = true }
visibility = "0.1.0"
x25519-dalek = { version = "2.0.0", features = ["static_secrets"] }
zeroize = "1"

[dev-dependencies]
cipher = "0.4.1"
hex-literal = "0.4"
rand = "0.8"
serde_test = "1.0.124"
tor-basic-utils = { path = "../tor-basic-utils", version = "0.27.0" }

[target.wasm32-unknown-unknown.dependencies]
getrandom = { version = "0.2.3", features = ["js"] }
[package.metadata.docs.rs]
all-features = true
