Skip to content

Commit 8afec46

Browse files
authored
Adding TripleDhKem key exchange (#404)
1 parent 67297dc commit 8afec46

File tree

9 files changed

+1607
-2
lines changed

9 files changed

+1607
-2
lines changed

.github/workflows/main.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ jobs:
1515
backend_feature:
1616
-
1717
- --features ristretto255
18+
- --features ristretto255,kem
1819
- --features curve25519
1920
- --features ecdsa
2021
- --features ed25519
@@ -73,6 +74,7 @@ jobs:
7374
backend_feature:
7475
-
7576
- --features ristretto255
77+
- --features ristretto255,kem
7678
- --features curve25519
7779
- --features ecdsa
7880
- --features ed25519
@@ -167,6 +169,7 @@ jobs:
167169
matrix:
168170
backend_feature:
169171
- --features ristretto255
172+
- --features ristretto255,kem
170173
-
171174
steps:
172175
- name: Checkout sources
@@ -204,7 +207,7 @@ jobs:
204207
uses: actions-rs/cargo@v1
205208
with:
206209
command: clippy
207-
args: --all-targets --features argon2,std,curve25519,ecdsa,ed25519 -- -D warnings
210+
args: --all-targets --features argon2,std,curve25519,ecdsa,ed25519,kem -- -D warnings
208211

209212
format:
210213
name: cargo fmt
@@ -233,7 +236,7 @@ jobs:
233236
RUSTDOCFLAGS: -D warnings
234237
with:
235238
command: doc
236-
args: --no-deps --document-private-items --features argon2,std,curve25519,ecdsa,ed25519
239+
args: --no-deps --document-private-items --features argon2,std,curve25519,ecdsa,ed25519,kem
237240

238241
taplo:
239242
name: Taplo

Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ curve25519 = ["dep:curve25519-dalek"]
1818
default = ["ristretto255", "serde"]
1919
ecdsa = ["dep:ecdsa", "dep:rfc6979"]
2020
ed25519 = ["dep:curve25519-dalek", "dep:ed25519-dalek"]
21+
kem = ["dep:ml-kem"]
2122
ristretto255 = ["dep:curve25519-dalek", "voprf/ristretto255-ciphersuite"]
2223
serde = [
2324
"dep:serde",
@@ -53,6 +54,9 @@ elliptic-curve = { version = "0.13", features = ["hash2curve", "sec1"] }
5354
generic-array = "=0.14.7" # pinned to avoid deprecation warnings
5455
hkdf = "0.12"
5556
hmac = "0.12"
57+
ml-kem = { version = "0.2", default-features = false, features = [
58+
"zeroize",
59+
], optional = true }
5660
rand = { version = "0.8", default-features = false }
5761
rfc6979 = { version = "0.4", optional = true }
5862
serde = { version = "1", default-features = false, features = [

src/errors.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ pub enum InternalError {
2424
HmacError,
2525
/// Computing the key stretching function failed
2626
KsfError,
27+
/// Error while performing a KEM operation
28+
KemError,
2729
/** This error occurs when the envelope seal open hmac check fails
2830
HMAC check in seal open failed. */
2931
SealOpenHmacError,
@@ -43,6 +45,7 @@ impl Debug for InternalError {
4345
Self::HkdfError => f.debug_tuple("HkdfError").finish(),
4446
Self::HmacError => f.debug_tuple("HmacError").finish(),
4547
Self::KsfError => f.debug_tuple("KsfError").finish(),
48+
Self::KemError => f.debug_tuple("KemError").finish(),
4649
Self::SealOpenHmacError => f.debug_tuple("SealOpenHmacError").finish(),
4750
Self::IncompatibleEnvelopeModeError => {
4851
f.debug_tuple("IncompatibleEnvelopeModeError").finish()

src/key_exchange/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ pub mod group;
1313
pub(crate) mod shared;
1414
pub mod sigma_i;
1515
pub mod tripledh;
16+
#[cfg(feature = "kem")]
17+
pub mod tripledh_kem;
1618

1719
use core::iter;
1820
use core::ops::Add;

0 commit comments

Comments
 (0)