[package]
name = "dleq"
version = "0.4.1"
description = "Implementation of single and cross-curve Discrete Log Equality proofs"
license = "MIT"
repository = "https://github.com/serai-dex/serai/tree/develop/crypto/dleq"
authors = ["Luke Parker <lukeparker5132@gmail.com>"]
edition = "2021"
rust-version = "1.81"

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

[lints]
workspace = true

[dependencies]
rustversion = "1"

thiserror = { version = "2", default-features = false, optional = true }
rand_core = { version = "0.6", default-features = false }

zeroize = { version = "^1.5", default-features = false, features = ["zeroize_derive"] }

digest = { version = "0.10", default-features = false }
transcript = { package = "flexible-transcript", path = "../transcript", version = "^0.3.2", default-features = false }

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

multiexp = { path = "../multiexp", version = "0.4", default-features = false, features = ["batch"], optional = true }

[dev-dependencies]
hex-literal = "0.4"

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

blake2 = "0.10"

k256 = { version = "^0.13.1", default-features = false, features = ["std", "arithmetic", "bits"] }
dalek-ff-group = { path = "../dalek-ff-group" }

transcript = { package = "flexible-transcript", path = "../transcript", features = ["recommended"] }

[features]
std = ["thiserror?/std", "rand_core/std", "zeroize/std", "digest/std", "transcript/std", "ff/std", "multiexp?/std"]
serialize = ["std"]

# Needed for cross-group DLEqs
secure_capacity_difference = []
experimental = ["std", "thiserror", "multiexp"]

default = [
  "std",
  # Only applies to experimental, yet is default to ensure security
  # experimental doesn't mandate it itself in case two curves with extreme
  # capacity differences are desired to be used together, in which case the user
  # must specify experimental without default features
  "secure_capacity_difference"
]
