Rust CI / cargo fmt (push) Successful in 3s
Rust CI / cargo clippy (push) Successful in 1m25s
Rust CI / test (1.90.0 / no backend / no frontend) (push) Successful in 2m28s
Rust CI / test (stable / no backend / no frontend) (push) Successful in 2m27s
Rust CI / test (1.90.0 / no backend / --features argon2) (push) Successful in 2m32s
Rust CI / test (stable / no backend / --features serde) (push) Successful in 2m53s
Rust CI / test (stable / no backend / --features argon2) (push) Successful in 2m34s
Rust CI / test (1.90.0 / no backend / --features serde) (push) Successful in 2m51s
Rust CI / test (stable / --features curve25519 / no frontend) (push) Successful in 2m28s
Rust CI / test (1.90.0 / --features curve25519 / --features serde) (push) Successful in 2m55s
Rust CI / test (1.90.0 / --features curve25519 / no frontend) (push) Successful in 2m27s
Rust CI / test (1.90.0 / --features curve25519 / --features argon2) (push) Successful in 2m37s
Rust CI / test (stable / --features curve25519 / --features argon2) (push) Successful in 2m36s
Rust CI / test (1.90.0 / --features ecdsa / no frontend) (push) Successful in 2m50s
Rust CI / test (1.90.0 / --features ecdsa / --features argon2) (push) Successful in 2m56s
Rust CI / test (stable / --features curve25519 / --features serde) (push) Successful in 2m56s
Rust CI / test (stable / --features ecdsa / no frontend) (push) Successful in 2m48s
Rust CI / test (stable / --features ecdsa / --features serde) (push) Successful in 3m16s
Rust CI / test (stable / --features ecdsa / --features argon2) (push) Successful in 2m56s
Rust CI / test (1.90.0 / --features ecdsa / --features serde) (push) Successful in 3m17s
Rust CI / test (1.90.0 / --features ed25519 / no frontend) (push) Successful in 2m50s
Rust CI / test (1.90.0 / --features ed25519 / --features argon2) (push) Successful in 2m57s
Rust CI / test (stable / --features ed25519 / --features argon2) (push) Successful in 3m0s
Rust CI / test (stable / --features ed25519 / no frontend) (push) Successful in 2m52s
Rust CI / test (1.90.0 / --features ed25519 / --features serde) (push) Successful in 3m20s
Rust CI / test (1.90.0 / --features ristretto255 / no frontend) (push) Successful in 3m0s
Rust CI / test (stable / --features ed25519 / --features serde) (push) Successful in 3m19s
Rust CI / test (stable / --features ristretto255 / --features argon2) (push) Successful in 3m10s
Rust CI / test (stable / --features ristretto255 / no frontend) (push) Successful in 3m2s
Rust CI / test (1.90.0 / --features ristretto255 / --features argon2) (push) Successful in 3m4s
Rust CI / test (1.90.0 / --features ristretto255 / --features serde) (push) Successful in 3m30s
Rust CI / test (stable / --features ristretto255 / --features serde) (push) Successful in 3m31s
Rust CI / test (stable / --features ristretto255,curve25519,ecdsa,ed25519 / no frontend) (push) Successful in 5m7s
Rust CI / test (1.90.0 / --features ristretto255,curve25519,ecdsa,ed25519 / no frontend) (push) Successful in 5m19s
Rust CI / test (1.90.0 / --features ristretto255,curve25519,ecdsa,ed25519 / --features argon2) (push) Successful in 6m26s
Rust CI / test (stable / --features ristretto255,curve25519,ecdsa,ed25519 / --features argon2) (push) Failing after 10m23s
Rust CI / test (1.90.0 / --features ristretto255,curve25519,ecdsa,ed25519 / --features serde) (push) Failing after 19m30s
Rust CI / test (stable / --features ristretto255,curve25519,ecdsa,ed25519 / --features serde) (push) Failing after 51s
Rust CI / test (stable / --features ristretto255,kem / no frontend) (push) Successful in 3m49s
Rust CI / test (1.90.0 / --features ristretto255,kem / no frontend) (push) Failing after 1m7s
Rust CI / test (stable / --features ristretto255,kem / --features argon2) (push) Successful in 3m55s
Rust CI / test (1.90.0 / --features ristretto255,kem / --features argon2) (push) Successful in 3m57s
Rust CI / test (1.90.0 / --features ristretto255,kem / --features serde) (push) Successful in 4m21s
Rust CI / test (stable / --features ristretto255,kem / --features serde) (push) Successful in 4m23s
Rust CI / test simple_login example (push) Successful in 19s
Rust CI / test digital_locker example (push) Successful in 17s
Rust CI / cargo bench compilation () (push) Successful in 1m41s
Rust CI / cargo bench compilation (--features ristretto255) (push) Successful in 1m52s
Rust CI / cargo bench compilation (--features ristretto255,kem) (push) Successful in 2m26s
Rust CI / no-std (wasm32-unknown-unknown / no backend) (push) Successful in 27s
Rust CI / no-std (thumbv6m-none-eabi / ecdsa) (push) Successful in 27s
Rust CI / no-std (wasm32-unknown-unknown / ecdsa) (push) Successful in 27s
Rust CI / no-std (wasm32-unknown-unknown / ristretto255,curve25519,ecdsa,ed25519) (push) Successful in 17s
Rust CI / no-std (thumbv6m-none-eabi / ristretto255,curve25519,ecdsa,ed25519) (push) Successful in 18s
Rust CI / cargo audit (push) Successful in 5s
Rust CI / no-std (thumbv6m-none-eabi / no backend) (push) Successful in 27s
Rust CI / no-std (thumbv6m-none-eabi / curve25519) (push) Successful in 27s
Rust CI / no-std (wasm32-unknown-unknown / curve25519) (push) Successful in 28s
Rust CI / no-std (wasm32-unknown-unknown / ed25519) (push) Successful in 27s
Rust CI / no-std (thumbv6m-none-eabi / ed25519) (push) Successful in 28s
Rust CI / no-std (thumbv6m-none-eabi / ristretto255) (push) Successful in 27s
Rust CI / no-std (wasm32-unknown-unknown / ristretto255) (push) Successful in 27s
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [curve25519-dalek](https://github.com/dalek-cryptography/curve25519-dalek) ([source](https://github.com/dalek-cryptography/curve25519-dalek/tree/HEAD/curve25519-dalek)) | dependencies | patch | `5.0.0-rc.1` → `5.0.0` | | [ed25519-dalek](https://github.com/dalek-cryptography/curve25519-dalek) ([source](https://github.com/dalek-cryptography/curve25519-dalek/tree/HEAD/ed25519-dalek)) | dependencies | patch | `3.0.0-rc.1` → `3.0.0` | | [p256](https://github.com/RustCrypto/elliptic-curves/tree/master/p256) ([source](https://github.com/RustCrypto/elliptic-curves)) | dev-dependencies | patch | `0.14.0-rc.15` → `0.14.0` | | [p384](https://github.com/RustCrypto/elliptic-curves/tree/master/p384) ([source](https://github.com/RustCrypto/elliptic-curves)) | dev-dependencies | patch | `0.14.0-rc.15` → `0.14.0` | --- ### Release Notes <details> <summary>dalek-cryptography/curve25519-dalek (curve25519-dalek)</summary> ### [`v5.0.0`](https://github.com/dalek-cryptography/curve25519-dalek/blob/HEAD/curve25519-dalek/CHANGELOG.md#500---2026-07-06) ##### Breaking Changes - Update edition to 2024 - Update the MSRV from 1.60 to 1.85 - Remove `group-bits` feature due to soundness issues with underlying trait ([#​909](https://github.com/dalek-cryptography/curve25519-dalek/pull/909)) - Re-export `rand_core` ([#​908](https://github.com/dalek-cryptography/curve25519-dalek/pull/908)) - Rename `Scalar::batch_invert` -> `Scalar::invert_batch` for consistency. Also make it no-alloc. ([#​789](https://github.com/dalek-cryptography/curve25519-dalek/pull/789)) - Remove deprecated functions `FieldElement::as_bytes()` and `EdwardsPoint::nonspec_map_to_curve()` ([#​778](https://github.com/dalek-cryptography/curve25519-dalek/pull/778)) - Upgrade `rand_core` dependency to v0.10.0 - Upgrade `digest` and `sha2` deps ##### Other Changes - Perf: Use maximum available NAF window size in `VartimePrecomputedStraus` ([#​848](https://github.com/dalek-cryptography/curve25519-dalek/pull/848)) - Perf: Skip checking 8 candidate points in `RistrettoPoint::lizard_decode` ([#​882](https://github.com/dalek-cryptography/curve25519-dalek/pull/882)) - Add Lizard bytes-to-point injection for Ristretto. Gated under `lizard` feature. ([#​826](https://github.com/dalek-cryptography/curve25519-dalek/pull/826)) - Add an allocating batch inversion called `Scalar::invert_batch_alloc` ([#​789](https://github.com/dalek-cryptography/curve25519-dalek/pull/789)) - Add `Scalar::div_by_2` ([#​805](https://github.com/dalek-cryptography/curve25519-dalek/pull/805)) - Add `EdwardsPoint::hash_to_curve` ([#​786](https://github.com/dalek-cryptography/curve25519-dalek/pull/786)) - Undeprecate `Scalar::from_bits()` ([#​780](https://github.com/dalek-cryptography/curve25519-dalek/pull/780)) - Use constant-time equality testing for compressed Ristretto and Edwards points, rather than autoderived equality </details> <details> <summary>dalek-cryptography/curve25519-dalek (ed25519-dalek)</summary> ### [`v3.0.0`](https://github.com/dalek-cryptography/curve25519-dalek/blob/HEAD/ed25519-dalek/CHANGELOG.md#300---2026-07-06) ##### Breaking Changes - Update edition to 2024 - Update the MSRV from 1.60 to 1.85 - Remove `std` feature now that `error::Error` is in `core` - Make signing and verifying keys use `pkcs8::spki::SignatureAlgorithmIdentifier` instead of `DynSignatureAlgorithmIdentifier` ([#​779](https://github.com/dalek-cryptography/curve25519-dalek/pull/779)) - Upgrade `ed25519` dependency to v3.0.0 - Upgrade `signature` dependency to v3.0.0 - Upgrade `sha2` and `sha3` dependencies to v0.11 - Upgrade `getrandom` dependency to v0.4 - Upgrade `chacha20` dependency to v0.10 - Upgrade `rand_core` dependency to v0.10.0 ##### Other Changes - Re-export `rand_core` ([#​908](https://github.com/dalek-cryptography/curve25519-dalek/pull/908)) - Add allocation-free `EdwardsPoint::compress_batch` ([#​832](https://github.com/dalek-cryptography/curve25519-dalek/pull/832)) - Add `strobe-rs` dependency and delete vendored STROBE impl ([#​895](https://github.com/dalek-cryptography/curve25519-dalek/pull/895)) - Impl `MultipartSigner` and `MultipartVerifier` for `SigningKey` and `VerifyingKey` ([#​764](https://github.com/dalek-cryptography/curve25519-dalek/pull/764)) - Impl `KeySizeUser`, `TryKeyInit`, and `Generate` for `SigningKey`. Also impl `KeySizeUser` for `VerifyingKey` [#​733](https://github.com/dalek-cryptography/curve25519-dalek/pull/733) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTIuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI1Mi4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=--> --------- Co-authored-by: UneBaguette <[email protected]> Reviewed-on: #8 Co-authored-by: Renovate Bot <[email protected]> Co-committed-by: Renovate Bot <[email protected]>
131 lines
3.7 KiB
TOML
131 lines
3.7 KiB
TOML
[package]
|
|
authors = [
|
|
"VexaHub Developers",
|
|
"Kevin Lewi <[email protected]>",
|
|
"François Garillot <[email protected]>",
|
|
]
|
|
categories = ["no-std", "cryptography"]
|
|
description = "An implementation of the OPAQUE password-authenticated key exchange protocol"
|
|
edition = "2024"
|
|
exclude = ["/src/tests/"]
|
|
keywords = ["cryptography", "opaque", "passwords", "authentication", "pake"]
|
|
license = "Apache-2.0 OR MIT"
|
|
name = "opaque-vx"
|
|
readme = "README.md"
|
|
repository = "https://github.com/vexahub/opaque-vx"
|
|
rust-version = "1.90"
|
|
version = "1.0.0-rc.0"
|
|
|
|
[features]
|
|
argon2 = ["dep:argon2"]
|
|
curve25519 = ["dep:curve25519-dalek"]
|
|
default = ["ristretto255", "serde"]
|
|
ecdsa = ["dep:ecdsa"]
|
|
ed25519 = ["dep:curve25519-dalek", "dep:ed25519-dalek"]
|
|
kem = ["dep:ml-kem"]
|
|
ristretto255 = ["dep:curve25519-dalek", "voprf/ristretto255-ciphersuite"]
|
|
serde = [
|
|
"dep:serde",
|
|
"curve25519-dalek?/serde",
|
|
"ecdsa?/serde",
|
|
"ed25519-dalek?/serde",
|
|
"elliptic-curve/serde",
|
|
"generic-array/serde",
|
|
"hybrid-array/serde",
|
|
"voprf/serde",
|
|
"zeroize/serde",
|
|
]
|
|
std = ["dep:getrandom", "rand/std"]
|
|
|
|
[dependencies]
|
|
argon2 = { version = "0.6.0-rc.8", default-features = false, features = [
|
|
"zeroize",
|
|
"alloc",
|
|
], optional = true }
|
|
curve25519-dalek = { version = "5", default-features = false, features = [
|
|
"zeroize",
|
|
], optional = true }
|
|
derive-where = { version = "1.6", features = ["zeroize-on-drop"] }
|
|
digest = { version = "0.11", features = ["zeroize"] }
|
|
displaydoc = { version = "0.2", default-features = false }
|
|
ecdsa = { version = "0.17", default-features = false, features = [
|
|
"algorithm",
|
|
], optional = true }
|
|
ed25519-dalek = { version = "3", default-features = false, features = [
|
|
"zeroize",
|
|
"digest",
|
|
"hazmat",
|
|
], optional = true }
|
|
elliptic-curve = { version = "0.14", features = ["sec1"] }
|
|
generic-array = { version = "1.4", features = ["hybrid-array-0_4", "zeroize"] }
|
|
hybrid-array = { version = "0.4", features = ["extra-sizes", "zeroize"] }
|
|
hkdf = "0.13"
|
|
hmac = { version = "0.13", features = ["zeroize"] }
|
|
ml-kem = { version = "0.3", default-features = false, features = [
|
|
"zeroize",
|
|
], optional = true }
|
|
rand = { version = "0.10", default-features = false }
|
|
serde = { version = "1", default-features = false, features = [
|
|
"derive",
|
|
], optional = true }
|
|
subtle = { version = "2.6", default-features = false }
|
|
voprf = { package = "voprf-vx", version = "1.0.0-rc.1", default-features = false, features = [
|
|
"danger",
|
|
] }
|
|
zeroize = { version = "1.9", features = ["zeroize_derive"] }
|
|
|
|
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
|
getrandom = { version = "0.4", features = ["wasm_js"], optional = true }
|
|
|
|
[dev-dependencies]
|
|
anyhow = "1"
|
|
bincode-next = { version = "3", features = ["serde", "alloc"] }
|
|
chacha20poly1305 = { version = "0.11", features = ["zeroize"] }
|
|
criterion = "0.8"
|
|
cryptoki = "0.12"
|
|
elliptic-curve = { version = "0.14", features = ["alloc", "pkcs8"] }
|
|
hex = "0.4"
|
|
p256 = { version = "0.14", default-features = false, features = [
|
|
"ecdsa",
|
|
"hash2curve",
|
|
"pkcs8",
|
|
"oprf",
|
|
] }
|
|
p384 = { version = "0.14", default-features = false, features = [
|
|
"hash2curve",
|
|
"pkcs8",
|
|
"oprf",
|
|
] }
|
|
p521 = { version = "0.14.0-rc.15", default-features = false, features = [
|
|
"hash2curve",
|
|
"pkcs8",
|
|
"oprf",
|
|
] }
|
|
pastey = "0.2"
|
|
proptest = "1"
|
|
rand = "0.10"
|
|
rand_chacha = "0.10"
|
|
regex = "1"
|
|
sha2 = { version = "0.11", default-features = false, features = ["zeroize"] }
|
|
thiserror = "2"
|
|
# MSRV
|
|
rustyline = "18"
|
|
scrypt = "0.12"
|
|
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)'] }
|