tlsn_verifier/
config.rs

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/// Configuration for the [`Verifier`](crate::tls::Verifier).
11#[allow(missing_docs)]
12#[derive(derive_builder::Builder)]
13#[builder(pattern = "owned")]
14pub struct VerifierConfig {
15    protocol_config_validator: ProtocolConfigValidator,
16    /// Cryptography provider.
17    #[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    /// Creates a new configuration builder.
31    pub fn builder() -> VerifierConfigBuilder {
32        VerifierConfigBuilder::default()
33    }
34
35    /// Returns the protocol configuration validator.
36    pub fn protocol_config_validator(&self) -> &ProtocolConfigValidator {
37        &self.protocol_config_validator
38    }
39
40    /// Returns the cryptography provider.
41    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}