tlsn_core/request/
config.rs1use crate::{
2 attestation::Extension, hash::HashAlgId, signing::SignatureAlgId,
3 transcript::TranscriptCommitConfig,
4};
5
6#[derive(Debug, Clone)]
8pub struct RequestConfig {
9 signature_alg: SignatureAlgId,
10 hash_alg: HashAlgId,
11 extensions: Vec<Extension>,
12 transcript_commit: Option<TranscriptCommitConfig>,
13}
14
15impl Default for RequestConfig {
16 fn default() -> Self {
17 Self::builder().build().unwrap()
18 }
19}
20
21impl RequestConfig {
22 pub fn builder() -> RequestConfigBuilder {
24 RequestConfigBuilder::default()
25 }
26
27 pub fn signature_alg(&self) -> &SignatureAlgId {
29 &self.signature_alg
30 }
31
32 pub fn hash_alg(&self) -> &HashAlgId {
34 &self.hash_alg
35 }
36
37 pub fn extensions(&self) -> &[Extension] {
39 &self.extensions
40 }
41
42 pub fn transcript_commit(&self) -> Option<&TranscriptCommitConfig> {
44 self.transcript_commit.as_ref()
45 }
46}
47
48#[derive(Debug)]
50pub struct RequestConfigBuilder {
51 signature_alg: SignatureAlgId,
52 hash_alg: HashAlgId,
53 extensions: Vec<Extension>,
54 transcript_commit: Option<TranscriptCommitConfig>,
55}
56
57impl Default for RequestConfigBuilder {
58 fn default() -> Self {
59 Self {
60 signature_alg: SignatureAlgId::SECP256K1,
61 hash_alg: HashAlgId::BLAKE3,
62 extensions: Vec::new(),
63 transcript_commit: None,
64 }
65 }
66}
67
68impl RequestConfigBuilder {
69 pub fn signature_alg(&mut self, signature_alg: SignatureAlgId) -> &mut Self {
71 self.signature_alg = signature_alg;
72 self
73 }
74
75 pub fn hash_alg(&mut self, hash_alg: HashAlgId) -> &mut Self {
77 self.hash_alg = hash_alg;
78 self
79 }
80
81 pub fn extension(&mut self, extension: Extension) -> &mut Self {
83 self.extensions.push(extension);
84 self
85 }
86
87 pub fn transcript_commit(&mut self, transcript_commit: TranscriptCommitConfig) -> &mut Self {
89 self.transcript_commit = Some(transcript_commit);
90 self
91 }
92
93 pub fn build(self) -> Result<RequestConfig, RequestConfigBuilderError> {
95 Ok(RequestConfig {
96 signature_alg: self.signature_alg,
97 hash_alg: self.hash_alg,
98 extensions: self.extensions,
99 transcript_commit: self.transcript_commit,
100 })
101 }
102}
103
104#[derive(Debug, thiserror::Error)]
106#[error("request configuration builder error: {message}")]
107pub struct RequestConfigBuilderError {
108 message: String,
109}