use crate::{
commitment::TranscriptCommitments,
proof::{SessionInfo, SubstringsProofBuilder},
ServerName, Transcript,
};
use mpz_core::commit::Decommitment;
use serde::{Deserialize, Serialize};
use tls_core::handshake::HandshakeData;
#[derive(Serialize, Deserialize)]
pub struct SessionData {
session_info: SessionInfo,
transcript_tx: Transcript,
transcript_rx: Transcript,
commitments: TranscriptCommitments,
}
impl SessionData {
pub fn new(
server_name: ServerName,
handshake_data_decommitment: Decommitment<HandshakeData>,
transcript_tx: Transcript,
transcript_rx: Transcript,
commitments: TranscriptCommitments,
) -> Self {
let session_info = SessionInfo {
server_name,
handshake_decommitment: handshake_data_decommitment,
};
Self {
session_info,
transcript_tx,
transcript_rx,
commitments,
}
}
pub fn session_info(&self) -> &SessionInfo {
&self.session_info
}
pub fn sent_transcript(&self) -> &Transcript {
&self.transcript_tx
}
pub fn recv_transcript(&self) -> &Transcript {
&self.transcript_rx
}
pub fn commitments(&self) -> &TranscriptCommitments {
&self.commitments
}
pub fn build_substrings_proof(&self) -> SubstringsProofBuilder {
SubstringsProofBuilder::new(&self.commitments, &self.transcript_tx, &self.transcript_rx)
}
}
opaque_debug::implement!(SessionData);