Skip to content

Commit 7b15151

Browse files
committed
Use a flag instead
1 parent 3ad897d commit 7b15151

5 files changed

Lines changed: 51 additions & 19 deletions

File tree

openmls/src/group/mls_group/tests_and_kats/tests/proposals.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,11 @@ fn proposal_queue_functions(
4545
let alice_update_key_package = alice_update_key_package_bundle.key_package();
4646
let kpi = KeyPackageIn::from(alice_update_key_package.clone());
4747
assert!(kpi
48-
.validate(provider.crypto(), ProtocolVersion::Mls10)
48+
.validate(
49+
provider.crypto(),
50+
ProtocolVersion::Mls10,
51+
LeafNodeLifetimePolicy::Verify
52+
)
4953
.is_ok());
5054

5155
let group_context = GroupContext::new(
@@ -185,7 +189,11 @@ fn proposal_queue_order() {
185189
let alice_update_key_package = alice_update_key_package_bundle.key_package();
186190
let kpi = KeyPackageIn::from(alice_update_key_package.clone());
187191
assert!(kpi
188-
.validate(provider.crypto(), ProtocolVersion::Mls10)
192+
.validate(
193+
provider.crypto(),
194+
ProtocolVersion::Mls10,
195+
crate::group::LeafNodeLifetimePolicy::Verify
196+
)
189197
.is_ok());
190198

191199
let group_context = GroupContext::new(

openmls/src/group/tests_and_kats/tests/proposal_validation.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1065,8 +1065,12 @@ fn test_valsem105() {
10651065
let mut franken_key_package = FrankenKeyPackage::from(charlie_key_package.clone());
10661066

10671067
let kpi = KeyPackageIn::from(charlie_key_package.clone());
1068-
kpi.validate(provider.crypto(), ProtocolVersion::Mls10)
1069-
.unwrap();
1068+
kpi.validate(
1069+
provider.crypto(),
1070+
ProtocolVersion::Mls10,
1071+
LeafNodeLifetimePolicy::Verify,
1072+
)
1073+
.unwrap();
10701074

10711075
// Let's just pick a ciphersuite that's not the one we're testing right now.
10721076
let wrong_ciphersuite = match ciphersuite {

openmls/src/key_packages/key_package_in.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use crate::{
55
ciphersuite::{signable::*, *},
66
credentials::*,
77
extensions::Extensions,
8+
group::LeafNodeLifetimePolicy,
89
treesync::node::leaf_node::{LeafNodeIn, VerifiableLeafNode},
910
versions::ProtocolVersion,
1011
};
@@ -136,6 +137,7 @@ impl KeyPackageIn {
136137
self,
137138
crypto: &impl OpenMlsCrypto,
138139
protocol_version: ProtocolVersion,
140+
validate_lifetimes: LeafNodeLifetimePolicy,
139141
) -> Result<KeyPackage, KeyPackageVerifyError> {
140142
// We first need to verify the LeafNode inside the KeyPackage
141143
let leaf_node = self.payload.leaf_node.clone().into_verifiable_leaf_node();
@@ -191,16 +193,18 @@ impl KeyPackageIn {
191193
}
192194
}
193195

194-
// Ensure validity of the life time extension in the leaf node.
195-
// if let Some(life_time) = key_package.payload.leaf_node.life_time() {
196-
// if !life_time.is_valid() {
197-
// return Err(KeyPackageVerifyError::InvalidLifetime);
198-
// }
199-
// } else {
200-
// // This assumes that we only verify key packages with leaf nodes
201-
// // that were created for the key package.
202-
// return Err(KeyPackageVerifyError::MissingLifetime);
203-
// }
196+
if validate_lifetimes == LeafNodeLifetimePolicy::Verify {
197+
// Ensure validity of the life time extension in the leaf node.
198+
if let Some(life_time) = key_package.payload.leaf_node.life_time() {
199+
if !life_time.is_valid() {
200+
return Err(KeyPackageVerifyError::InvalidLifetime);
201+
}
202+
} else {
203+
// This assumes that we only verify key packages with leaf nodes
204+
// that were created for the key package.
205+
return Err(KeyPackageVerifyError::MissingLifetime);
206+
}
207+
}
204208

205209
Ok(key_package)
206210
}

openmls/src/key_packages/tests.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::test_utils::*;
1+
use crate::{test_utils::*, tree::tests_and_kats::kats::secret_tree::Leaf};
22
use openmls_basic_credential::SignatureKeyPair;
33

44
use tls_codec::Deserialize;
@@ -35,7 +35,11 @@ fn generate_key_package() {
3535

3636
let kpi = KeyPackageIn::from(key_package.key_package().clone());
3737
assert!(kpi
38-
.validate(provider.crypto(), ProtocolVersion::Mls10)
38+
.validate(
39+
provider.crypto(),
40+
ProtocolVersion::Mls10,
41+
crate::group::LeafNodeLifetimePolicy::Verify
42+
)
3943
.is_ok());
4044
}
4145

@@ -79,7 +83,11 @@ fn application_id_extension() {
7983

8084
let kpi = KeyPackageIn::from(key_package.key_package().clone());
8185
assert!(kpi
82-
.validate(provider.crypto(), ProtocolVersion::Mls10)
86+
.validate(
87+
provider.crypto(),
88+
ProtocolVersion::Mls10,
89+
crate::group::LeafNodeLifetimePolicy::Verify
90+
)
8391
.is_ok());
8492

8593
// Check ID
@@ -111,7 +119,11 @@ fn key_package_validation() {
111119
let key_package_in = KeyPackageIn::from(franken_key_package);
112120

113121
let err = key_package_in
114-
.validate(provider.crypto(), ProtocolVersion::Mls10)
122+
.validate(
123+
provider.crypto(),
124+
ProtocolVersion::Mls10,
125+
crate::group::LeafNodeLifetimePolicy::Verify,
126+
)
115127
.unwrap_err();
116128

117129
// Expect an invalid protocol version error

openmls/src/messages/proposals_in.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,11 @@ impl AddProposalIn {
162162
protocol_version: ProtocolVersion,
163163
ciphersuite: Ciphersuite,
164164
) -> Result<AddProposal, ValidationError> {
165-
let key_package = self.key_package.validate(crypto, protocol_version)?;
165+
let key_package = self.key_package.validate(
166+
crypto,
167+
protocol_version,
168+
crate::group::LeafNodeLifetimePolicy::Skip,
169+
)?;
166170
// Verify that the ciphersuite is valid
167171
if key_package.ciphersuite() != ciphersuite {
168172
return Err(ValidationError::InvalidAddProposalCiphersuite);

0 commit comments

Comments
 (0)