1use std::{
2 fmt::{Debug, Formatter, Result},
3 sync::Arc,
4};
5
6use mpc_tls::Config;
7use tlsn_common::config::{NetworkSetting, ProtocolConfig, ProtocolConfigValidator};
8use tlsn_core::CryptoProvider;
9
10#[allow(missing_docs)]
12#[derive(derive_builder::Builder)]
13#[builder(pattern = "owned")]
14pub struct VerifierConfig {
15 protocol_config_validator: ProtocolConfigValidator,
16 #[builder(default, setter(into))]
18 crypto_provider: Arc<CryptoProvider>,
19}
20
21impl Debug for VerifierConfig {
22 fn fmt(&self, f: &mut Formatter<'_>) -> Result {
23 f.debug_struct("VerifierConfig")
24 .field("protocol_config_validator", &self.protocol_config_validator)
25 .finish_non_exhaustive()
26 }
27}
28
29impl VerifierConfig {
30 pub fn builder() -> VerifierConfigBuilder {
32 VerifierConfigBuilder::default()
33 }
34
35 pub fn protocol_config_validator(&self) -> &ProtocolConfigValidator {
37 &self.protocol_config_validator
38 }
39
40 pub fn crypto_provider(&self) -> &CryptoProvider {
42 &self.crypto_provider
43 }
44
45 pub(crate) fn build_mpc_tls_config(&self, protocol_config: &ProtocolConfig) -> Config {
46 let mut builder = Config::builder();
47
48 builder
49 .max_sent(protocol_config.max_sent_data())
50 .max_recv_online(protocol_config.max_recv_data_online())
51 .max_recv(protocol_config.max_recv_data());
52
53 if let Some(max_sent_records) = protocol_config.max_sent_records() {
54 builder.max_sent_records(max_sent_records);
55 }
56
57 if let Some(max_recv_records) = protocol_config.max_recv_records() {
58 builder.max_recv_records(max_recv_records);
59 }
60
61 if let NetworkSetting::Latency = protocol_config.network() {
62 builder.low_bandwidth();
63 }
64
65 builder.build().unwrap()
66 }
67}