Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
300 changes: 277 additions & 23 deletions Cargo.lock

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions aucpace/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,24 @@ edition = "2024"
rust-version = "1.85"

[dependencies]
curve25519-dalek = { version = "5.0.0-pre.4", default-features = false, features = ["digest", "rand_core"] }
password-hash = { version = "0.6.0-rc.8", default-features = false, features = ["phc", "rand_core"] }
rand_core = { version = "0.10.0-rc-5", default-features = false }
curve25519-dalek = { version = "5.0.0-pre.5", default-features = false, features = ["digest", "rand_core"] }
password-hash = { version = "0.6.0-rc.11", default-features = false, features = ["phc", "rand_core"] }
rand_core = { version = "0.10.0-rc-6", default-features = false }
subtle = { version = "2.4", default-features = false }

# optional dependencies
getrandom = { version = "0.4.0-rc.0", optional = true, features = ["sys_rng"] }
getrandom = { version = "0.4.0-rc.1", optional = true, features = ["sys_rng"] }
serde = { version = "1.0.184", default-features = false, optional = true, features = ["derive"] }
serde-byte-array = { version = "0.1", optional = true }
scrypt = { version = "0.12.0-rc.9", default-features = false, optional = true, features = ["phc"] }
sha2 = { version = "0.11.0-rc.3", default-features = false, optional = true }
sha2 = { version = "0.11.0-rc.4", default-features = false, optional = true }

[dev-dependencies]
curve25519-dalek = { version = "5.0.0-pre.4", features = ["digest", "rand_core"] }
password-hash = { version = "0.6.0-rc.8", features = ["rand_core"] }
curve25519-dalek = { version = "5.0.0-pre.5", features = ["digest", "rand_core"] }
password-hash = { version = "0.6.0-rc.11", features = ["rand_core"] }
postcard = { version = "1", features = ["use-std"] }
scrypt = { version = "0.12.0-rc.9", features = ["phc"] }
sha2 = "0.11.0-rc.3"
sha2 = "0.11.0-rc.4"

