From afd8f442617d4b2845e1d06e110219d32541aed8 Mon Sep 17 00:00:00 2001 From: "sinu.eth" <65924192+sinui0@users.noreply.github.com> Date: Mon, 18 Aug 2025 09:03:04 -0700 Subject: [PATCH] feat(tlsn): serializable config (#968) --- crates/core/src/lib.rs | 6 ++++-- crates/core/src/transcript/commit.rs | 2 +- crates/tlsn/src/config.rs | 2 +- crates/tlsn/src/prover/config.rs | 5 +++-- crates/tlsn/src/verifier/config.rs | 6 ++++-- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/crates/core/src/lib.rs b/crates/core/src/lib.rs index d43cec39e..b98ccbc94 100644 --- a/crates/core/src/lib.rs +++ b/crates/core/src/lib.rs @@ -24,7 +24,7 @@ use crate::{ }; /// Configuration to prove information to the verifier. -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct ProveConfig { server_identity: bool, transcript: Option, @@ -163,7 +163,7 @@ enum ProveConfigBuilderErrorRepr { } /// Configuration to verify information from the prover. -#[derive(Debug, Default, Clone)] +#[derive(Debug, Default, Clone, Serialize, Deserialize)] pub struct VerifyConfig {} impl VerifyConfig { @@ -210,6 +210,7 @@ pub struct ProvePayload { } /// Prover output. +#[derive(Serialize, Deserialize)] pub struct ProverOutput { /// Transcript commitments. pub transcript_commitments: Vec, @@ -220,6 +221,7 @@ pub struct ProverOutput { opaque_debug::implement!(ProverOutput); /// Verifier output. +#[derive(Serialize, Deserialize)] pub struct VerifierOutput { /// Server identity. pub server_name: Option, diff --git a/crates/core/src/transcript/commit.rs b/crates/core/src/transcript/commit.rs index 9fa8cfca6..f8852e156 100644 --- a/crates/core/src/transcript/commit.rs +++ b/crates/core/src/transcript/commit.rs @@ -66,7 +66,7 @@ pub enum TranscriptSecret { } /// Configuration for transcript commitments. -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct TranscriptCommitConfig { encoding_hash_alg: HashAlgId, has_encoding: bool, diff --git a/crates/tlsn/src/config.rs b/crates/tlsn/src/config.rs index 472c3fa60..7adeebbb2 100644 --- a/crates/tlsn/src/config.rs +++ b/crates/tlsn/src/config.rs @@ -110,7 +110,7 @@ impl ProtocolConfig { /// Protocol configuration validator used by checker (i.e. verifier) to perform /// compatibility check with the peer's (i.e. the prover's) configuration. -#[derive(derive_builder::Builder, Clone, Debug)] +#[derive(derive_builder::Builder, Clone, Debug, Serialize, Deserialize)] pub struct ProtocolConfigValidator { /// Maximum number of bytes that can be sent. max_sent_data: usize, diff --git a/crates/tlsn/src/prover/config.rs b/crates/tlsn/src/prover/config.rs index d4d790c71..94922f374 100644 --- a/crates/tlsn/src/prover/config.rs +++ b/crates/tlsn/src/prover/config.rs @@ -1,4 +1,5 @@ use mpc_tls::Config; +use serde::{Deserialize, Serialize}; use tlsn_core::{ connection::ServerName, webpki::{CertificateDer, PrivateKeyDer, RootCertStore}, @@ -7,7 +8,7 @@ use tlsn_core::{ use crate::config::{NetworkSetting, ProtocolConfig}; /// Configuration for the prover. -#[derive(Debug, Clone, derive_builder::Builder)] +#[derive(Debug, Clone, derive_builder::Builder, Serialize, Deserialize)] pub struct ProverConfig { /// The server DNS name. #[builder(setter(into))] @@ -66,7 +67,7 @@ impl ProverConfig { } /// Configuration for the prover's TLS connection. -#[derive(Default, Debug, Clone)] +#[derive(Default, Debug, Clone, Serialize, Deserialize)] pub struct TlsConfig { /// Root certificates. root_store: Option, diff --git a/crates/tlsn/src/verifier/config.rs b/crates/tlsn/src/verifier/config.rs index 46e6bda26..3c5d532eb 100644 --- a/crates/tlsn/src/verifier/config.rs +++ b/crates/tlsn/src/verifier/config.rs @@ -1,12 +1,14 @@ use std::fmt::{Debug, Formatter, Result}; -use crate::config::{NetworkSetting, ProtocolConfig, ProtocolConfigValidator}; use mpc_tls::Config; +use serde::{Deserialize, Serialize}; use tlsn_core::webpki::RootCertStore; +use crate::config::{NetworkSetting, ProtocolConfig, ProtocolConfigValidator}; + /// Configuration for the [`Verifier`](crate::tls::Verifier). #[allow(missing_docs)] -#[derive(derive_builder::Builder)] +#[derive(derive_builder::Builder, Serialize, Deserialize)] #[builder(pattern = "owned")] pub struct VerifierConfig { protocol_config_validator: ProtocolConfigValidator,