Skip to content

Commit cdb80e1

Browse files
sinui0th4s
andauthored
fix: compute recv record count from max_recv (tlsnotary#743)
* fix: compute recv record count from max_recv * pad after check * fix: add `max_recv` to mpc-tls integration test --------- Co-authored-by: th4s <[email protected]>
1 parent eeccbef commit cdb80e1

File tree

4 files changed

+22
-5
lines changed

4 files changed

+22
-5
lines changed

crates/mpc-tls/src/config.rs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ pub struct Config {
2727
/// the TLS connection is active. Data which can be decrypted after the TLS
2828
/// connection will be decrypted for free.
2929
pub(crate) max_recv_online: usize,
30+
/// Maximum number of received bytes.
31+
#[allow(unused)]
32+
pub(crate) max_recv: usize,
3033
}
3134

3235
impl Config {
@@ -44,24 +47,35 @@ impl ConfigBuilder {
4447
+ self
4548
.max_sent
4649
.ok_or(ConfigBuilderError::UninitializedField("max_sent"))?;
47-
let max_recv_online = MIN_RECV
48-
+ self
49-
.max_recv_online
50-
.ok_or(ConfigBuilderError::UninitializedField("max_recv_online"))?;
50+
let mut max_recv_online = self
51+
.max_recv_online
52+
.ok_or(ConfigBuilderError::UninitializedField("max_recv_online"))?;
53+
let max_recv = self
54+
.max_recv
55+
.ok_or(ConfigBuilderError::UninitializedField("max_recv"))?;
56+
57+
if max_recv_online > max_recv {
58+
return Err(ConfigBuilderError::ValidationError(
59+
"max_recv_online must be less than or equal to max_recv".to_string(),
60+
));
61+
}
62+
63+
max_recv_online += MIN_RECV;
5164

5265
let max_sent_records = self
5366
.max_sent_records
5467
.unwrap_or_else(|| MIN_SENT_RECORDS + max_sent.div_ceil(16384));
5568
let max_recv_records = self
5669
.max_recv_records
57-
.unwrap_or_else(|| MIN_RECV_RECORDS + max_recv_online.div_ceil(16384));
70+
.unwrap_or_else(|| MIN_RECV_RECORDS + max_recv.div_ceil(16384));
5871

5972
Ok(Config {
6073
defer_decryption,
6174
max_sent_records,
6275
max_sent,
6376
max_recv_records,
6477
max_recv_online,
78+
max_recv,
6579
})
6680
}
6781
}

crates/mpc-tls/tests/test.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ async fn mpc_tls_test() {
2828
.defer_decryption(false)
2929
.max_sent(1 << 13)
3030
.max_recv_online(1 << 13)
31+
.max_recv(1 << 13)
3132
.build()
3233
.unwrap();
3334

crates/prover/src/config.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ impl ProverConfig {
5353
.defer_decryption(self.defer_decryption_from_start)
5454
.max_sent(self.protocol_config.max_sent_data())
5555
.max_recv_online(self.protocol_config.max_recv_data_online())
56+
.max_recv(self.protocol_config.max_recv_data())
5657
.build()
5758
.unwrap()
5859
}

crates/verifier/src/config.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ impl VerifierConfig {
4646
Config::builder()
4747
.max_sent(protocol_config.max_sent_data())
4848
.max_recv_online(protocol_config.max_recv_data_online())
49+
.max_recv(protocol_config.max_recv_data())
4950
.build()
5051
.unwrap()
5152
}

0 commit comments

Comments
 (0)