tlsn_core/request/
config.rs1use crate::{attestation::Extension, hash::HashAlgId, signing::SignatureAlgId};
2
3#[derive(Debug, Clone)]
5pub struct RequestConfig {
6 signature_alg: SignatureAlgId,
7 hash_alg: HashAlgId,
8 extensions: Vec<Extension>,
9}
10
11impl Default for RequestConfig {
12 fn default() -> Self {
13 Self::builder().build().unwrap()
14 }
15}
16
17impl RequestConfig {
18 pub fn builder() -> RequestConfigBuilder {
20 RequestConfigBuilder::default()
21 }
22
23 pub fn signature_alg(&self) -> &SignatureAlgId {
25 &self.signature_alg
26 }
27
28 pub fn hash_alg(&self) -> &HashAlgId {
30 &self.hash_alg
31 }
32
33 pub fn extensions(&self) -> &[Extension] {
35 &self.extensions
36 }
37}
38
39#[derive(Debug)]
41pub struct RequestConfigBuilder {
42 signature_alg: SignatureAlgId,
43 hash_alg: HashAlgId,
44 extensions: Vec<Extension>,
45}
46
47impl Default for RequestConfigBuilder {
48 fn default() -> Self {
49 Self {
50 signature_alg: SignatureAlgId::SECP256K1,
51 hash_alg: HashAlgId::BLAKE3,
52 extensions: Vec::new(),
53 }
54 }
55}
56
57impl RequestConfigBuilder {
58 pub fn signature_alg(&mut self, signature_alg: SignatureAlgId) -> &mut Self {
60 self.signature_alg = signature_alg;
61 self
62 }
63
64 pub fn hash_alg(&mut self, hash_alg: HashAlgId) -> &mut Self {
66 self.hash_alg = hash_alg;
67 self
68 }
69
70 pub fn extension(&mut self, extension: Extension) -> &mut Self {
72 self.extensions.push(extension);
73 self
74 }
75
76 pub fn build(self) -> Result<RequestConfig, RequestConfigBuilderError> {
78 Ok(RequestConfig {
79 signature_alg: self.signature_alg,
80 hash_alg: self.hash_alg,
81 extensions: self.extensions,
82 })
83 }
84}
85
86#[derive(Debug, thiserror::Error)]
88#[error("request configuration builder error: {message}")]
89pub struct RequestConfigBuilderError {
90 message: String,
91}