[package]
name = "dleq"
version = "0.3.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"

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

[dependencies]
rustversion = "1"

thiserror = { version = "1", 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", default-features = false }

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

multiexp = { path = "../multiexp", version = "0.3", 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 = []
serialize = ["std"]

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

# 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
default = ["secure_capacity_difference"]