[package]
edition = "2024"
rust-version = "1.96.0"
name = "lib-q"
version = "0.0.5"
authors = [
"Enkom Tech",
"Nexlab-One",
]
build = "build.rs"
exclude = ["/target"]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Post-quantum cryptography library"
readme = "README.md"
license = "Apache-2.0"
repository = "https://github.com/Enkom-Tech/libQ"
[package.metadata.wasm-pack.profile.release]
wasm-opt = [
"-Oz",
"--enable-bulk-memory",
]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
all-algorithms = [
"ml-kem",
"ml-dsa",
"mldsa44",
"mldsa65",
"mldsa87",
"slh-dsa",
"cb-kem",
"hqc",
"fn-dsa",
"saturnin",
"duplex-sponge-aead",
"tweak-aead",
"romulus",
"zkp",
]
alloc = []
cb-kem = [
"dep:lib-q-cb-kem",
"lib-q-cb-kem/alloc",
"lib-q-cb-kem/zeroize",
"lib-q-cb-kem/cbkem348864",
"lib-q-cb-kem/getrandom",
"lib-q-cb-kem/rand",
]
default = ["std"]
dev = [
"experimental",
"tests",
]
duplex-sponge-aead = ["lib-q-aead/duplex-sponge-aead"]
experimental = []
fn-dsa = [
"dep:lib-q-fn-dsa",
"lib-q-sig/fn-dsa",
]
full = [
"std",
"wasm",
"rand",
"log",
"all-algorithms",
]
getrandom = ["lib-q-core/getrandom"]
hpke = [
"dep:lib-q-hpke",
"lib-q-hpke/std",
]
hpke-duplex-aead = [
"hpke",
"lib-q-hpke/duplex-sponge-aead",
]
hqc = [
"dep:lib-q-hqc",
"lib-q-hqc/hqc",
"lib-q-kem/hqc",
]
log = []
ml-dsa = ["lib-q-sig/ml-dsa"]
ml-kem = ["lib-q-kem/ml-kem"]
mldsa44 = ["lib-q-ml-dsa/mldsa44"]
mldsa65 = ["lib-q-ml-dsa/mldsa65"]
mldsa87 = ["lib-q-ml-dsa/mldsa87"]
no_std = []
pilot-insecure-prf-transcript = [
"ring-sig",
"prf",
"lib-q-ring-sig/pilot-insecure-prf-transcript",
]
prf = ["dep:lib-q-prf"]
rand = []
random = [
"dep:lib-q-random",
"lib-q-random/std",
]
random-custom-entropy = [
"dep:lib-q-random",
"lib-q-random/custom-entropy",
]
relaxed_entropy_validation = ["lib-q-core/relaxed_entropy_validation"]
ring-sig = [
"dep:lib-q-ring-sig",
"lib-q-ring-sig/std",
]
romulus = ["lib-q-aead/romulus"]
saturnin = ["lib-q-aead/saturnin"]
security-hardened = [
"zeroize",
"all-algorithms",
]
simd128 = ["lib-q-ml-dsa/simd128"]
simd256 = ["lib-q-ml-dsa/simd256"]
slh-dsa = [
"lib-q-sig/slh-dsa",
"lib-q-core/slh-dsa",
]
slh-dsa-std = [
"lib-q-sig/slh-dsa-std",
"lib-q-core/slh-dsa",
]
std = [
"alloc",
"lib-q-sig/std",
"lib-q-zkp/std",
]
tests = []
tweak-aead = ["lib-q-aead/tweak-aead"]
wasm = [
"alloc",
"wasm-bindgen",
"js-sys",
"web-sys",
"lib-q-hash/wasm_js",
"lib-q-core/wasm",
"lib-q-core/wasm_getrandom",
"lib-q-core/slh-dsa",
"lib-q-utils/wasm_js",
"lib-q-sig/wasm",
"lib-q-sig/slh-dsa-wasm",
"lib-q-zkp/wasm",
"lib-q-aead/wasm",
"lib-q-hpke?/wasm",
"lib-q-hqc?/wasm",
"lib-q-cb-kem?/wasm",
"lib-q-ring-sig?/wasm",
"lib-q-prf?/wasm",
"lib-q-random?/wasm",
]
wasm_js = [
"wasm",
"lib-q-hash/wasm_js",
"lib-q-core/wasm_getrandom",
"lib-q-utils/wasm_js",
]
zeroize = ["lib-q-hash/zeroize"]
zkp = ["lib-q-zkp/zkp"]
zkp-parallel = [
"zkp",
"lib-q-zkp/parallel",
]
zkp-plonky = [
"zkp",
"lib-q-zkp/plonky",
]
zkp-plonky-batch-stark = [
"zkp",
"lib-q-zkp/plonky-batch-stark",
]
zkp-plonky-keccak-air = [
"zkp",
"lib-q-zkp/plonky-keccak-air",
]
zkp-plonky-lookup = [
"zkp",
"lib-q-zkp/plonky-lookup",
]
zkp-plonky-uni-stark = [
"zkp",
"lib-q-zkp/plonky-uni-stark",
]
zkp-recursive-experimental = [
"zkp",
"lib-q-zkp/recursive-proofs-experimental",
]
[lib]
name = "libq"
crate-type = [
"cdylib",
"rlib",
]
path = "src/lib.rs"
[[test]]
name = "api_surface_tests"
path = "tests/api_surface_tests.rs"
required-features = ["all-algorithms"]
[[test]]
name = "hash_integration_tests"
path = "tests/hash_integration_tests.rs"
[[test]]
name = "lattice_zkp_wire_budget_tests"
path = "tests/lattice_zkp_wire_budget_tests.rs"
[[test]]
name = "privacy_protocol_integration_tests"
path = "tests/privacy_protocol_integration_tests.rs"
[[test]]
name = "wasm_integration"
path = "tests/wasm_integration.rs"
required-features = [
"wasm",
"ml-kem",
]
[[test]]
name = "zkp_plonky_umbrella_tests"
path = "tests/zkp_plonky_umbrella_tests.rs"
required-features = ["zkp-plonky"]
[dependencies.js-sys]
version = "0.3.99"
optional = true
[dependencies.lib-q-aead]
version = "0.0.5"
[dependencies.lib-q-cb-kem]
version = "0.0.5"
optional = true
[dependencies.lib-q-core]
version = "0.0.5"
features = ["rand"]
[dependencies.lib-q-fn-dsa]
version = "0.0.5"
optional = true
[dependencies.lib-q-hash]
version = "0.0.5"
[dependencies.lib-q-hpke]
version = "0.0.5"
optional = true
[dependencies.lib-q-hqc]
version = "0.0.5"
optional = true
default-features = false
[dependencies.lib-q-keccak]
version = "0.0.5"
default-features = false
[dependencies.lib-q-kem]
version = "0.0.5"
[dependencies.lib-q-ml-dsa]
version = "0.0.5"
[dependencies.lib-q-prf]
version = "0.0.5"
optional = true
[dependencies.lib-q-random]
version = "0.0.5"
optional = true
[dependencies.lib-q-ring-sig]
version = "0.0.5"
optional = true
default-features = false
[dependencies.lib-q-sig]
version = "0.0.5"
features = [
"alloc",
"ml-dsa",
"slh-dsa",
]
default-features = false
[dependencies.lib-q-utils]
version = "0.0.5"
[dependencies.lib-q-zkp]
version = "0.0.5"
features = [
"alloc",
"zkp",
]
default-features = false
[dependencies.wasm-bindgen]
version = "0.2.122"
optional = true
[dependencies.web-sys]
version = "0.3.99"
features = ["console"]
optional = true
[dev-dependencies.lib-q-lattice-zkp]
version = "0.0.5"
[dev-dependencies.lib-q-ml-kem]
version = "0.0.5"
features = [
"std",
"random",
]
default-features = false
[dev-dependencies.lib-q-random]
version = "0.0.5"
features = ["std"]
[dev-dependencies.lib-q-ring]
version = "0.0.5"
[dev-dependencies.lib-q-ring-sig]
version = "0.0.5"
[dev-dependencies.rand_core]
version = "0.10.1"
default-features = false
[dev-dependencies.wasm-bindgen-test]
version = "0.3.72"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
version = "0.8.2"
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.proptest]
version = "1.11.0"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
"cfg(hax)",
"cfg(eurydice)",
"cfg(doc_cfg)",
"cfg(simd128)",
"cfg(simd256)",
"cfg(aarch64)",
"cfg(x86_64)",
'cfg(feature, values("cb-kem"))',
'cfg(feature, values("zkp-plonky", "zkp-plonky-keccak-air", "zkp-plonky-lookup", "zkp-plonky-uni-stark", "zkp-plonky-batch-stark"))',
]