[features]
default = ["getrandom", "scrypt", "sha2"]
Expand Down
7 changes: 3 additions & 4 deletions aucpace/examples/key_agreement.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
use aucpace::{
Client, ClientMessage, Database, Result, Server, ServerMessage, SysRng, rand_core::TryRngCore,
};
use aucpace::{Client, ClientMessage, Database, Result, Server, ServerMessage, SysRng};
use curve25519_dalek::ristretto::RistrettoPoint;
use password_hash::phc::{ParamsString, SaltString};
use rand_core::UnwrapErr;
use scrypt::{Params, Scrypt};
use sha2::{Sha512, digest::Output};
use std::{
Expand Down Expand Up @@ -40,7 +39,7 @@ fn main() -> Result<()> {
let server_socket: SocketAddr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 25519);

// random number generator from OS
let mut rng = SysRng.unwrap_err();
let mut rng = UnwrapErr(SysRng);

// register the user in the database
let mut base_client = Client::new(rng);
Expand Down
7 changes: 3 additions & 4 deletions aucpace/examples/key_agreement_no_std.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
// use println and Instant only from std
extern crate std;

use aucpace::{
Client, ClientMessage, Database, Result, Server, ServerMessage, SysRng, rand_core::TryRngCore,
};
use aucpace::{Client, ClientMessage, Database, Result, Server, ServerMessage, SysRng};
use curve25519_dalek::ristretto::RistrettoPoint;
use password_hash::phc::{ParamsString, SaltString};
use rand_core::UnwrapErr;
use scrypt::{Params, Scrypt};
use std::{println, time::Instant};

Expand All @@ -31,7 +30,7 @@ fn main() -> Result<()> {
const PASSWORD: &[u8] = b"4d1rA_aND-Gr4Y_aRe_tH3-b3sT <3";

// get system random number generator
let mut rng = SysRng.unwrap_err();
let mut rng = UnwrapErr(SysRng);

// register the user in the database
let mut base_server = Server::new(rng);
Expand Down
4 changes: 2 additions & 2 deletions aucpace/examples/key_agreement_partial_aug.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
use aucpace::rand_core::TryRngCore;
use aucpace::{
Client, ClientMessage, Database, Error, PartialAugDatabase, Result, Server, ServerMessage,
SysRng,
};
use curve25519_dalek::{ristretto::RistrettoPoint, scalar::Scalar};
use password_hash::phc::{ParamsString, SaltString};
use rand_core::UnwrapErr;
use scrypt::{Params, Scrypt};
use sha2::{Sha512, digest::Output};
use std::{
Expand Down Expand Up @@ -42,7 +42,7 @@ fn main() -> Result<()> {
let server_socket: SocketAddr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 25519);

// random number generator from OS
let mut rng = SysRng.unwrap_err();
let mut rng = UnwrapErr(SysRng);

// register the user in the database
let mut base_client = Client::new(rng);
Expand Down
8 changes: 3 additions & 5 deletions aucpace/examples/key_agreement_strong.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
use aucpace::{
Client, ClientMessage, Result, Server, ServerMessage, StrongDatabase, SysRng,
rand_core::TryRngCore,
};
use aucpace::{Client, ClientMessage, Result, Server, ServerMessage, StrongDatabase, SysRng};
use curve25519_dalek::{ristretto::RistrettoPoint, scalar::Scalar};
use password_hash::phc::ParamsString;
use rand_core::UnwrapErr;
use scrypt::{Params, Scrypt};
use sha2::{Sha512, digest::Output};
use std::{
Expand Down Expand Up @@ -41,7 +39,7 @@ fn main() -> Result<()> {
let server_socket: SocketAddr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 25519);

// random number generator from OS
let mut rng = SysRng.unwrap_err();
let mut rng = UnwrapErr(SysRng);

// register the user in the database
let mut base_client = Client::new(rng);
Expand Down
8 changes: 3 additions & 5 deletions aucpace/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,10 @@ use subtle::ConstantTimeEq;

#[cfg(feature = "strong_aucpace")]
use crate::utils::H1;

#[cfg(feature = "alloc")]
extern crate alloc;

#[cfg(feature = "serde")]
use crate::utils::{serde_paramsstring, serde_saltstring};

#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};

Expand Down Expand Up @@ -1053,11 +1050,12 @@ mod tests {
use super::*;

#[cfg(all(feature = "getrandom", feature = "sha2"))]
use crate::{SysRng, rand_core::TryRngCore};
use crate::{SysRng, rand_core::UnwrapErr};

#[test]
#[cfg(all(feature = "alloc", feature = "getrandom", feature = "scrypt"))]
fn test_hash_password_no_std_and_alloc_agree() {
use rand_core::TryRng;
use scrypt::{Params, Scrypt};

let username = "worf@starship.enterprise";
Expand Down Expand Up @@ -1088,7 +1086,7 @@ mod tests {
fn test_client_doesnt_accept_insecure_ssid() {
use crate::Client;

let mut client = Client::new(SysRng.unwrap_err());
let mut client = Client::new(UnwrapErr(SysRng));
let res = client.begin_prestablished_ssid("bad ssid");
assert!(matches!(res, Err(Error::InsecureSsid)));
}
Expand Down
8 changes: 4 additions & 4 deletions aucpace/src/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -734,13 +734,13 @@ mod tests {
use curve25519_dalek::constants::RISTRETTO_BASEPOINT_POINT;

#[cfg(all(feature = "sha2", feature = "getrandom"))]
use crate::{SysRng, rand_core::TryRngCore};
use crate::{SysRng, rand_core::UnwrapErr};

#[test]
#[cfg(all(feature = "sha2", feature = "getrandom"))]
fn test_server_doesnt_accept_insecure_ssid() {
use crate::Server;
let mut server = Server::new(SysRng.unwrap_err());
let mut server = Server::new(UnwrapErr(SysRng));
let res = server.begin_prestablished_ssid("bad ssid");
assert!(matches!(res, Err(Error::InsecureSsid)));
}
Expand Down Expand Up @@ -849,7 +849,7 @@ mod tests {
b"bobbyyyy",
RistrettoPoint::identity(),
&FakeDatabase(),
SysRng.unwrap_err(),
UnwrapErr(SysRng),
);

if let Err(e) = res {
Expand Down Expand Up @@ -877,7 +877,7 @@ mod tests {
b"bobbyyyy",
RistrettoPoint::identity(),
&FakeDatabase(),
SysRng.unwrap_err(),
UnwrapErr(SysRng),
);

if let Err(e) = res {
Expand Down
6 changes: 3 additions & 3 deletions aucpace/tests/test_key_agreement.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
use aucpace::{
Client, ClientMessage, Database, Result, Server, ServerMessage, SysRng,
client::{AuCPaceClientPreAug, AuCPaceClientRecvServerKey},
rand_core::TryRngCore,
server::{AuCPaceServerAugLayer, AuCPaceServerRecvClientKey},
};
use curve25519_dalek::RistrettoPoint;
use password_hash::phc::{ParamsString, SaltString};
use rand_core::UnwrapErr;
use scrypt::{Params, Scrypt};
use sha2::Sha512;

Expand Down Expand Up @@ -234,7 +234,7 @@ fn test_key_agreement_prestablished_ssid_implicit_auth() -> Result<()> {

/// Perform the initialisation step for all tests
fn init() -> Result<(Client, Server, SingleUserDatabase)> {
let rng = SysRng.unwrap_err();
let rng = UnwrapErr(SysRng);

// Create the client, server and database
let base_server = Server::new(rng);
Expand Down Expand Up @@ -268,7 +268,7 @@ fn test_core(
ClientMessage<'_, K1>,
ServerMessage<'_, K1>,
)> {
let mut rng = SysRng.unwrap_err();
let mut rng = UnwrapErr(SysRng);

// ===== Augmentation Layer =====
// client initiates the augmentation phase
Expand Down
6 changes: 3 additions & 3 deletions aucpace/tests/test_key_agreement_partial_aug.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use aucpace::{
};
use curve25519_dalek::{RistrettoPoint, Scalar};
use password_hash::phc::{ParamsString, SaltString};
use rand_core::TryRngCore;
use rand_core::UnwrapErr;
use scrypt::{Params, Scrypt};
use sha2::Sha512;

Expand Down Expand Up @@ -270,7 +270,7 @@ fn test_key_agreement_prestablished_ssid_implicit_auth() -> Result<()> {

/// Perform the initialisation step for all tests
fn init() -> Result<(Client, Server, SingleUserDatabase)> {
let rng = SysRng.unwrap_err();
let rng = UnwrapErr(SysRng);

// Create the client, server and database
let mut base_server = Server::new(rng);
Expand Down Expand Up @@ -306,7 +306,7 @@ fn test_core(
ClientMessage<'_, K1>,
ServerMessage<'_, K1>,
)> {
let mut rng = SysRng.unwrap_err();
let mut rng = UnwrapErr(SysRng);

// ===== Augmentation Layer =====
// client initiates the augmentation phase
Expand Down
6 changes: 3 additions & 3 deletions aucpace/tests/test_key_agreement_strong.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
use aucpace::{
Client, ClientMessage, Result, Server, ServerMessage, StrongDatabase, SysRng,
client::{AuCPaceClientPreAug, AuCPaceClientRecvServerKey},
rand_core::TryRngCore,
server::{AuCPaceServerAugLayer, AuCPaceServerRecvClientKey},
};
use curve25519_dalek::{RistrettoPoint, Scalar};
use password_hash::phc::ParamsString;
use rand_core::UnwrapErr;
use scrypt::{Params, Scrypt};
use sha2::Sha512;

Expand Down Expand Up @@ -235,7 +235,7 @@ fn test_key_agreement_prestablished_ssid_implicit_auth() -> Result<()> {

/// Perform the initialisation step for all tests
fn init() -> Result<(Client, Server, SingleUserDatabase)> {
let rng = SysRng.unwrap_err();
let rng = UnwrapErr(SysRng);

// Create the client, server and database
let base_server = Server::new(rng);
Expand Down Expand Up @@ -270,7 +270,7 @@ fn test_core(
ClientMessage<'_, K1>,
ServerMessage<'_, K1>,
)> {
let mut rng = SysRng.unwrap_err();
let mut rng = UnwrapErr(SysRng);

// ===== Augmentation Layer =====
// client initiates the augmentation phase
Expand Down
6 changes: 3 additions & 3 deletions aucpace/tests/test_key_agreement_strong_partial_aug.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ use aucpace::{
Client, ClientMessage, Error, PartialAugDatabase, Result, Server, ServerMessage,
StrongDatabase, SysRng,
client::{AuCPaceClientPreAug, AuCPaceClientRecvServerKey},
rand_core::TryRngCore,
server::{AuCPaceServerAugLayer, AuCPaceServerRecvClientKey},
};
use curve25519_dalek::{RistrettoPoint, Scalar};
use password_hash::phc::ParamsString;
use rand_core::UnwrapErr;
use scrypt::{Params, Scrypt};
use sha2::Sha512;

Expand Down Expand Up @@ -272,7 +272,7 @@ fn test_key_agreement_prestablished_ssid_implicit_auth() -> Result<()> {

/// Perform the initialisation step for all tests
fn init() -> Result<(Client, Server, SingleUserDatabase)> {
let rng = SysRng.unwrap_err();
let rng = UnwrapErr(SysRng);

// Create the client, server and database
let mut base_server = Server::new(rng);
Expand Down Expand Up @@ -309,7 +309,7 @@ fn test_core(
ClientMessage<'_, K1>,
ServerMessage<'_, K1>,
)> {
let mut rng = SysRng.unwrap_err();
let mut rng = UnwrapErr(SysRng);

// ===== Augmentation Layer =====
// client initiates the augmentation phase
Expand Down
10 changes: 5 additions & 5 deletions spake2/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ edition = "2024"
rust-version = "1.85"

[dependencies]
curve25519-dalek = { version = "5.0.0-pre.4", default-features = false, features = ["rand_core"] }
rand_core = { version = "0.10.0-rc-5", default-features = false }
sha2 = { version = "0.11.0-rc.3", default-features = false }
hkdf = { version = "0.13.0-rc.3", default-features = false }
curve25519-dalek = { version = "5.0.0-pre.5", default-features = false, features = ["rand_core"] }
rand_core = { version = "0.10.0-rc-6", default-features = false }
sha2 = { version = "0.11.0-rc.4", default-features = false }
hkdf = { version = "0.13.0-rc.4", default-features = false }

# optional dependencies
getrandom = { version = "0.4.0-rc.0", optional = true, features = ["sys_rng"] }
getrandom = { version = "0.4.0-rc.1", optional = true, features = ["sys_rng"] }

[dev-dependencies]
bencher = "0.1"
Expand Down
4 changes: 2 additions & 2 deletions spake2/src/ed25519.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use crate::{Group, c2_Element, c2_Scalar};
use alloc::vec::Vec;
use curve25519_dalek::{constants::ED25519_BASEPOINT_POINT, edwards::CompressedEdwardsY};
use hkdf::Hkdf;
use rand_core::{CryptoRng, RngCore};
use rand_core::{CryptoRng, Rng};
use sha2::{Digest, Sha256};

/// Ed25519 elliptic curve group.
Expand Down Expand Up @@ -62,7 +62,7 @@ impl Group for Ed25519Group {

fn random_scalar<T>(cspring: &mut T) -> c2_Scalar
where
T: RngCore + CryptoRng,
T: Rng + CryptoRng,
{
c2_Scalar::random(cspring)
}
Expand Down
4 changes: 2 additions & 2 deletions spake2/src/group.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//! Group trait.

use alloc::vec::Vec;
use rand_core::{CryptoRng, RngCore};
use rand_core::{CryptoRng, Rng};

/// Group trait.
// TODO(tarcieri): replace with `group` crate?
Expand Down Expand Up @@ -33,7 +33,7 @@ pub trait Group {
/// Generate a random scalar
fn random_scalar<T>(cspring: &mut T) -> Self::Scalar
where
T: RngCore + CryptoRng;
T: Rng + CryptoRng;

/// Scalar negation
fn scalar_neg(s: &Self::Scalar) -> Self::Scalar;
Expand Down
Loading