[package] authors = ["Kevin Lewi ", "François Garillot "] categories = ["no-std"] description = "An implementation of the OPAQUE password-authenticated key exchange protocol" edition = "2024" exclude = ["/src/tests/"] keywords = ["cryptography", "crypto", "opaque", "passwords", "authentication"] license = "Apache-2.0 OR MIT" name = "opaque-ke" readme = "README.md" repository = "https://github.com/facebook/opaque-ke" rust-version = "1.85" version = "3.0.0" [features] argon2 = ["dep:argon2"] curve25519 = ["dep:curve25519-dalek"] default = ["ristretto255", "serde"] ecdsa = ["dep:ecdsa", "dep:rfc6979"] ed25519 = ["dep:curve25519-dalek", "dep:ed25519-dalek"] ristretto255 = ["dep:curve25519-dalek", "voprf/ristretto255-ciphersuite"] serde = [ "dep:serde", "curve25519-dalek?/serde", "ecdsa?/serde", "ed25519-dalek?/serde", "generic-array/serde", "voprf/serde", "zeroize/serde", ] std = ["dep:getrandom"] [dependencies] argon2 = { version = "0.5", default-features = false, features = [ "alloc", ], optional = true } curve25519-dalek = { version = "4", default-features = false, features = [ "zeroize", ], optional = true } derive-where = { version = "1.4", features = ["zeroize-on-drop"] } digest = "0.10" displaydoc = { version = "0.2", default-features = false } ecdsa = { version = "0.16", default-features = false, features = [ "arithmetic", "hazmat", ], optional = true } ed25519-dalek = { version = "2", default-features = false, features = [ "digest", "hazmat", ], optional = true } elliptic-curve = { version = "0.13", features = ["hash2curve", "sec1"] } generic-array = "0.14" hkdf = "0.12" hmac = "0.12" rand = { version = "0.8", default-features = false } rfc6979 = { version = "0.4", optional = true } serde = { version = "1", default-features = false, features = [ "derive", ], optional = true } subtle = { version = "2.6", default-features = false } voprf = { version = "0.5", default-features = false, features = ["danger"] } zeroize = { version = "1.8", features = ["zeroize_derive"] } [target.'cfg(target_arch = "wasm32")'.dependencies] getrandom = { version = "0.2", features = ["js"], optional = true } [dev-dependencies] anyhow = "1" bincode = "1" chacha20poly1305 = "0.10" criterion = "0.5" cryptoki = "0.9" elliptic-curve = { version = "0.13", features = ["alloc", "pkcs8"] } hex = "0.4" p256 = { version = "0.13", default-features = false, features = [ "ecdsa", "hash2curve", "pkcs8", "voprf", ] } p384 = { version = "0.13", default-features = false, features = [ "hash2curve", "pkcs8", "voprf", ] } p521 = { version = "0.13.3", default-features = false, features = [ "hash2curve", "pkcs8", "voprf", ] } paste = "1" proptest = "1" rand = "0.8" regex = "1" sha2 = { version = "0.10", default-features = false } thiserror = "2" # MSRV rustyline = "15" scrypt = "0.11" serde_json = "1" [[bench]] harness = false name = "opaque" [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] targets = [] [[example]] name = "simple_login" required-features = ["argon2"] [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(test_hsm)'] }