Skip to content

Commit 7a029b2

Browse files
authored
Bump kem crate dependency to v0.4.0-rc.0 (#169)
This primarily includes changes to key generation, notably leveraging the `crypto_common::Generate` trait and changing `Encapsulate::encapsulate` to `Encapsulate::encapsulate_with_rng`. See RustCrypto/traits#2140 and RustCrypto/traits#2141 It also adds a `getrandom` feature to every crate with `kem` crate support.
1 parent 0dfca78 commit 7a029b2

19 files changed

Lines changed: 181 additions & 184 deletions

File tree

Cargo.lock

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

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ ml-kem = { path = "./ml-kem" }
1515

1616
elliptic-curve = { git = "https://github.com/RustCrypto/traits" }
1717
ff = { git = "https://github.com/tarcieri/ff", branch = "rand_core/v0.10.0-rc-2" }
18+
getrandom = { git = "https://github.com/rust-random/getrandom" }
1819
group = { git = "https://github.com/tarcieri/group", branch = "rand_core/v0.10.0-rc-2" }
1920
p256 = { git = "https://github.com/RustCrypto/elliptic-curves " }
2021
primefield = { git = "https://github.com/RustCrypto/elliptic-curves " }

dhkem/Cargo.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ keywords = ["crypto", "ecdh", "ecc"]
1414
readme = "README.md"
1515

1616
[dependencies]
17-
kem = "=0.4.0-pre.2"
17+
kem = "0.4.0-rc.0"
1818
rand_core = "0.10.0-rc-2"
1919

2020
# optional dependencies
@@ -27,14 +27,16 @@ x25519 = { version = "=3.0.0-pre.1", package = "x25519-dalek", optional = true,
2727
zeroize = { version = "1.8.1", optional = true, default-features = false }
2828

2929
[dev-dependencies]
30+
getrandom = { version = "0.3.4", features = ["sys_rng"] }
3031
hex-literal = "1"
3132
hkdf = "0.13.0-rc.3"
32-
rand = "0.10.0-rc.1"
3333
sha2 = "0.11.0-rc.3"
3434

3535
[features]
3636
default = ["zeroize"]
37+
3738
ecdh = ["dep:elliptic-curve", "elliptic-curve/ecdh"]
39+
getrandom = ["kem/getrandom"]
3840
k256 = ["dep:k256", "ecdh"]
3941
p256 = ["dep:p256", "ecdh"]
4042
p384 = ["dep:p384", "ecdh"]

dhkem/src/ecdh_kem.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ where
2121
{
2222
type Error = Infallible;
2323

24-
fn encapsulate<R: TryCryptoRng + ?Sized>(
24+
fn encapsulate_with_rng<R: TryCryptoRng + ?Sized>(
2525
&self,
2626
rng: &mut R,
2727
) -> Result<(PublicKey<C>, SharedSecret<C>), Self::Error> {

dhkem/src/x25519_kem.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pub struct X25519Kem;
1212
impl Encapsulate<PublicKey, SharedSecret> for DhEncapsulator<PublicKey> {
1313
type Error = Infallible;
1414

15-
fn encapsulate<R: TryCryptoRng + ?Sized>(
15+
fn encapsulate_with_rng<R: TryCryptoRng + ?Sized>(
1616
&self,
1717
rng: &mut R,
1818
) -> Result<(PublicKey, SharedSecret), Self::Error> {

dhkem/tests/hpke_p256_test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ fn test_dhkem_p256_hkdf_sha256() {
8181
assert_eq!(pkr.to_encoded_point(false).as_bytes(), &pkr_hex);
8282

8383
let (pke, ss1) = pkr
84-
.encapsulate(&mut ConstantRng(&hex!(
84+
.encapsulate_with_rng(&mut ConstantRng(&hex!(
8585
"4995788ef4b9d6132b249ce59a77281493eb39af373d236a1fe415cb0c2d7beb"
8686
)))
8787
.expect("never fails");

dhkem/tests/tests.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use dhkem::DhKem;
2+
use getrandom::SysRng;
23
use kem::{Decapsulate, Encapsulate};
3-
use rand::rng;
4+
use rand_core::TryRngCore;
45

56
trait SecretBytes {
67
fn as_slice(&self) -> &[u8];
@@ -30,9 +31,9 @@ fn test_kem<K: DhKem>()
3031
where
3132
<K as DhKem>::SharedSecret: SecretBytes,
3233
{
33-
let mut rng = rng();
34+
let mut rng = SysRng.unwrap_err();
3435
let (sk, pk) = K::random_keypair(&mut rng);
35-
let (ek, ss1) = pk.encapsulate(&mut rng).expect("never fails");
36+
let (ek, ss1) = pk.encapsulate_with_rng(&mut rng).expect("never fails");
3637
let ss2 = sk.decapsulate(&ek).expect("never fails");
3738

3839
assert_eq!(ss1.as_slice(), ss2.as_slice());

frodo-kem/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ serde = ["dep:hex", "dep:serde"]
5858
aes = { version = "0.9.0-rc.2", optional = true }
5959
hex = { version = "0.4", optional = true }
6060
openssl-sys = { version = "0.9.104", optional = true }
61-
rand_core = { version = "0.10.0-rc-2", features = [] }
61+
rand_core = { version = "0.10.0-rc-3", features = [] }
6262
serde = { version = "1.0", features = ["derive"], optional = true }
6363
serdect = "0.4"
6464
subtle = "2.6"
@@ -80,10 +80,10 @@ zeroize = "1"
8080
[dev-dependencies]
8181
aes = "0.9.0-rc.2"
8282
criterion = "0.7"
83+
getrandom = { version = "0.3.4", features = ["sys_rng"] }
8384
hex = "0.4"
8485
hybrid-array = "0.4"
85-
rand = "0.10.0-rc.1"
86-
chacha20 = "0.10.0-rc.3"
86+
chacha20 = { version = "0.10.0-rc.6", features = ["rng"] }
8787
rstest = "0.26"
8888
postcard = { version = "1.0", features = ["use-std"] }
8989
serde_bare = "0.5"

frodo-kem/src/lib.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66
//!
77
//! ```
88
//! use frodo_kem::Algorithm;
9-
//! use rand::{rngs::OsRng, TryRngCore};
9+
//! use getrandom::SysRng;
10+
//! use rand_core::TryRngCore;
1011
//!
11-
//! let mut rng = OsRng.unwrap_err();
12+
//! let mut rng = SysRng.unwrap_err();
1213
//! let alg = Algorithm::FrodoKem640Shake;
1314
//! let (ek, dk) = alg.generate_keypair(&mut rng);
1415
//! let (ct, enc_ss) = alg.encapsulate_with_rng(&ek, &mut rng).unwrap();
@@ -28,9 +29,10 @@
2829
//!
2930
//! ```
3031
//! use frodo_kem::Algorithm;
31-
//! use rand::{rngs::OsRng, RngCore, TryRngCore};
32+
//! use getrandom::SysRng;
33+
//! use rand_core::{RngCore, TryRngCore};
3234
//!
33-
//! let mut rng = OsRng.unwrap_err();
35+
//! let mut rng = SysRng.unwrap_err();
3436
//! let alg = Algorithm::FrodoKem1344Shake;
3537
//! let params = alg.params();
3638
//! let (ek, dk) = alg.generate_keypair(&mut rng);

ml-kem/Cargo.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,15 @@ exclude = ["tests/key-gen.rs", "tests/key-gen.json", "tests/encap-decap.rs", "te
1919
alloc = ["pkcs8?/alloc"]
2020

2121
deterministic = [] # Expose deterministic encapsulation functions
22+
getrandom = ["kem/getrandom"]
2223
pem = ["pkcs8/pem"]
2324
pkcs8 = ["dep:const-oid", "dep:pkcs8"]
2425
zeroize = ["dep:zeroize"]
2526

2627
[dependencies]
27-
kem = "=0.4.0-pre.2"
28+
kem = "0.4.0-rc.0"
2829
hybrid-array = { version = "0.4.4", features = ["extra-sizes", "subtle"] }
29-
rand_core = "0.10.0-rc-2"
30+
rand_core = "0.10.0-rc-3"
3031
sha3 = { version = "0.11.0-rc.3", default-features = false }
3132
subtle = { version = "2", default-features = false }
3233

@@ -37,10 +38,10 @@ zeroize = { version = "1.8.1", optional = true, default-features = false }
3738

3839
[dev-dependencies]
3940
criterion = "0.7"
41+
getrandom = { version = "0.3.4", features = ["sys_rng"] }
4042
hex = { version = "0.4.3", features = ["serde"] }
4143
hex-literal = "1"
4244
num-rational = { version = "0.4.2", default-features = false, features = ["num-bigint"] }
43-
rand = "0.10.0-rc.1"
4445
serde = { version = "1.0.208", features = ["derive"] }
4546
serde_json = "1.0.125"
4647

0 commit comments

Comments
 (0)