Skip to content

Commit d62dfcf

Browse files
committed
Bump all dependencies to the latest prereleases
This notably includes a `rand_core` v0.10.0-rc-2 upgrade which is what necessitates most of the changes, but also bumps all of the other cryptographic algorithm crates to the latest versions
1 parent 58bd7e7 commit d62dfcf

21 files changed

+362
-268
lines changed

Cargo.lock

Lines changed: 131 additions & 93 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,7 @@ members = [
88

99
[profile.dev]
1010
opt-level = 2
11+
12+
[patch.crates-io.curve25519-dalek]
13+
git = "https://github.com/dalek-cryptography/curve25519-dalek"
14+
branch = "rand_core/v0.10-rc"

aucpace/Cargo.toml

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,41 +15,34 @@ edition = "2024"
1515
rust-version = "1.85"
1616

1717
[dependencies]
18-
curve25519-dalek = { version = "4", default-features = false, features = [
19-
"digest",
20-
"rand_core",
21-
] }
22-
password-hash = { version = "0.5", default-features = false, features = [
23-
"rand_core",
24-
] }
25-
rand_core = { version = "0.6", default-features = false }
26-
serde = { version = "1.0.184", default-features = false, optional = true, features = [
27-
"derive",
28-
] }
29-
serde-byte-array = { version = "0.1", optional = true }
18+
curve25519-dalek = { version = "5.0.0-pre.1", default-features = false, features = ["digest", "rand_core"] }
19+
password-hash = { version = "0.6.0-rc.2", default-features = false, features = ["rand_core"] }
20+
rand_core = { version = "0.10.0-rc.2", default-features = false }
3021
subtle = { version = "2.4", default-features = false }
31-
scrypt = { version = "0.11", default-features = false, optional = true, features = [
32-
"simple",
33-
] }
34-
sha2 = { version = "0.10", default-features = false, optional = true }
22+
23+
# optional dependencies
24+
rand = { version = "0.10.0-rc.1", optional = true }
25+
serde = { version = "1.0.184", default-features = false, optional = true, features = ["derive"] }
26+
serde-byte-array = { version = "0.1", optional = true }
27+
scrypt = { version = "0.12.0-rc.3", default-features = false, optional = true, features = ["simple"] }
28+
sha2 = { version = "0.11.0-rc.3", default-features = false, optional = true }
3529

3630
[dev-dependencies]
3731
bincode = "1"
38-
curve25519-dalek = { version = "4", features = ["digest", "rand_core"] }
39-
password-hash = { version = "0.5", features = ["rand_core"] }
32+
curve25519-dalek = { version = "5.0.0-pre.1", features = ["digest", "rand_core"] }
33+
password-hash = { version = "0.6.0-rc.2", features = ["rand_core"] }
4034
postcard = "1"
41-
rand_core = "0.6"
42-
scrypt = { version = "0.11", features = ["simple"] }
43-
sha2 = "0.10"
35+
scrypt = { version = "0.12.0-rc.3", features = ["simple"] }
36+
sha2 = "0.11.0-rc.3"
4437

4538
[features]
46-
default = ["scrypt", "sha2", "getrandom"]
39+
default = ["rand", "scrypt", "sha2"]
4740
alloc = []
41+
4842
partial_augmentation = []
43+
serde = ["dep:serde", "serde-byte-array", "curve25519-dalek/serde"]
4944
strong_aucpace = []
5045
zeroize = ["curve25519-dalek/zeroize"]
51-
serde = ["dep:serde", "serde-byte-array", "curve25519-dalek/serde"]
52-
getrandom = ["rand_core/getrandom"]
5346

5447
[[example]]
5548
name = "key_agreement"

aucpace/examples/key_agreement.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
use aucpace::{Client, ClientMessage, Database, Result, Server, ServerMessage};
1+
use aucpace::{
2+
Client, ClientMessage, Database, OsRng, Result, Server, ServerMessage, rand_core::TryRngCore,
3+
};
24
use curve25519_dalek::ristretto::RistrettoPoint;
35
use password_hash::{ParamsString, SaltString};
4-
use rand_core::OsRng;
56
use scrypt::{Params, Scrypt};
67
use sha2::Sha512;
78
use sha2::digest::Output;
@@ -37,8 +38,11 @@ fn main() -> Result<()> {
3738
// the server socket address to bind to
3839
let server_socket: SocketAddr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 25519);
3940

41+
// random number generator from OS
42+
let mut rng = OsRng.unwrap_err();
43+
4044
// register the user in the database
41-
let mut base_client = Client::new(OsRng);
45+
let mut base_client = Client::new(rng);
4246
let mut database: SingleUserDatabase = Default::default();
4347

4448
let params = Params::recommended();
@@ -66,7 +70,7 @@ fn main() -> Result<()> {
6670

6771
// buffer for receiving packets
6872
let mut buf = [0u8; 1024];
69-
let mut base_server = Server::new(OsRng);
73+
let mut base_server = Server::new(rng);
7074

7175
// ===== SSID Establishment =====
7276
let (server, message) = base_server.begin();
@@ -84,7 +88,7 @@ fn main() -> Result<()> {
8488
// ===== Augmentation Layer =====
8589
client_message = recv!(stream, buf);
8690
let (server, message) = if let ClientMessage::Username(username) = client_message {
87-
server.generate_client_info(username, &database, OsRng)
91+
server.generate_client_info(username, &database, rng)
8892
} else {
8993
panic!("Received invalid client message {:?}", client_message);
9094
};
@@ -179,7 +183,7 @@ fn main() -> Result<()> {
179183
let r = pbkdf_params.get_str("r").unwrap().parse().unwrap();
180184
let p = pbkdf_params.get_str("p").unwrap().parse().unwrap();
181185

182-
Params::new(log_n, r, p, scrypt::Params::RECOMMENDED_LEN).unwrap()
186+
Params::new(log_n, r, p).unwrap()
183187
};
184188
client.generate_cpace_alloc(x_pub, &salt, params, Scrypt)?
185189
} else {
@@ -188,7 +192,7 @@ fn main() -> Result<()> {
188192

189193
// ===== CPace substep =====
190194
let ci = TcpChannelIdentifier::new(stream.local_addr().unwrap(), server_socket).unwrap();
191-
let (client, message) = client.generate_public_key(ci, &mut OsRng);
195+
let (client, message) = client.generate_public_key(ci, &mut rng);
192196
let bytes_sent = send!(stream, message);
193197
CLIENT_BYTES_SENT.fetch_add(bytes_sent, Ordering::SeqCst);
194198
println!(
@@ -231,7 +235,7 @@ fn main() -> Result<()> {
231235
let server_key: Output<Sha512> = server_thread.join().unwrap().unwrap();
232236
assert_eq!(client_key, server_key);
233237
println!(
234-
"Negotiation finished, both parties arrived at a key of: {:X}",
238+
"Negotiation finished, both parties arrived at a key of: {:?}",
235239
client_key
236240
);
237241
println!(

aucpace/examples/key_agreement_no_std.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
extern crate std;
55
use std::{println, time::Instant};
66

7-
use aucpace::{Client, ClientMessage, Database, Result, Server, ServerMessage};
7+
use aucpace::{
8+
Client, ClientMessage, Database, OsRng, Result, Server, ServerMessage, rand_core::TryRngCore,
9+
};
810
use curve25519_dalek::ristretto::RistrettoPoint;
911
use password_hash::{ParamsString, SaltString};
10-
use rand_core::OsRng;
1112
use scrypt::{Params, Scrypt};
1213

1314
/// function like macro to wrap sending data over a tcp stream, returns the number of bytes sent
@@ -29,9 +30,12 @@ fn main() -> Result<()> {
2930
const USERNAME: &[u8] = b"adira.tal";
3031
const PASSWORD: &[u8] = b"4d1rA_aND-Gr4Y_aRe_tH3-b3sT <3";
3132

33+
// get system random number generator
34+
let mut rng = OsRng.unwrap_err();
35+
3236
// register the user in the database
33-
let mut base_server = Server::new(OsRng);
34-
let mut base_client = Client::new(OsRng);
37+
let mut base_server = Server::new(rng);
38+
let mut base_client = Client::new(rng);
3539
let mut database: SingleUserDatabase<100> = Default::default();
3640

3741
let start = Instant::now();
@@ -111,7 +115,7 @@ fn main() -> Result<()> {
111115
// server receives the username then looks up
112116
client_message = recv!(client_buf);
113117
let (server, message) = if let ClientMessage::Username(username) = client_message {
114-
server.generate_client_info(username, &database, OsRng)
118+
server.generate_client_info(username, &database, rng)
115119
} else {
116120
panic!("Received invalid client message {:?}", client_message);
117121
};
@@ -137,7 +141,7 @@ fn main() -> Result<()> {
137141
let r = pbkdf_params.get_str("r").unwrap().parse().unwrap();
138142
let p = pbkdf_params.get_str("p").unwrap().parse().unwrap();
139143

140-
Params::new(log_n, r, p, scrypt::Params::RECOMMENDED_LEN).unwrap()
144+
Params::new(log_n, r, p).unwrap()
141145
};
142146
client.generate_cpace::<&SaltString, 100>(x_pub, &salt, params, Scrypt)?
143147
} else {
@@ -156,7 +160,7 @@ fn main() -> Result<()> {
156160
);
157161

158162
// now generate the client's public key and send it
159-
let (client, message) = client.generate_public_key(CI, &mut OsRng);
163+
let (client, message) = client.generate_public_key(CI, &mut rng);
160164
let bytes_sent = send!(client_buf, message);
161165
client_bytes_sent += bytes_sent;
162166
println!(
@@ -223,7 +227,7 @@ fn main() -> Result<()> {
223227
// assert that both threads arrived at the same key
224228
assert_eq!(client_key, server_key);
225229
println!(
226-
"Negotiation finished, both parties arrived at a key of: {:X}",
230+
"Negotiation finished, both parties arrived at a key of: {:?}",
227231
client_key
228232
);
229233

aucpace/examples/key_agreement_partial_aug.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
use aucpace::rand_core::TryRngCore;
12
use aucpace::{
2-
Client, ClientMessage, Database, Error, PartialAugDatabase, Result, Server, ServerMessage,
3+
Client, ClientMessage, Database, Error, OsRng, PartialAugDatabase, Result, Server,
4+
ServerMessage,
35
};
46
use curve25519_dalek::ristretto::RistrettoPoint;
57
use curve25519_dalek::scalar::Scalar;
68
use password_hash::{ParamsString, SaltString};
7-
use rand_core::OsRng;
89
use scrypt::{Params, Scrypt};
910
use sha2::Sha512;
1011
use sha2::digest::Output;
@@ -40,9 +41,12 @@ fn main() -> Result<()> {
4041
// the server socket address to bind to
4142
let server_socket: SocketAddr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 25519);
4243

44+
// random number generator from OS
45+
let mut rng = OsRng.unwrap_err();
46+
4347
// register the user in the database
44-
let mut base_client = Client::new(OsRng);
45-
let mut base_server = Server::new(OsRng);
48+
let mut base_client = Client::new(rng);
49+
let mut base_server = Server::new(rng);
4650
let mut database: SingleUserDatabase = Default::default();
4751

4852
let params = Params::recommended();
@@ -92,7 +96,7 @@ fn main() -> Result<()> {
9296
client_message = recv!(stream, buf);
9397
let (server, message) = if let ClientMessage::Username(username) = client_message {
9498
// This is the only difference from the non-augmented protocol flow
95-
server.generate_client_info_partial_aug(username, &database, OsRng)
99+
server.generate_client_info_partial_aug(username, &database, rng)
96100
} else {
97101
panic!("Received invalid client message {:?}", client_message);
98102
};
@@ -187,7 +191,7 @@ fn main() -> Result<()> {
187191
let r = pbkdf_params.get_str("r").unwrap().parse().unwrap();
188192
let p = pbkdf_params.get_str("p").unwrap().parse().unwrap();
189193

190-
Params::new(log_n, r, p, scrypt::Params::RECOMMENDED_LEN).unwrap()
194+
Params::new(log_n, r, p).unwrap()
191195
};
192196
client.generate_cpace_alloc(x_pub, &salt, params, Scrypt)?
193197
} else {
@@ -196,7 +200,7 @@ fn main() -> Result<()> {
196200

197201
// ===== CPace substep =====
198202
let ci = TcpChannelIdentifier::new(stream.local_addr().unwrap(), server_socket).unwrap();
199-
let (client, message) = client.generate_public_key(ci, &mut OsRng);
203+
let (client, message) = client.generate_public_key(ci, &mut rng);
200204
let bytes_sent = send!(stream, message);
201205
CLIENT_BYTES_SENT.fetch_add(bytes_sent, Ordering::SeqCst);
202206
println!(
@@ -239,7 +243,7 @@ fn main() -> Result<()> {
239243
let server_key: Output<Sha512> = server_thread.join().unwrap().unwrap();
240244
assert_eq!(client_key, server_key);
241245
println!(
242-
"Negotiation finished, both parties arrived at a key of: {:X}",
246+
"Negotiation finished, both parties arrived at a key of: {:?}",
243247
client_key
244248
);
245249
println!(

aucpace/examples/key_agreement_strong.rs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
use aucpace::{Client, ClientMessage, Result, Server, ServerMessage, StrongDatabase};
1+
use aucpace::{
2+
Client, ClientMessage, OsRng, Result, Server, ServerMessage, StrongDatabase,
3+
rand_core::TryRngCore,
4+
};
25
use curve25519_dalek::ristretto::RistrettoPoint;
36
use curve25519_dalek::scalar::Scalar;
47
use password_hash::ParamsString;
5-
use rand_core::OsRng;
68
use scrypt::{Params, Scrypt};
79
use sha2::Sha512;
810
use sha2::digest::Output;
@@ -38,8 +40,11 @@ fn main() -> Result<()> {
3840
// the server socket address to bind to
3941
let server_socket: SocketAddr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 25519);
4042

43+
// random number generator from OS
44+
let mut rng = OsRng.unwrap_err();
45+
4146
// register the user in the database
42-
let mut base_client = Client::new(OsRng);
47+
let mut base_client = Client::new(rng);
4348
let mut database: SingleUserDatabase = Default::default();
4449

4550
let params = Params::recommended();
@@ -67,7 +72,7 @@ fn main() -> Result<()> {
6772

6873
// buffer for receiving packets
6974
let mut buf = [0u8; 1024];
70-
let mut base_server = Server::new(OsRng);
75+
let mut base_server = Server::new(rng);
7176

7277
// ===== SSID Establishment =====
7378
let (server, message) = base_server.begin();
@@ -87,7 +92,7 @@ fn main() -> Result<()> {
8792
let (server, message) =
8893
if let ClientMessage::StrongUsername { username, blinded } = client_message {
8994
server
90-
.generate_client_info_strong(username, blinded, &database, OsRng)
95+
.generate_client_info_strong(username, blinded, &database, rng)
9196
.unwrap()
9297
} else {
9398
panic!("Received invalid client message {:?}", client_message);
@@ -161,7 +166,7 @@ fn main() -> Result<()> {
161166
};
162167

163168
// ===== Augmentation Layer =====
164-
let (client, message) = client.start_augmentation_strong(USERNAME, PASSWORD, &mut OsRng);
169+
let (client, message) = client.start_augmentation_strong(USERNAME, PASSWORD, &mut rng);
165170
let bytes_sent = send!(stream, message);
166171
CLIENT_BYTES_SENT.fetch_add(bytes_sent, Ordering::SeqCst);
167172
println!(
@@ -183,7 +188,7 @@ fn main() -> Result<()> {
183188
let r = pbkdf_params.get_str("r").unwrap().parse().unwrap();
184189
let p = pbkdf_params.get_str("p").unwrap().parse().unwrap();
185190

186-
Params::new(log_n, r, p, scrypt::Params::RECOMMENDED_LEN).unwrap()
191+
Params::new(log_n, r, p).unwrap()
187192
};
188193
client.generate_cpace_alloc(x_pub, blinded_salt, params, Scrypt)?
189194
} else {
@@ -192,7 +197,7 @@ fn main() -> Result<()> {
192197

193198
// ===== CPace substep =====
194199
let ci = TcpChannelIdentifier::new(stream.local_addr().unwrap(), server_socket).unwrap();
195-
let (client, message) = client.generate_public_key(ci, &mut OsRng);
200+
let (client, message) = client.generate_public_key(ci, &mut rng);
196201
let bytes_sent = send!(stream, message);
197202
CLIENT_BYTES_SENT.fetch_add(bytes_sent, Ordering::SeqCst);
198203
println!(
@@ -235,7 +240,7 @@ fn main() -> Result<()> {
235240
let server_key: Output<Sha512> = server_thread.join().unwrap().unwrap();
236241
assert_eq!(client_key, server_key);
237242
println!(
238-
"Negotiation finished, both parties arrived at a key of: {:X}",
243+
"Negotiation finished, both parties arrived at a key of: {:?}",
239244
client_key
240245
);
241246
println!(

0 commit comments

Comments
 (0)