[package]
name = "ciphersuite"
version = "0.3.0"
description = "Ciphersuites built around ff/group"
license = "MIT"
repository = "https://github.com/serai-dex/serai/tree/develop/crypto/ciphersuite"
authors = ["Luke Parker <lukeparker5132@gmail.com>"]
keywords = ["ciphersuite", "ff", "group"]
edition = "2021"
rust-version = "1.70"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[dependencies]
std-shims = { path = "../../common/std-shims", version = "0.1", default-features = false, optional = true }

rand_core = { version = "0.6", default-features = false }

zeroize = { version = "^1.5", default-features = false }
subtle = { version = "^2.4", default-features = false }

digest = { version = "0.10", default-features = false }
transcript = { package = "flexible-transcript", path = "../transcript", version = "0.3", default-features = false }
sha2 = { version = "0.10", default-features = false, optional = true }
sha3 = { version = "0.10", default-features = false, optional = true }

ff = { version = "0.13", default-features = false, features = ["bits"] }
group = { version = "0.13", default-features = false }

dalek-ff-group = { path = "../dalek-ff-group", version = "0.3", default-features = false, optional = true }

elliptic-curve = { version = "0.13", default-features = false, features = ["hash2curve"], optional = true }
p256 = { version = "^0.13.1", default-features = false, features = ["arithmetic", "bits", "hash2curve"], optional = true }
k256 = { version = "^0.13.1", default-features = false, features = ["arithmetic", "bits", "hash2curve"], optional = true }

minimal-ed448 = { path = "../ed448", version = "0.3", default-features = false, optional = true }

[dev-dependencies]
hex = "0.4"

rand_core = { version = "0.6", features = ["std"] }

ff-group-tests = { version = "0.13", path = "../ff-group-tests" }

[features]
alloc = ["std-shims"]
std = ["zeroize/std", "std-shims/std"]

dalek = ["sha2", "dalek-ff-group"]
ed25519 = ["dalek"]
ristretto = ["dalek"]

kp256 = ["sha2", "elliptic-curve"]
p256 = ["kp256", "dep:p256"]
secp256k1 = ["kp256", "k256"]

ed448 = ["sha3", "minimal-ed448"]

default = ["std"]
